|
45454
|
1628
|
4
|
2026-05-14T14:37:39.512113+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778769459512_m2.jpg...
|
PhpStorm
|
faVsco.js – WriteCrmTrait.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny... ~ActivityFilesLater@ jiminny-x-integrat Jiminny... ~ActivityFilesLater@ jiminny-x-integrati• plattorm-inner-teamE Channels# ai-chapter# alertsi backend# bugscontusion-cllnia# curiosity lab# engineering# general#jiminny-bgac nlattorm-nckets# product launches# random# releases# sofia-officed sunport# thank-yous# the people of iimi... Direct messages• 8la 62% Galya Dimitrovavasil VasilevM Stefka StovanovaSg: Todor StamatovMario GeorgievNiudlay lanay. James Graham "* Stoyan Tanevo Stelivan Georgiev( Petko Kashinski*. Lukas Kovali...::: AnnsToastS lira Gloud6d Huddle with Aneliva Angelova* Aneliya Angelova &• Messagest Add canvasur FilesAneliya Angelova 2:30 PMЛукаш, само при Сейлсфорс и Хубспот се синкваха активити типовете, когато се направи плейбук,нали?пои останалите скМі тоябва оъчно ла се въвелат.Lukas Kovalik 2:47 PMтряова да се за всички, някъде не се ли попьлвапри зохо май беше hardcoded но май и там си връщаха две категорииAneliya Angelova 4:00 PMЛукаш имаш ли време да се чуем за тестването на https://jiminny.atlassian.net/browse/JY-20725X Preview insackt[HubSpotl Optimise CRM rematct(7 OpenRosdy for OA- MediumAA Aneliya AngelovaAs of today at 4:00 PM RetreshOpen in Jira* SummariseLukas Kovalik 4:02 PMzean-iurwiniareelYou joined the huddle (LIVE 4:06 PMAneliva Angelova is here toolAneliva Angelova 4:44 PN11512582Lukas Kovalik M 5.16 PNcurl --location "httns:ani.hubani.com/crm/v3/obiects/contacts/search--header 'Content-vne' annlication/ison'--header "Authorization: BearerC|Kvma?iMx7OINOM8kOFwrAowAcAkUAhIR24?A05D?xiVrIYMILuP6SA01Kwcmhr=n.v2 hytorDniMvDalYck-CMalovolNOM9kOFwrAUAcrkcaws-ThwRARIRAOF-ATFSAOFRAO-ROIEBAQUBEggBAQEBAYICFIr7Au8O2Nwal9YW2CbCCxYvwngmSgNldTFSAFoAYABoAHAAeAA'\--data "{ "limit", 13'Message Aneliva Angelova+ AaIđ 0Pmv Q SearchDate ModifiedYesterdav at 13.38Yesterday at 13:37Yesterday at 13.30Yesterdav at 13:36resteraay at 15.3oYesterdav at 13:34Yesterday at 13:34Yesterday at 13.33Yesterdav at 13:32resterday at 15.3Yesterdav at 13:31Yesterday at 13:30Yesterday at 13:30Yesterday at 13:29Yesterday at 13:29resterday at 13.2oYesterdav at 13:27Yesterday at 13:27Yesterday at 13:26Yesterday at 13:25Yesterday at 13.24Yesterdav at 13:24Yesterdav at 13:23Yesterday at 13:22Yesterday at 13.20Yecterdav at 12:10Yesterdav at 13:19Yesterday at 13.10Yesterdav at 13:18Yesterday at 13:17Yesterday at 13:16Yacterdav at 12116Yesterdav at 13:15Yesterday at 13.1Yecterdav at 12:14Yesterday at 13:14Yesterday at 13:13Yoctorday at 12:19Yesterdav at 13:12Yesterday at 13.11Yesterdav at 13:10Yesterdav at 13:09v Size88 K:MPEG-4 movie62 KB71 KB23 Kb9 KE13 KB16 KB17 K:MPEG-4 movieMPEG-4 movieMPEG-4 movieMPE0"4 movie29 KB MPEG-4 movie6 KB12KBMP2G-4 movie9 KBI7 KBOKbMPEG-A movieMPEG"4 movie37 KE10 KBMoeeh movio7 KB8 K:MPEG-4 movieO KRI8 KB72 KBMPEG-1 movieMPEG-4 movie14 KEMPEG-4 movie13 KB9 KBMPEG-4 movie18 KB|MPEG-4 movie12 KPMDEG.A movic16 KBMPEG-4 movie6KE6 KBMPEG-4 movieMPEG-4 movie12 KBMPEG-4 movie23 K:MPEG-4 movieMDEC A movid6KBMPEG-4 movie11 KPMDEG-A movie11 KBMPEG-4 movie20 KB34 KB10 KB7 KB5 KBMPEG-4 movieMDEC.A movialMPEG-4 movie11 KPMDEG-A movia26 KB MPEG-4 movie111 KBMPEG-4 movie102 KВMPSG-A movie88 KB MPEG-4 movie59 KB98 KB07 KpMPEG-4 movieMDEG.A movio66 KB44 KBMPEG-4 movie03 KрMDEG-A movid78 KBMPEG-4 movie50 KB58 K8MPEG-4 movieAl Notes: OffLeaveFavourites• jiminny• Recents* ApplicationsiCloud• iCloud Drive992 Svnc toldeLocations0 DXP4800PLUS-B5F49 Networl• CRMI• Orange• Red|• Yellow• Green• Purple•) All lags..IhlDownloadsNameLoom.pkgAlfred copv.alfredoreterences=KeychronAssist-1.0.2 (1).dmeKeychronAssist-1.0.2.dmgmazanoke-images-yWJo.zioPhotos-3-001.zip• Transcript.pd→mage U.loge1 Orioninstaller.dma_image.jpg- image (2).1pc• ПO-22221726037035-004-001_ORGES.pdf%D0%9F%D0%9E-22221726037035-004-001 archive.zipПO-22221726037035-004-001_archive (1).zip• repon 4).XmAltred copy2.altredoreterencesСE 060209С О000000026571172 CWICT 0Р70501260015900 ndt= 27022026_0000000026574472_ SWIFT_ [IBAN].pdf= 03042026 [CREDIT_CARD] SWIFT [CREDIT_CARD].001reportxmmi=pdt.odiB pdf-1.pdfD pdf-2.pdf-pdf-5.pd1= ndf-1 ndipdf-3.pdfP Kdf-a,k Ffmiv Tree.sebitwarden export 20251031122528.isonlKoválik Family Tree.zip*macOS Storage_Cleanup.mdal favicon icofirst aid_notes_complete.docxrenort 2.csviconfig.vmlIteration run Search HS.postman_collection.json--report(1).csvm licence bettertouchtoalMariusHosting Config.isonnokc.901a6502.6667.A62h-062 ccu•AlfredwPmazanoko.imnaoc.YWIfана Ковалик.jpg•искане даниел Ковалик..pg• Фактура Март Даниел Ковалик.jрс• Фактура Април Даниел Ковалик iро• Dhotac 2.001Q SearchKind00,4 MD55.9 MBinstdlle..dckageAlfred...ferences10,1 MB10,1 MBIL MBDisk ImageDisk ImageLiP archive6.6 MBZIp archive2,5 MB PDF Document2,5 MBJreo lmage2.2 MBDisk Image2,2 MB PDF Document2 MBJPEG image1,9 MBJPEG imaqe192 KBPDE Document140 KbZIP archive148 KВ148 KB122 KBZIP archivelZIP archiveXML document111 KBAlfred...ferences94 KBDDE Documont92 KBPDr DocumentK:PDF Document91 KB91 KBXML document30 KBn0kpDDE Nocumont28 KBPDF Document28 KRPDE Document28 KB27 KBDocument14 KB11 KB6 KB6KBJSONINCV NacumontZIP archiveMarkdo…..ument5KRWindo...n image4 KB3 KBword ..cumentCSV Document2 KBVAMI dosumon1 KB029 buteccSV Documenthttlicence183 bytesZero butesJSONAlfrod foronso!Zero bytesFolde1.9 MB1,8 MB17 MB1,7 MBColdorJPEG imageJPEG ImageIPEG imadeJPEG imageColdo1 of 58 selected, 8.46 GB availabld• Inu 14 Mаy 1/•3/•34Date AddedIs Mdl ZUzo dl 19:4530 Jan 2026 at 12:3617 Mar 2026 at 20:2717 Mar 2026 at 20:26Z3 Aor 2020 al 13:0229 ,Jan 2026 at 15:2019 Dec 2025 at 10:1619 Dec 2025 at 12:238 Aor 2026 at 20:3519 Dec 2025 at 10:2919 Dec 2025 at 12:1819 Dec 2025 at 12:4026 Mar 2026 at 11:2410 May 2026 at 13:5326 Mar 2026 at 11:2426 Mar 2026 at 11:2426 Mar 2026 at 11:2310 May 2026 at 14:3730 Jan 2026 at 12:3712 Goh 2006 9t 11:5 A1Z3 Apr 2026 at 13.0823 Aor 2026 at 13:0810 May 2026 at 13:5410 May 2026 at 14:3710 May 2026 at 13:4910 May 2026 at 13:5010 May 2026 at 13:5110 Mav 2026 at 12:51110 May 2026 at 13:5019 Dec 2025 at 11:3431 Oct 2025 at 12:2525 Nau 2025 4+ 17:506 Mar 2026 at 11.2224 Anr 2026 at 16:5220 Oct 2025 at 11:0218 Mar 2026 at 15:29• Mav 2026 at 11:09129 Oct 2025 at 19:329 May 2026 at 10:0419 Mar 2026 at 11:55|10 May 2026 at 13:5712 Jun 2025 at 19:0430 Jan 2026 at 12:362616 Oct 2025 aт 16:0122 Aar 2026 at 12:0223 Apr 2026 at 13:0223 Apr 2026 at 13:0222 Anr 2026 at 12:0223 Apr 2026 at 13:0229 Jan 2026 at 15:20...
|
NULL
|
-4836291221105321116
|
NULL
|
click
|
ocr
|
NULL
|
Jiminny... ~ActivityFilesLater@ jiminny-x-integrat Jiminny... ~ActivityFilesLater@ jiminny-x-integrati• plattorm-inner-teamE Channels# ai-chapter# alertsi backend# bugscontusion-cllnia# curiosity lab# engineering# general#jiminny-bgac nlattorm-nckets# product launches# random# releases# sofia-officed sunport# thank-yous# the people of iimi... Direct messages• 8la 62% Galya Dimitrovavasil VasilevM Stefka StovanovaSg: Todor StamatovMario GeorgievNiudlay lanay. James Graham "* Stoyan Tanevo Stelivan Georgiev( Petko Kashinski*. Lukas Kovali...::: AnnsToastS lira Gloud6d Huddle with Aneliva Angelova* Aneliya Angelova &• Messagest Add canvasur FilesAneliya Angelova 2:30 PMЛукаш, само при Сейлсфорс и Хубспот се синкваха активити типовете, когато се направи плейбук,нали?пои останалите скМі тоябва оъчно ла се въвелат.Lukas Kovalik 2:47 PMтряова да се за всички, някъде не се ли попьлвапри зохо май беше hardcoded но май и там си връщаха две категорииAneliya Angelova 4:00 PMЛукаш имаш ли време да се чуем за тестването на https://jiminny.atlassian.net/browse/JY-20725X Preview insackt[HubSpotl Optimise CRM rematct(7 OpenRosdy for OA- MediumAA Aneliya AngelovaAs of today at 4:00 PM RetreshOpen in Jira* SummariseLukas Kovalik 4:02 PMzean-iurwiniareelYou joined the huddle (LIVE 4:06 PMAneliva Angelova is here toolAneliva Angelova 4:44 PN11512582Lukas Kovalik M 5.16 PNcurl --location "httns:ani.hubani.com/crm/v3/obiects/contacts/search--header 'Content-vne' annlication/ison'--header "Authorization: BearerC|Kvma?iMx7OINOM8kOFwrAowAcAkUAhIR24?A05D?xiVrIYMILuP6SA01Kwcmhr=n.v2 hytorDniMvDalYck-CMalovolNOM9kOFwrAUAcrkcaws-ThwRARIRAOF-ATFSAOFRAO-ROIEBAQUBEggBAQEBAYICFIr7Au8O2Nwal9YW2CbCCxYvwngmSgNldTFSAFoAYABoAHAAeAA'\--data "{ "limit", 13'Message Aneliva Angelova+ AaIđ 0Pmv Q SearchDate ModifiedYesterdav at 13.38Yesterday at 13:37Yesterday at 13.30Yesterdav at 13:36resteraay at 15.3oYesterdav at 13:34Yesterday at 13:34Yesterday at 13.33Yesterdav at 13:32resterday at 15.3Yesterdav at 13:31Yesterday at 13:30Yesterday at 13:30Yesterday at 13:29Yesterday at 13:29resterday at 13.2oYesterdav at 13:27Yesterday at 13:27Yesterday at 13:26Yesterday at 13:25Yesterday at 13.24Yesterdav at 13:24Yesterdav at 13:23Yesterday at 13:22Yesterday at 13.20Yecterdav at 12:10Yesterdav at 13:19Yesterday at 13.10Yesterdav at 13:18Yesterday at 13:17Yesterday at 13:16Yacterdav at 12116Yesterdav at 13:15Yesterday at 13.1Yecterdav at 12:14Yesterday at 13:14Yesterday at 13:13Yoctorday at 12:19Yesterdav at 13:12Yesterday at 13.11Yesterdav at 13:10Yesterdav at 13:09v Size88 K:MPEG-4 movie62 KB71 KB23 Kb9 KE13 KB16 KB17 K:MPEG-4 movieMPEG-4 movieMPEG-4 movieMPE0"4 movie29 KB MPEG-4 movie6 KB12KBMP2G-4 movie9 KBI7 KBOKbMPEG-A movieMPEG"4 movie37 KE10 KBMoeeh movio7 KB8 K:MPEG-4 movieO KRI8 KB72 KBMPEG-1 movieMPEG-4 movie14 KEMPEG-4 movie13 KB9 KBMPEG-4 movie18 KB|MPEG-4 movie12 KPMDEG.A movic16 KBMPEG-4 movie6KE6 KBMPEG-4 movieMPEG-4 movie12 KBMPEG-4 movie23 K:MPEG-4 movieMDEC A movid6KBMPEG-4 movie11 KPMDEG-A movie11 KBMPEG-4 movie20 KB34 KB10 KB7 KB5 KBMPEG-4 movieMDEC.A movialMPEG-4 movie11 KPMDEG-A movia26 KB MPEG-4 movie111 KBMPEG-4 movie102 KВMPSG-A movie88 KB MPEG-4 movie59 KB98 KB07 KpMPEG-4 movieMDEG.A movio66 KB44 KBMPEG-4 movie03 KрMDEG-A movid78 KBMPEG-4 movie50 KB58 K8MPEG-4 movieAl Notes: OffLeaveFavourites• jiminny• Recents* ApplicationsiCloud• iCloud Drive992 Svnc toldeLocations0 DXP4800PLUS-B5F49 Networl• CRMI• Orange• Red|• Yellow• Green• Purple•) All lags..IhlDownloadsNameLoom.pkgAlfred copv.alfredoreterences=KeychronAssist-1.0.2 (1).dmeKeychronAssist-1.0.2.dmgmazanoke-images-yWJo.zioPhotos-3-001.zip• Transcript.pd→mage U.loge1 Orioninstaller.dma_image.jpg- image (2).1pc• ПO-22221726037035-004-001_ORGES.pdf%D0%9F%D0%9E-22221726037035-004-001 archive.zipПO-22221726037035-004-001_archive (1).zip• repon 4).XmAltred copy2.altredoreterencesСE 060209С О000000026571172 CWICT 0Р70501260015900 ndt= 27022026_0000000026574472_ SWIFT_ [IBAN].pdf= 03042026 [CREDIT_CARD] SWIFT [CREDIT_CARD].001reportxmmi=pdt.odiB pdf-1.pdfD pdf-2.pdf-pdf-5.pd1= ndf-1 ndipdf-3.pdfP Kdf-a,k Ffmiv Tree.sebitwarden export 20251031122528.isonlKoválik Family Tree.zip*macOS Storage_Cleanup.mdal favicon icofirst aid_notes_complete.docxrenort 2.csviconfig.vmlIteration run Search HS.postman_collection.json--report(1).csvm licence bettertouchtoalMariusHosting Config.isonnokc.901a6502.6667.A62h-062 ccu•AlfredwPmazanoko.imnaoc.YWIfана Ковалик.jpg•искане даниел Ковалик..pg• Фактура Март Даниел Ковалик.jрс• Фактура Април Даниел Ковалик iро• Dhotac 2.001Q SearchKind00,4 MD55.9 MBinstdlle..dckageAlfred...ferences10,1 MB10,1 MBIL MBDisk ImageDisk ImageLiP archive6.6 MBZIp archive2,5 MB PDF Document2,5 MBJreo lmage2.2 MBDisk Image2,2 MB PDF Document2 MBJPEG image1,9 MBJPEG imaqe192 KBPDE Document140 KbZIP archive148 KВ148 KB122 KBZIP archivelZIP archiveXML document111 KBAlfred...ferences94 KBDDE Documont92 KBPDr DocumentK:PDF Document91 KB91 KBXML document30 KBn0kpDDE Nocumont28 KBPDF Document28 KRPDE Document28 KB27 KBDocument14 KB11 KB6 KB6KBJSONINCV NacumontZIP archiveMarkdo…..ument5KRWindo...n image4 KB3 KBword ..cumentCSV Document2 KBVAMI dosumon1 KB029 buteccSV Documenthttlicence183 bytesZero butesJSONAlfrod foronso!Zero bytesFolde1.9 MB1,8 MB17 MB1,7 MBColdorJPEG imageJPEG ImageIPEG imadeJPEG imageColdo1 of 58 selected, 8.46 GB availabld• Inu 14 Mаy 1/•3/•34Date AddedIs Mdl ZUzo dl 19:4530 Jan 2026 at 12:3617 Mar 2026 at 20:2717 Mar 2026 at 20:26Z3 Aor 2020 al 13:0229 ,Jan 2026 at 15:2019 Dec 2025 at 10:1619 Dec 2025 at 12:238 Aor 2026 at 20:3519 Dec 2025 at 10:2919 Dec 2025 at 12:1819 Dec 2025 at 12:4026 Mar 2026 at 11:2410 May 2026 at 13:5326 Mar 2026 at 11:2426 Mar 2026 at 11:2426 Mar 2026 at 11:2310 May 2026 at 14:3730 Jan 2026 at 12:3712 Goh 2006 9t 11:5 A1Z3 Apr 2026 at 13.0823 Aor 2026 at 13:0810 May 2026 at 13:5410 May 2026 at 14:3710 May 2026 at 13:4910 May 2026 at 13:5010 May 2026 at 13:5110 Mav 2026 at 12:51110 May 2026 at 13:5019 Dec 2025 at 11:3431 Oct 2025 at 12:2525 Nau 2025 4+ 17:506 Mar 2026 at 11.2224 Anr 2026 at 16:5220 Oct 2025 at 11:0218 Mar 2026 at 15:29• Mav 2026 at 11:09129 Oct 2025 at 19:329 May 2026 at 10:0419 Mar 2026 at 11:55|10 May 2026 at 13:5712 Jun 2025 at 19:0430 Jan 2026 at 12:362616 Oct 2025 aт 16:0122 Aar 2026 at 12:0223 Apr 2026 at 13:0223 Apr 2026 at 13:0222 Anr 2026 at 12:0223 Apr 2026 at 13:0229 Jan 2026 at 15:20...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
45455
|
1628
|
5
|
2026-05-14T14:37:59.289683+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778769479289_m2.jpg...
|
PhpStorm
|
faVsco.js – WriteCrmTrait.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12066 on JY-20725-handle Project: faVsco.js, menu
#12066 on JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
HandleHubspotRateLimitTest
Run 'HandleHubspotRateLimitTest'
Debug 'HandleHubspotRateLimitTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
8
6
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\ServiceTraits;
use Carbon\Carbon;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Field;
use Jiminny\Repositories\Crm\FieldDataRepository;
use Jiminny\Services\Crm\Hubspot\DecorateActivity;
use Jiminny\Services\Crm\Hubspot\Utils\AssociationCategoryV4;
use Jiminny\Services\Crm\Hubspot\Utils\AssociationTypeIdV4;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Http\Response;
use SevenShores\Hubspot\Exceptions\HubspotException;
use Sentry;
trait WriteCrmTrait
{
private const string ACTION_CREATE = 'create';
private const string ACTION_UPDATE = 'update';
private const string ACTION_DELETE = 'delete';
/**
* @inheritdoc
*/
public function saveActivity(Activity $activity): Activity
{
switch ($activity->getCrmType()) {
case Activity::TYPE_CONFERENCE:
$activity = $this->buildConferencePayload($activity);
break;
case Activity::TYPE_SOFTPHONE:
case Activity::TYPE_SOFTPHONE_INBOUND:
$activity = $this->buildSoftphonePayload($activity);
break;
case Activity::TYPE_SMS_INBOUND:
case Activity::TYPE_SMS_OUTBOUND:
$activity = $this->buildTextMessagePayload($activity);
break;
}
return $activity;
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function buildConferencePayload(Activity $activity): Activity
{
$decorator = $this->getDecorateActivity();
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $decorator->formatStartTime($activity),
'type' => 'MEETING',
];
if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {
$engagement['activityType'] = $activity->getActivityType()->getName();
}
$metadata = [
'meetingOutcome' => $decorator->convertMeetingOutcome($activity),
'internalMeetingNotes' => $decorator->generateDescription($activity),
];
// Only if they are creating a fresh engagement should we update the times, otherwise it will cause a cal sync.
if (! $activity->hasCrmProviderId()) {
if ($activity->hasActualStartTime() && $activity->hasActualEndTime()) {
$metadata['startTime'] = $decorator->formatStartTime($activity);
$metadata['endTime'] = $decorator->formatEndTime($activity);
}
$metadata['title'] = $decorator->generateTitle($activity);
}
// For now, this is just a "meetingOutcome" field for some customers.
$metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));
return $this->upsertActivity($activity, $engagement, $metadata);
}
private function fetchCustomFieldData(Activity $activity, string $objectType): array
{
$payload = [];
$fieldDataRepository = app(FieldDataRepository::class);
$fieldData = $fieldDataRepository->getActivityFieldData($activity, $objectType);
foreach ($fieldData as $data) {
// Add the field and value to the payload.
$payload += [
$data->getField()->getCrmProviderId() => $data->getValue(),
];
}
return $payload;
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function upsertActivity(Activity $activity, array $engagement, array $metadata): Activity
{
if (! $activity->hasCrmProviderId()) {
$this->createActivity($activity, $engagement, $metadata);
return $activity;
}
try {
$oldEngagement = $this->getClient()->getEngagementData($activity->getCrmProviderId());
} catch (HubspotException $e) {
$this->logger->warning('[HubSpot] Engagement not found', [
'activity_id' => $activity->getUuid(),
'crm_provider_id' => $activity->getCrmProviderId(),
'exception' => $e->getMessage(),
]);
// potentially here we can log new activity if it is not found
return $activity;
}
$type = $oldEngagement['engagement']['type'] ?? null;
$bodyAttribute = $activity->isTypeConference() ? 'internalMeetingNotes' : 'body';
$decorator = $this->getDecorateActivity();
if ($type !== 'TASK') {
$oldDescription = $oldEngagement['metadata'][$bodyAttribute] ?? '';
$metadata[$bodyAttribute] = $decorator->mergeDescriptions(
$metadata[$bodyAttribute],
$oldDescription
);
$oldAssociations = $oldEngagement['associations'] ?? [];
$this->updateNonTaskActivity($activity, $engagement, $metadata, $oldAssociations);
} else {
$oldTaskBody = $oldEngagement['metadata']['body'] ?? '';
$metadata[$bodyAttribute] = $decorator->mergeDescriptions(
$metadata[$bodyAttribute],
$oldTaskBody
);
$this->updateTask($activity, $engagement, $metadata);
}
return $activity;
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function updateNonTaskActivity(
Activity $activity,
array $engagement,
array $metadata,
array $oldAssociations
): void {
if ($activity->isTypeConference()) {
$this->updateMeetingV3($activity->getCrmProviderId(), $engagement, $metadata);
} else {
$this->getClient()->updateEngagement($activity->getCrmProviderId(), $engagement, $metadata);
}
$this->updateActivityAssociations($activity, $oldAssociations);
$this->logCrmEngagementManipulation(
self::ACTION_UPDATE,
['crmId' => $activity->getCrmProviderId()],
$metadata,
);
}
private function updateActivityAssociations(Activity $activity, array $oldAssociations): void
{
$currentAssociations = $this->getActivityAssociations($activity);
$associationChanges = $this->getAssociationDifferences($activity, $oldAssociations, $currentAssociations);
// No changes - exit
if (empty($associationChanges)) {
return;
}
$this->logger->info('[HubSpot] Updating associations', [
'team' => $this->team->getUuid(),
'activity' => $activity->getUuid(),
'associationChanges' => $associationChanges,
]);
$this->updateAssociations($activity, $associationChanges);
}
private function getAssociationDifferences(
Activity $activity,
array $oldAssociations,
array $currentAssociations
): array {
$objects = ['contactIds', 'companyIds', 'dealIds'];
$changes = [];
foreach ($objects as $object) {
$oldIds = $this->normalizeIds($oldAssociations[$object] ?? []);
$currentIds = $this->normalizeIds($currentAssociations[$object] ?? []);
$added = array_diff($currentIds, $oldIds);
$removed = array_diff($oldIds, $currentIds);
$type = match ($object) {
'contactIds' => 'contact',
'companyIds' => 'company',
'dealIds' => 'deal',
};
$shouldIncludeRemoved = $this->shouldIncludeRemovedAssociations($type, $added, $activity);
if (! empty($removed) && ! $shouldIncludeRemoved) {
$this->logger->info('[HubSpot] Skipping association removal', [
'team' => $this->team->getUuid(),
'type' => $type,
'oldIds' => $oldIds,
'currentIds' => $currentIds,
'skippedRemovals' => array_values($removed),
]);
}
if (! empty($added) || (! empty($removed) && $shouldIncludeRemoved)) {
$changes[$type] = [
'added' => array_values($added),
'removed' => array_values($removed),
];
}
}
return $changes;
}
/**
* Determines whether removed associations should be synced to HubSpot.
*
* For contacts and companies, we always sync removals (original behavior).
* For deals, we only sync removals when:
* - There are new deals being added (replacement scenario), OR
* - The activity has an account associated (indicating intentional association management)
*
* This prevents accidentally removing deal associations that exist in HubSpot
* but not in Jiminny's database (e.g., deals manually added by users in HubSpot).
*/
private function shouldIncludeRemovedAssociations(string $type, array $added, Activity $activity): bool
{
// Contacts and companies: always sync removals
if ($type !== 'deal') {
return true;
}
// Deals: sync removals if we're adding new deals (replacement)
if (! empty($added)) {
return true;
}
// Deals: sync removals only if activity has an account (intentional management)
return $activity->hasAccount();
}
private function normalizeIds(array $ids): array
{
$stringIds = array_map('strval', $ids);
$uniqueIds = array_unique($stringIds);
sort($uniqueIds);
return $uniqueIds;
}
private function updateAssociations(Activity $activity, array $associationChanges): void
{
$objectType = $activity->isTypeConference() ? 'meeting' : 'call';
foreach ($associationChanges as $type => $changes) {
if (! empty($changes['added'])) {
$associationType = (new AssociationTypeIdV4())->getAssociationType($objectType, $type);
$payload = $this->payloadBuilder->buildAddAssociationPayload(
$activity->getCrmProviderId(),
$changes['added'],
$associationType
);
$this->getClient()->addAssociations($objectType, $type, $payload);
}
if (! empty($changes['removed'])) {
$payload = $this->payloadBuilder->buildRemoveAssociationPayload(
$activity->getCrmProviderId(),
$changes['removed']
);
$this->getClient()->removeAssociations($objectType, $type, $payload);
}
}
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function updateMeetingV3(string $meetingId, array $engagement, array $metadata): Response
{
// If already set by us/client, do not override it
if (isset($engagement['activityType']) && $this->hasEngagementActivityType($meetingId)) {
$this->logger->info('[HubSpot] Meeting activity type already set', [
'meetingId' => $meetingId,
'activityType' => $engagement['activityType'],
]);
unset($engagement['activityType']);
}
$payload = $this->payloadBuilder->getV3MeetingPayload($engagement, $metadata);
return $this->getClient()->updateMeeting($meetingId, $payload);
}
private function hasEngagementActivityType(string $engagementId): bool
{
try {
$engagementData = $this->getClient()->getEngagementData($engagementId);
if (isset($engagementData['engagement']['activityType']) && trim($engagementData['engagement']['activityType']) != '') {
return true;
}
return false;
} catch (\Exception $exception) {
Sentry::captureException($exception);
$this->logger->info('[HubSpot] Exception checking engagement activity type, defaulting to preserve existing', [
'engagementId' => $engagementId,
'exception' => $exception->getMessage(),
]);
}
return true;
}
private function updateTask(Activity $activity, array $engagement, array $metadata): void
{
$this->getClient()->deleteEngagement($activity->getCrmProviderId());
$this->logCrmEngagementManipulation(
self::ACTION_DELETE,
['crmId' => $activity->getCrmProviderId()],
);
$this->createActivity($activity, $engagement, $metadata);
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function createActivity(Activity $activity, array $engagement, array $metadata): void
{
$associations = $this->getActivityAssociations($activity);
$associationsV4 = $this->convertActivityMeetingAssociationsV4($activity);
if ($activity->isTypeConference()) {
try {
$hsEngagement = $this->createMeetingV3($engagement, $associationsV4, $metadata);
$activityId = $hsEngagement->data->id;
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associationsV4);
$activity->crm_provider_id = $activityId;
$activity->save();
} catch (BadRequest $exception) {
Sentry::captureException($exception);
$this->logger->warning('[HubSpot] Error while creating engagements', [
'activity' => $activity->getUuid(),
'message' => $exception->getMessage(),
'engagement' => $engagement,
'associations' => $associations,
'metadata' => $metadata,
]);
}
} else {
try {
$hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);
$activityId = $hsEngagement->data->engagement->id;
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);
$activity->crm_provider_id = $activityId;
$activity->save();
} catch (BadRequest $exception) {
Sentry::captureException($exception);
$this->logger->warning('[HubSpot] Error while creating engagements', [
'activity' => $activity->getUuid(),
'message' => $exception->getMessage(),
'engagement' => $engagement,
'associations' => $associations,
'metadata' => $metadata,
]);
}
}
}
private function convertActivityMeetingAssociationsV4(Activity $activity): array
{
$associations = [];
$contactIds = $this->getParticipantsIds($activity);
foreach ($contactIds as $contactId) {
$associations[] = $this->buildAssociation(
(int) $contactId,
[AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_CONTACT]
);
}
if ($activity->hasAccount()) {
$crmProviderId = $activity->getAccount()?->getCrmProviderId();
if ($crmProviderId) {
$associations[] = $this->buildAssociation(
(int) $crmProviderId,
[AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_COMPANY]
);
}
}
if ($activity->hasOpportunity()) {
$crmProviderId = $activity->getOpportunity()?->getCrmProviderId();
if ($crmProviderId) {
$associations[] = $this->buildAssociation(
(int) $crmProviderId,
[AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_DEAL]
);
}
}
return $associations;
}
private function buildAssociation(int $id, array $categoryToTypeIds): array
{
$types = [];
foreach ($categoryToTypeIds as $category => $typeId) {
$types[] = $this->buildAssociationType($category, $typeId);
}
return [
'to' => ['id' => (string) $id],
'types' => $types,
];
}
private function buildAssociationType(string $category, int $typeId): array
{
return [
'associationCategory' => $category,
'associationTypeId' => $typeId,
];
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function createMeetingV3(array $engagement, array $associations, array $metadata): Response
{
$payload = $this->payloadBuilder->getV3MeetingPayload(
engagement: $engagement,
metadata: $metadata,
associations: $associations
);
return $this->getClient()->createMeeting($payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
private function buildSoftphonePayload(Activity $activity): Activity
{
$decorator = $this->getDecorateActivity();
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $decorator->formatCreatedAt($activity),
'type' => 'CALL',
];
if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {
$engagement['activityType'] = $activity->getActivityType()->getName();
}
$metadata = [
'toNumber' => $decorator->formatCallToParticipant($activity),
'fromNumber' => $activity->getFromParticipant()?->getPhoneNumber(),
'status' => $decorator->convertCallStatus($activity),
'durationMilliseconds' => (int) $activity->getDuration() * 1000,
'body' => $decorator->generateDescription($activity),
];
// For now, this is just a "disposition" field to store Call Outcome.
$metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));
return $this->upsertActivity($activity, $engagement, $metadata);
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function buildTextMessagePayload(Activity $activity): Activity
{
$decorator = $this->getDecorateActivity();
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $decorator->formatCreatedAt($activity),
'type' => 'NOTE',
];
$metadata = [
'body' => $decorator->generateDescription($activity),
];
return $this->upsertActivity($activity, $engagement, $metadata);
}
private function getActivityAssociations(Activity $activity): array
{
return [
'contactIds' => $this->getParticipantsIds($activity),
'companyIds' => $activity->hasAccount() ? [$activity->getAccount()->getCrmProviderId()] : [],
'dealIds' => $activity->hasOpportunity() ? [$activity->getOpportunity()->getCrmProviderId()] : [],
'ownerIds' => [],
];
}
/**
* Get DecorateActivity instance. Can be overridden in tests for mocking.
*/
protected function getDecorateActivity(): DecorateActivity
{
return new DecorateActivity();
}
public function saveFollowupActivity(Activity $activity, array $fields): ?string
{
if (empty($fields['subject'])) {
return null;
}
$associations = $this->getActivityAssociations($activity);
if (empty($fields['timestamp']) === false) {
$formatTimestamp = Carbon::createFromFormat('Y-m-d\TH:i:s\Z', $fields['timestamp']);
$timestamp = $formatTimestamp->getTimestamp();
} else {
$timestamp = strtotime('+1 day');
}
$reminder = null;
if (empty($fields['reminder']) === false) {
$formatReminder = Carbon::createFromFormat('Y-m-d\TH:i:s\Z', $fields['reminder']);
$reminder = $formatReminder->getTimestamp() * 1000;
}
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $timestamp * 1000,
'type' => 'TASK',
];
$metadata = [
'subject' => $fields['subject'],
'body' => '',
'status' => 'NOT_STARTED',
'taskType' => 'CALL',
'reminders' => $reminder ? [$reminder] : [],
];
try {
$hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);
} catch (BadRequest $e) {
$this->logger->info('[HubSpot] Failed to create followup task', [
'activity' => $activity->getUuid(),
'engagement' => $engagement,
'metadata' => $metadata,
'error' => $e->getMessage(),
]);
return null;
}
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);
// We don't actually create a corresponding activity object on our side yet.
return (string) $hsEngagement->data->engagement->id;
}
private function logCrmEngagementManipulation(
string $action,
array $engagementData,
array $data = [],
array $associations = [],
): void {
$payload = ['team' => $this->team->getUuid()];
if ($action === self::ACTION_CREATE) {
$payload['engagementData'] = $engagementData;
$payload['data'] = $data;
$payload['associations'] = $associations;
}
if ($action === self::ACTION_UPDATE) {
$payload['engagementId'] = $engagementData['crmId'];
$payload['data'] = $data;
}
if ($action === self::ACTION_DELETE) {
$payload['engagementId'] = $engagementData['crmId'];
}
$this->logger->info('[HubSpot] Engagement manipulated (' . $action . ')', $payload);
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
3
4
Previous Highlighted Error
Next Highlighted Error
SELECT
# DISTINCT
opp.id as opp_id, opp.uuid, opp.name,
# COUNT(dr.id) AS deal_risk_count,
# dr.id,
# cfd.value,
usr.name AS owner_name,
opp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,
usr.uuid as owner_uuid,
usr.photo_path as owner_photo,
usr.id AS owner_id,
jt.name as owner_job,
opp.stage_id, opp.stage_updated_at,
acc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,
rt.business_process_id AS pipeline_id
FROM opportunities opp
LEFT JOIN record_types rt ON opp.record_type_id = rt.id
LEFT JOIN users usr ON opp.user_id = usr.id
LEFT JOIN accounts acc ON opp.account_id = acc.id
LEFT JOIN job_titles jt ON usr.job_title_id = jt.id
# LEFT JOIN group_deal_risk_types gdrt ON gdrt.group_id = usr.group_id
# LEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id AND dr.group_deal_risk_type_id = gdrt.id
LEFT JOIN crm_field_data cfd ON (cfd.object_id = opp.id and cfd.crm_field_id = 66814)
WHERE opp.user_id IS NOT NULL
AND opp.deleted_at IS NULL
AND opp.is_closed = 1
AND opp.is_won = 0
AND opp.close_date >= '2024-01-01 00:00:00'
AND opp.close_date <= '2024-12-31 23:59:59'
AND usr.team_id = 1
# and opp.id = 4823179
GROUP BY opp.id, cfd.value
ORDER BY
# cfd.value
CAST(cfd.value AS UNSIGNED)
# owner_name
# (SELECT COUNT(dr.id)
# FROM deal_risks dr
# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id
# WHERE dr.opportunity_id = opp.id
# AND dr.is_active = 1
# AND gdrt.is_enabled = 1)
DESC
LIMIT 25
# OFFSET 0
;
select * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';
select * from crm_layout_entities where crm_layout_id = 1493;
SELECT * FROM opportunities WHERE id = 4584045;
SELECT * FROM crm_field_data WHERE object_id = 4584045;
SELECT * FROM opportunities where team_id = 1 and crm_provider_id = '0061K00000lfb9IQAQ'
SELECT
opp.id as opportunity_id,
opp.name,
COUNT(dr.id) as risk_count
FROM opportunities opp
LEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id
WHERE opp.id IN (
6069574,8900938,9507638,9524799,9660490,9662824,9705675,9749758,4158460,4391812,6450439,4448422,5118945,5590675,4584045,7228149,9002408,9165534,9446720,9641778,9665149,9703344,9709280,5747948,4158491,6182565,6263970,5798120,5111315,4536978,6062352,6548383,6072095,6548225,4480986,5011422,6548381,8760540,8917554,9509986,9514392,9569009,9569011,9578490,9713604,5784397,7276612,7288405,8994421,9118219,9608148,9818911,4510535,6479693,5958049,6271674,6550448,4158331,4158483,6126571,6171615,6540943,4897466,5190896,5796182,5932762,8572433,8723698,8892697,9711001,9789264,4549188,6100831,6170064,6260799,6263653,6449936,6530871,6538978,7777651,8059269,8319918,8787049,8901150,9263153,9453207,9514738,9696700,9791062,5752018,6421452,7439134,7878923,9354763,9369285,9514396,9582506,9889949,9890216,4094311,4158495,4158496,6098128,5585661,3872564,6442149,5891604,6164746,6199593,6583474,6519684,9018490,9809006,4496897,5041324,5829430,6198319,6253504,6555763,7242914,7931055,8024125,8797814,8058559,8673347,8892695,8994420,9616219,9714970,9722004,9809439,9818918,6523177,8134147,9002915,9711422,9892713,9901719,9954210,9978435,5800810,6243518,6416114,6222251,6411974,6512456,5791953,6545606,9914780,5805540,6238986,6463838,6547680,9767049,9809437,9810885,9890855,6673493,9902036,4335521,6379871,6503799,6546077,8018765,9907556,9958433,9905855,9916179,9946741,9957877,5563344,6271838,6450815,7641128,7762567,7780592,8684810,8685786,8685787,8685788
)
GROUP BY opp.id;
SELECT COUNT(dr.id)
FROM deal_risks dr
JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id
WHERE dr.opportunity_id = 5563344
# AND gdrt.group_id = usr.group_id
EXPLAIN SELECT
opp.id as opp_id, opp.uuid, opp.name,
cfd.value,
cfv.sequence,
cfv.value,
# MAX(cfd.value) AS max_cfd_value,
usr.name AS owner_name,
opp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,
usr.uuid as owner_uuid,
usr.photo_path as owner_photo,
usr.id AS owner_id,
jt.name as owner_job,
opp.stage_id, opp.stage_updated_at,
acc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,
rt.business_process_id AS pipeline_id
FROM opportunities opp
LEFT JOIN record_types rt ON opp.record_type_id = rt.id
LEFT JOIN users usr ON opp.user_id = usr.id
LEFT JOIN accounts acc ON opp.account_id = acc.id
LEFT JOIN job_titles jt ON usr.job_title_id = jt.id
LEFT JOIN crm_field_data cfd ON cfd.id = (SELECT sub_cfd.id
FROM crm_field_data sub_cfd
WHERE sub_cfd.object_id = opp.id
AND sub_cfd.crm_field_id = 66810
ORDER BY sub_cfd.updated_at DESC
LIMIT 1)
LEFT JOIN crm_field_values cfv ON cfv.crm_field_id = 66810 AND cfv.value = cfd.value
WHERE opp.user_id IS NOT NULL
AND opp.deleted_at IS NULL
AND opp.is_closed = 0
# AND opp.is_closed = 1
# AND opp.is_won = 0
AND opp.close_date >= '2024-01-01 00:00:00'
AND opp.close_date <= '2024-12-31 23:59:59'
AND usr.team_id = 1
# and opp.id = 4823179
# GROUP BY opp.id
ORDER BY
cfv.sequence DESC,
# opp.name
# owner_name
cfd.value
# CAST(cfd.value AS UNSIGNED)
# CAST(MAX(cfd.value) AS UNSIGNED)
# (SELECT COUNT(dr.id)
# FROM deal_risks dr
# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id
# WHERE dr.opportunity_id = opp.id
# AND dr.is_active = 1 AND gdrt.is_enabled = 1)
DESC
# LIMIT 75, 25
;
SELECT * FROM crm_field_values WHERE crm_field_id = 66810;
SELECT f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value, fd.updated_at, fd.id, fd.created_at
FROM crm_fields f
INNER JOIN crm_field_data fd ON fd.crm_field_id = f.id
WHERE (f.crm_configuration_id = 1)
AND (f.object_type = 'opportunity')
# AND (fd.object_id IN (4158331,4158483,4158495,4158496,6069574,6263970,6171615,6540943,6545606,5829430,6198319,6263653,6548381,7242914,8797814,7228149,7439134,7878923,8134147,9002915,9118219,9165534,9354763,9369285,9446720))
AND (fd.object_id IN (4158460))
AND (f.crm_provider_id IN ('ForecastCategoryName'))
ORDER BY fd.object_id ASC, fd.updated_at DESC;
select * from crm_layouts where crm_configuration_id = 1;
select cf.* from crm_fields cf
join crm_layout_entities cle on cf.id = cle.crm_field_id
where crm_layout_id = 1493;
SELECT * FROM opportunities WHERE id = 4158460;
SELECT * FROM crm_field_data WHERE object_id = 4158460;
select * from users where team_id = 1;
SELECT * FROM users WHERE id = 7160;
select * from role_user where user_id = 3248;
select * from crm_field_values where crm_field_id = 66824;
SELECT * FROM users WHERE id = 23470;
select * from crm_configurations;
# [PASSWORD_DOTS]
select * from teams where id = 1038; # 23521, 966
select * from users where team_id = 1038;
select * from crm_configurations where id = 966;
SELECT * FROM activities WHERE uuid_to_bin('e8dc7c34-31f6-4430-bd81-2d9d8f00dd07') = uuid; # 54965762
SELECT * FROM activities WHERE uuid_to_bin('4b5727c0-69d1-428f-b8d9-b649055166e2') = uuid; # 54965764
SELECT * FROM participants WHERE activity_id = 54965764;
SELECT id, uuid, title, recording_state FROM activities WHERE uuid_to_bin('355f105d-5606-4379-b0c5-d91daf59f4ce') = uuid; # 54964075
SELECT * FROM participants WHERE activity_id = 54964075;
select f.id, slug, title, tf.team_id from team_features tf JOIN features f on tf.feature_id = f.id
where tf.team_id = 1038;
# [PASSWORD_DOTS] PD [PASSWORD_DOTS]
select * from teams where id = 1029;
SELECT * FROM crm_configurations WHERE id = 957;
SELECT * FROM activities WHERE uuid_to_bin('581a33cb-4343-44bd-ac0c-4a5cee71c5ec') = uuid; # 54963423
SELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433
SELECT * FROM activities WHERE uuid_to_bin('8b6bb2f7-e7a7-4aec-8806-fbfea7093ccd') = uuid; # 54963421
# [PASSWORD_DOTS] Close [PASSWORD_DOTS]
select * from teams where id = 1031;
SELECT * FROM crm_configurations WHERE id = 959;
SELECT * FROM activities WHERE uuid_to_bin('59c517e0-96c9-4dad-bfeb-b7bef72f8725') = uuid; # 54963517
SELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433
SELECT * FROM activities WHERE uuid_to_bin('d68311e3-ac34-49bd-bf04-88323a7e5352') = uuid; # 54966009
# [PASSWORD_DOTS] SF [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('2bd4cfa3-4eb5-4c77-84a7-9ed46a21c988') = uuid;
select * from roles;
select * from permissions;
select * from permission_role where permission_id = 136;
select * from migrations order by id desc;
select * from teams where id IN (1, 1037);
select * from crm_layouts where crm_configuration_id = 1;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1493;
SELECT * FROM crm_fields WHERE id IN (1652,1661,66799,66814,66821,66836,66843,66846,66864,84752,182306,323580,380378);
select * from features;
select * from team_features where feature_id = 33;
select * from opportunities;
select * from teams;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1052 and sa.provider = 'hubspot';
SELECT * FROM accounts where id = 11512582;
select * from activities where account_id = 11512582;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.2962101,"top":1.0,"width":0.03856383,"height":-0.019952059},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12066 on JY-20725-handle-HS-search-rate-limit, menu","depth":5,"bounds":{"left":0.33477393,"top":1.0,"width":0.122340426,"height":-0.019952059},"on_screen":true,"help_text":"Pull request #12066 exists for current branch JY-20725-handle-HS-search-rate-limit, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.5731383,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"HandleHubspotRateLimitTest","depth":6,"bounds":{"left":0.5884308,"top":1.0,"width":0.076130316,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'HandleHubspotRateLimitTest'","depth":6,"bounds":{"left":0.66456115,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'HandleHubspotRateLimitTest'","depth":6,"bounds":{"left":0.67586434,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.6871675,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.7150931,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.72639626,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.73769945,"top":1.0,"width":0.011303191,"height":-0.019952059},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\ServiceTraits;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Repositories\\Crm\\FieldDataRepository;\nuse Jiminny\\Services\\Crm\\Hubspot\\DecorateActivity;\nuse Jiminny\\Services\\Crm\\Hubspot\\Utils\\AssociationCategoryV4;\nuse Jiminny\\Services\\Crm\\Hubspot\\Utils\\AssociationTypeIdV4;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Sentry;\n\ntrait WriteCrmTrait\n{\n private const string ACTION_CREATE = 'create';\n private const string ACTION_UPDATE = 'update';\n private const string ACTION_DELETE = 'delete';\n\n /**\n * @inheritdoc\n */\n public function saveActivity(Activity $activity): Activity\n {\n switch ($activity->getCrmType()) {\n case Activity::TYPE_CONFERENCE:\n $activity = $this->buildConferencePayload($activity);\n\n break;\n case Activity::TYPE_SOFTPHONE:\n case Activity::TYPE_SOFTPHONE_INBOUND:\n $activity = $this->buildSoftphonePayload($activity);\n\n break;\n\n case Activity::TYPE_SMS_INBOUND:\n case Activity::TYPE_SMS_OUTBOUND:\n $activity = $this->buildTextMessagePayload($activity);\n\n break;\n }\n\n return $activity;\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function buildConferencePayload(Activity $activity): Activity\n {\n $decorator = $this->getDecorateActivity();\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $decorator->formatStartTime($activity),\n 'type' => 'MEETING',\n ];\n\n if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {\n $engagement['activityType'] = $activity->getActivityType()->getName();\n }\n\n $metadata = [\n 'meetingOutcome' => $decorator->convertMeetingOutcome($activity),\n 'internalMeetingNotes' => $decorator->generateDescription($activity),\n ];\n\n // Only if they are creating a fresh engagement should we update the times, otherwise it will cause a cal sync.\n if (! $activity->hasCrmProviderId()) {\n if ($activity->hasActualStartTime() && $activity->hasActualEndTime()) {\n $metadata['startTime'] = $decorator->formatStartTime($activity);\n $metadata['endTime'] = $decorator->formatEndTime($activity);\n }\n $metadata['title'] = $decorator->generateTitle($activity);\n }\n\n // For now, this is just a \"meetingOutcome\" field for some customers.\n $metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));\n\n return $this->upsertActivity($activity, $engagement, $metadata);\n }\n\n private function fetchCustomFieldData(Activity $activity, string $objectType): array\n {\n $payload = [];\n\n $fieldDataRepository = app(FieldDataRepository::class);\n $fieldData = $fieldDataRepository->getActivityFieldData($activity, $objectType);\n\n foreach ($fieldData as $data) {\n // Add the field and value to the payload.\n $payload += [\n $data->getField()->getCrmProviderId() => $data->getValue(),\n ];\n }\n\n return $payload;\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function upsertActivity(Activity $activity, array $engagement, array $metadata): Activity\n {\n if (! $activity->hasCrmProviderId()) {\n $this->createActivity($activity, $engagement, $metadata);\n\n return $activity;\n }\n\n try {\n $oldEngagement = $this->getClient()->getEngagementData($activity->getCrmProviderId());\n } catch (HubspotException $e) {\n $this->logger->warning('[HubSpot] Engagement not found', [\n 'activity_id' => $activity->getUuid(),\n 'crm_provider_id' => $activity->getCrmProviderId(),\n 'exception' => $e->getMessage(),\n ]);\n\n // potentially here we can log new activity if it is not found\n\n return $activity;\n }\n\n $type = $oldEngagement['engagement']['type'] ?? null;\n $bodyAttribute = $activity->isTypeConference() ? 'internalMeetingNotes' : 'body';\n\n $decorator = $this->getDecorateActivity();\n\n if ($type !== 'TASK') {\n $oldDescription = $oldEngagement['metadata'][$bodyAttribute] ?? '';\n $metadata[$bodyAttribute] = $decorator->mergeDescriptions(\n $metadata[$bodyAttribute],\n $oldDescription\n );\n\n $oldAssociations = $oldEngagement['associations'] ?? [];\n $this->updateNonTaskActivity($activity, $engagement, $metadata, $oldAssociations);\n } else {\n $oldTaskBody = $oldEngagement['metadata']['body'] ?? '';\n $metadata[$bodyAttribute] = $decorator->mergeDescriptions(\n $metadata[$bodyAttribute],\n $oldTaskBody\n );\n $this->updateTask($activity, $engagement, $metadata);\n }\n\n return $activity;\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function updateNonTaskActivity(\n Activity $activity,\n array $engagement,\n array $metadata,\n array $oldAssociations\n ): void {\n if ($activity->isTypeConference()) {\n $this->updateMeetingV3($activity->getCrmProviderId(), $engagement, $metadata);\n } else {\n $this->getClient()->updateEngagement($activity->getCrmProviderId(), $engagement, $metadata);\n }\n\n $this->updateActivityAssociations($activity, $oldAssociations);\n\n $this->logCrmEngagementManipulation(\n self::ACTION_UPDATE,\n ['crmId' => $activity->getCrmProviderId()],\n $metadata,\n );\n }\n\n private function updateActivityAssociations(Activity $activity, array $oldAssociations): void\n {\n $currentAssociations = $this->getActivityAssociations($activity);\n $associationChanges = $this->getAssociationDifferences($activity, $oldAssociations, $currentAssociations);\n\n // No changes - exit\n if (empty($associationChanges)) {\n return;\n }\n\n $this->logger->info('[HubSpot] Updating associations', [\n 'team' => $this->team->getUuid(),\n 'activity' => $activity->getUuid(),\n 'associationChanges' => $associationChanges,\n ]);\n\n $this->updateAssociations($activity, $associationChanges);\n }\n\n private function getAssociationDifferences(\n Activity $activity,\n array $oldAssociations,\n array $currentAssociations\n ): array {\n $objects = ['contactIds', 'companyIds', 'dealIds'];\n $changes = [];\n\n foreach ($objects as $object) {\n $oldIds = $this->normalizeIds($oldAssociations[$object] ?? []);\n $currentIds = $this->normalizeIds($currentAssociations[$object] ?? []);\n\n $added = array_diff($currentIds, $oldIds);\n $removed = array_diff($oldIds, $currentIds);\n\n $type = match ($object) {\n 'contactIds' => 'contact',\n 'companyIds' => 'company',\n 'dealIds' => 'deal',\n };\n\n $shouldIncludeRemoved = $this->shouldIncludeRemovedAssociations($type, $added, $activity);\n\n if (! empty($removed) && ! $shouldIncludeRemoved) {\n $this->logger->info('[HubSpot] Skipping association removal', [\n 'team' => $this->team->getUuid(),\n 'type' => $type,\n 'oldIds' => $oldIds,\n 'currentIds' => $currentIds,\n 'skippedRemovals' => array_values($removed),\n ]);\n }\n\n if (! empty($added) || (! empty($removed) && $shouldIncludeRemoved)) {\n $changes[$type] = [\n 'added' => array_values($added),\n 'removed' => array_values($removed),\n ];\n }\n }\n\n return $changes;\n }\n\n /**\n * Determines whether removed associations should be synced to HubSpot.\n *\n * For contacts and companies, we always sync removals (original behavior).\n * For deals, we only sync removals when:\n * - There are new deals being added (replacement scenario), OR\n * - The activity has an account associated (indicating intentional association management)\n *\n * This prevents accidentally removing deal associations that exist in HubSpot\n * but not in Jiminny's database (e.g., deals manually added by users in HubSpot).\n */\n private function shouldIncludeRemovedAssociations(string $type, array $added, Activity $activity): bool\n {\n // Contacts and companies: always sync removals\n if ($type !== 'deal') {\n return true;\n }\n\n // Deals: sync removals if we're adding new deals (replacement)\n if (! empty($added)) {\n return true;\n }\n\n // Deals: sync removals only if activity has an account (intentional management)\n return $activity->hasAccount();\n }\n\n private function normalizeIds(array $ids): array\n {\n $stringIds = array_map('strval', $ids);\n $uniqueIds = array_unique($stringIds);\n sort($uniqueIds);\n\n return $uniqueIds;\n }\n\n private function updateAssociations(Activity $activity, array $associationChanges): void\n {\n $objectType = $activity->isTypeConference() ? 'meeting' : 'call';\n\n foreach ($associationChanges as $type => $changes) {\n if (! empty($changes['added'])) {\n $associationType = (new AssociationTypeIdV4())->getAssociationType($objectType, $type);\n $payload = $this->payloadBuilder->buildAddAssociationPayload(\n $activity->getCrmProviderId(),\n $changes['added'],\n $associationType\n );\n $this->getClient()->addAssociations($objectType, $type, $payload);\n }\n\n if (! empty($changes['removed'])) {\n $payload = $this->payloadBuilder->buildRemoveAssociationPayload(\n $activity->getCrmProviderId(),\n $changes['removed']\n );\n $this->getClient()->removeAssociations($objectType, $type, $payload);\n }\n }\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function updateMeetingV3(string $meetingId, array $engagement, array $metadata): Response\n {\n // If already set by us/client, do not override it\n if (isset($engagement['activityType']) && $this->hasEngagementActivityType($meetingId)) {\n $this->logger->info('[HubSpot] Meeting activity type already set', [\n 'meetingId' => $meetingId,\n 'activityType' => $engagement['activityType'],\n ]);\n\n unset($engagement['activityType']);\n }\n\n $payload = $this->payloadBuilder->getV3MeetingPayload($engagement, $metadata);\n\n return $this->getClient()->updateMeeting($meetingId, $payload);\n }\n\n private function hasEngagementActivityType(string $engagementId): bool\n {\n try {\n $engagementData = $this->getClient()->getEngagementData($engagementId);\n if (isset($engagementData['engagement']['activityType']) && trim($engagementData['engagement']['activityType']) != '') {\n return true;\n }\n\n return false;\n } catch (\\Exception $exception) {\n Sentry::captureException($exception);\n\n $this->logger->info('[HubSpot] Exception checking engagement activity type, defaulting to preserve existing', [\n 'engagementId' => $engagementId,\n 'exception' => $exception->getMessage(),\n ]);\n }\n\n return true;\n }\n\n private function updateTask(Activity $activity, array $engagement, array $metadata): void\n {\n $this->getClient()->deleteEngagement($activity->getCrmProviderId());\n\n $this->logCrmEngagementManipulation(\n self::ACTION_DELETE,\n ['crmId' => $activity->getCrmProviderId()],\n );\n\n $this->createActivity($activity, $engagement, $metadata);\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function createActivity(Activity $activity, array $engagement, array $metadata): void\n {\n $associations = $this->getActivityAssociations($activity);\n $associationsV4 = $this->convertActivityMeetingAssociationsV4($activity);\n\n if ($activity->isTypeConference()) {\n try {\n $hsEngagement = $this->createMeetingV3($engagement, $associationsV4, $metadata);\n $activityId = $hsEngagement->data->id;\n\n $this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associationsV4);\n\n $activity->crm_provider_id = $activityId;\n $activity->save();\n } catch (BadRequest $exception) {\n Sentry::captureException($exception);\n\n $this->logger->warning('[HubSpot] Error while creating engagements', [\n 'activity' => $activity->getUuid(),\n 'message' => $exception->getMessage(),\n 'engagement' => $engagement,\n 'associations' => $associations,\n 'metadata' => $metadata,\n ]);\n }\n } else {\n try {\n $hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);\n $activityId = $hsEngagement->data->engagement->id;\n\n $this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);\n\n $activity->crm_provider_id = $activityId;\n $activity->save();\n } catch (BadRequest $exception) {\n Sentry::captureException($exception);\n\n $this->logger->warning('[HubSpot] Error while creating engagements', [\n 'activity' => $activity->getUuid(),\n 'message' => $exception->getMessage(),\n 'engagement' => $engagement,\n 'associations' => $associations,\n 'metadata' => $metadata,\n ]);\n }\n }\n }\n\n private function convertActivityMeetingAssociationsV4(Activity $activity): array\n {\n $associations = [];\n\n $contactIds = $this->getParticipantsIds($activity);\n\n foreach ($contactIds as $contactId) {\n $associations[] = $this->buildAssociation(\n (int) $contactId,\n [AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_CONTACT]\n );\n }\n\n if ($activity->hasAccount()) {\n $crmProviderId = $activity->getAccount()?->getCrmProviderId();\n if ($crmProviderId) {\n $associations[] = $this->buildAssociation(\n (int) $crmProviderId,\n [AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_COMPANY]\n );\n }\n }\n\n if ($activity->hasOpportunity()) {\n $crmProviderId = $activity->getOpportunity()?->getCrmProviderId();\n if ($crmProviderId) {\n $associations[] = $this->buildAssociation(\n (int) $crmProviderId,\n [AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_DEAL]\n );\n }\n }\n\n return $associations;\n }\n\n private function buildAssociation(int $id, array $categoryToTypeIds): array\n {\n $types = [];\n\n foreach ($categoryToTypeIds as $category => $typeId) {\n $types[] = $this->buildAssociationType($category, $typeId);\n }\n\n return [\n 'to' => ['id' => (string) $id],\n 'types' => $types,\n ];\n }\n\n private function buildAssociationType(string $category, int $typeId): array\n {\n return [\n 'associationCategory' => $category,\n 'associationTypeId' => $typeId,\n ];\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function createMeetingV3(array $engagement, array $associations, array $metadata): Response\n {\n $payload = $this->payloadBuilder->getV3MeetingPayload(\n engagement: $engagement,\n metadata: $metadata,\n associations: $associations\n );\n\n return $this->getClient()->createMeeting($payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n private function buildSoftphonePayload(Activity $activity): Activity\n {\n $decorator = $this->getDecorateActivity();\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $decorator->formatCreatedAt($activity),\n 'type' => 'CALL',\n ];\n\n if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {\n $engagement['activityType'] = $activity->getActivityType()->getName();\n }\n\n $metadata = [\n 'toNumber' => $decorator->formatCallToParticipant($activity),\n 'fromNumber' => $activity->getFromParticipant()?->getPhoneNumber(),\n 'status' => $decorator->convertCallStatus($activity),\n 'durationMilliseconds' => (int) $activity->getDuration() * 1000,\n 'body' => $decorator->generateDescription($activity),\n ];\n\n // For now, this is just a \"disposition\" field to store Call Outcome.\n $metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));\n\n return $this->upsertActivity($activity, $engagement, $metadata);\n }\n\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function buildTextMessagePayload(Activity $activity): Activity\n {\n $decorator = $this->getDecorateActivity();\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $decorator->formatCreatedAt($activity),\n 'type' => 'NOTE',\n ];\n\n $metadata = [\n 'body' => $decorator->generateDescription($activity),\n ];\n\n return $this->upsertActivity($activity, $engagement, $metadata);\n }\n\n private function getActivityAssociations(Activity $activity): array\n {\n return [\n 'contactIds' => $this->getParticipantsIds($activity),\n 'companyIds' => $activity->hasAccount() ? [$activity->getAccount()->getCrmProviderId()] : [],\n 'dealIds' => $activity->hasOpportunity() ? [$activity->getOpportunity()->getCrmProviderId()] : [],\n 'ownerIds' => [],\n ];\n }\n\n /**\n * Get DecorateActivity instance. Can be overridden in tests for mocking.\n */\n protected function getDecorateActivity(): DecorateActivity\n {\n return new DecorateActivity();\n }\n\n public function saveFollowupActivity(Activity $activity, array $fields): ?string\n {\n if (empty($fields['subject'])) {\n return null;\n }\n\n $associations = $this->getActivityAssociations($activity);\n\n if (empty($fields['timestamp']) === false) {\n $formatTimestamp = Carbon::createFromFormat('Y-m-d\\TH:i:s\\Z', $fields['timestamp']);\n $timestamp = $formatTimestamp->getTimestamp();\n } else {\n $timestamp = strtotime('+1 day');\n }\n\n $reminder = null;\n if (empty($fields['reminder']) === false) {\n $formatReminder = Carbon::createFromFormat('Y-m-d\\TH:i:s\\Z', $fields['reminder']);\n $reminder = $formatReminder->getTimestamp() * 1000;\n }\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $timestamp * 1000,\n 'type' => 'TASK',\n ];\n\n $metadata = [\n 'subject' => $fields['subject'],\n 'body' => '',\n 'status' => 'NOT_STARTED',\n 'taskType' => 'CALL',\n 'reminders' => $reminder ? [$reminder] : [],\n ];\n\n try {\n $hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);\n } catch (BadRequest $e) {\n $this->logger->info('[HubSpot] Failed to create followup task', [\n 'activity' => $activity->getUuid(),\n 'engagement' => $engagement,\n 'metadata' => $metadata,\n 'error' => $e->getMessage(),\n ]);\n\n return null;\n }\n\n $this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);\n\n // We don't actually create a corresponding activity object on our side yet.\n return (string) $hsEngagement->data->engagement->id;\n }\n\n private function logCrmEngagementManipulation(\n string $action,\n array $engagementData,\n array $data = [],\n array $associations = [],\n ): void {\n $payload = ['team' => $this->team->getUuid()];\n\n if ($action === self::ACTION_CREATE) {\n $payload['engagementData'] = $engagementData;\n $payload['data'] = $data;\n $payload['associations'] = $associations;\n }\n\n if ($action === self::ACTION_UPDATE) {\n $payload['engagementId'] = $engagementData['crmId'];\n $payload['data'] = $data;\n }\n\n if ($action === self::ACTION_DELETE) {\n $payload['engagementId'] = $engagementData['crmId'];\n }\n\n $this->logger->info('[HubSpot] Engagement manipulated (' . $action . ')', $payload);\n }\n}","depth":4,"bounds":{"left":0.39261967,"top":0.17956904,"width":0.31615692,"height":0.820431},"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot\\ServiceTraits;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Repositories\\Crm\\FieldDataRepository;\nuse Jiminny\\Services\\Crm\\Hubspot\\DecorateActivity;\nuse Jiminny\\Services\\Crm\\Hubspot\\Utils\\AssociationCategoryV4;\nuse Jiminny\\Services\\Crm\\Hubspot\\Utils\\AssociationTypeIdV4;\nuse SevenShores\\Hubspot\\Exceptions\\BadRequest;\nuse SevenShores\\Hubspot\\Http\\Response;\nuse SevenShores\\Hubspot\\Exceptions\\HubspotException;\nuse Sentry;\n\ntrait WriteCrmTrait\n{\n private const string ACTION_CREATE = 'create';\n private const string ACTION_UPDATE = 'update';\n private const string ACTION_DELETE = 'delete';\n\n /**\n * @inheritdoc\n */\n public function saveActivity(Activity $activity): Activity\n {\n switch ($activity->getCrmType()) {\n case Activity::TYPE_CONFERENCE:\n $activity = $this->buildConferencePayload($activity);\n\n break;\n case Activity::TYPE_SOFTPHONE:\n case Activity::TYPE_SOFTPHONE_INBOUND:\n $activity = $this->buildSoftphonePayload($activity);\n\n break;\n\n case Activity::TYPE_SMS_INBOUND:\n case Activity::TYPE_SMS_OUTBOUND:\n $activity = $this->buildTextMessagePayload($activity);\n\n break;\n }\n\n return $activity;\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function buildConferencePayload(Activity $activity): Activity\n {\n $decorator = $this->getDecorateActivity();\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $decorator->formatStartTime($activity),\n 'type' => 'MEETING',\n ];\n\n if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {\n $engagement['activityType'] = $activity->getActivityType()->getName();\n }\n\n $metadata = [\n 'meetingOutcome' => $decorator->convertMeetingOutcome($activity),\n 'internalMeetingNotes' => $decorator->generateDescription($activity),\n ];\n\n // Only if they are creating a fresh engagement should we update the times, otherwise it will cause a cal sync.\n if (! $activity->hasCrmProviderId()) {\n if ($activity->hasActualStartTime() && $activity->hasActualEndTime()) {\n $metadata['startTime'] = $decorator->formatStartTime($activity);\n $metadata['endTime'] = $decorator->formatEndTime($activity);\n }\n $metadata['title'] = $decorator->generateTitle($activity);\n }\n\n // For now, this is just a \"meetingOutcome\" field for some customers.\n $metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));\n\n return $this->upsertActivity($activity, $engagement, $metadata);\n }\n\n private function fetchCustomFieldData(Activity $activity, string $objectType): array\n {\n $payload = [];\n\n $fieldDataRepository = app(FieldDataRepository::class);\n $fieldData = $fieldDataRepository->getActivityFieldData($activity, $objectType);\n\n foreach ($fieldData as $data) {\n // Add the field and value to the payload.\n $payload += [\n $data->getField()->getCrmProviderId() => $data->getValue(),\n ];\n }\n\n return $payload;\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function upsertActivity(Activity $activity, array $engagement, array $metadata): Activity\n {\n if (! $activity->hasCrmProviderId()) {\n $this->createActivity($activity, $engagement, $metadata);\n\n return $activity;\n }\n\n try {\n $oldEngagement = $this->getClient()->getEngagementData($activity->getCrmProviderId());\n } catch (HubspotException $e) {\n $this->logger->warning('[HubSpot] Engagement not found', [\n 'activity_id' => $activity->getUuid(),\n 'crm_provider_id' => $activity->getCrmProviderId(),\n 'exception' => $e->getMessage(),\n ]);\n\n // potentially here we can log new activity if it is not found\n\n return $activity;\n }\n\n $type = $oldEngagement['engagement']['type'] ?? null;\n $bodyAttribute = $activity->isTypeConference() ? 'internalMeetingNotes' : 'body';\n\n $decorator = $this->getDecorateActivity();\n\n if ($type !== 'TASK') {\n $oldDescription = $oldEngagement['metadata'][$bodyAttribute] ?? '';\n $metadata[$bodyAttribute] = $decorator->mergeDescriptions(\n $metadata[$bodyAttribute],\n $oldDescription\n );\n\n $oldAssociations = $oldEngagement['associations'] ?? [];\n $this->updateNonTaskActivity($activity, $engagement, $metadata, $oldAssociations);\n } else {\n $oldTaskBody = $oldEngagement['metadata']['body'] ?? '';\n $metadata[$bodyAttribute] = $decorator->mergeDescriptions(\n $metadata[$bodyAttribute],\n $oldTaskBody\n );\n $this->updateTask($activity, $engagement, $metadata);\n }\n\n return $activity;\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function updateNonTaskActivity(\n Activity $activity,\n array $engagement,\n array $metadata,\n array $oldAssociations\n ): void {\n if ($activity->isTypeConference()) {\n $this->updateMeetingV3($activity->getCrmProviderId(), $engagement, $metadata);\n } else {\n $this->getClient()->updateEngagement($activity->getCrmProviderId(), $engagement, $metadata);\n }\n\n $this->updateActivityAssociations($activity, $oldAssociations);\n\n $this->logCrmEngagementManipulation(\n self::ACTION_UPDATE,\n ['crmId' => $activity->getCrmProviderId()],\n $metadata,\n );\n }\n\n private function updateActivityAssociations(Activity $activity, array $oldAssociations): void\n {\n $currentAssociations = $this->getActivityAssociations($activity);\n $associationChanges = $this->getAssociationDifferences($activity, $oldAssociations, $currentAssociations);\n\n // No changes - exit\n if (empty($associationChanges)) {\n return;\n }\n\n $this->logger->info('[HubSpot] Updating associations', [\n 'team' => $this->team->getUuid(),\n 'activity' => $activity->getUuid(),\n 'associationChanges' => $associationChanges,\n ]);\n\n $this->updateAssociations($activity, $associationChanges);\n }\n\n private function getAssociationDifferences(\n Activity $activity,\n array $oldAssociations,\n array $currentAssociations\n ): array {\n $objects = ['contactIds', 'companyIds', 'dealIds'];\n $changes = [];\n\n foreach ($objects as $object) {\n $oldIds = $this->normalizeIds($oldAssociations[$object] ?? []);\n $currentIds = $this->normalizeIds($currentAssociations[$object] ?? []);\n\n $added = array_diff($currentIds, $oldIds);\n $removed = array_diff($oldIds, $currentIds);\n\n $type = match ($object) {\n 'contactIds' => 'contact',\n 'companyIds' => 'company',\n 'dealIds' => 'deal',\n };\n\n $shouldIncludeRemoved = $this->shouldIncludeRemovedAssociations($type, $added, $activity);\n\n if (! empty($removed) && ! $shouldIncludeRemoved) {\n $this->logger->info('[HubSpot] Skipping association removal', [\n 'team' => $this->team->getUuid(),\n 'type' => $type,\n 'oldIds' => $oldIds,\n 'currentIds' => $currentIds,\n 'skippedRemovals' => array_values($removed),\n ]);\n }\n\n if (! empty($added) || (! empty($removed) && $shouldIncludeRemoved)) {\n $changes[$type] = [\n 'added' => array_values($added),\n 'removed' => array_values($removed),\n ];\n }\n }\n\n return $changes;\n }\n\n /**\n * Determines whether removed associations should be synced to HubSpot.\n *\n * For contacts and companies, we always sync removals (original behavior).\n * For deals, we only sync removals when:\n * - There are new deals being added (replacement scenario), OR\n * - The activity has an account associated (indicating intentional association management)\n *\n * This prevents accidentally removing deal associations that exist in HubSpot\n * but not in Jiminny's database (e.g., deals manually added by users in HubSpot).\n */\n private function shouldIncludeRemovedAssociations(string $type, array $added, Activity $activity): bool\n {\n // Contacts and companies: always sync removals\n if ($type !== 'deal') {\n return true;\n }\n\n // Deals: sync removals if we're adding new deals (replacement)\n if (! empty($added)) {\n return true;\n }\n\n // Deals: sync removals only if activity has an account (intentional management)\n return $activity->hasAccount();\n }\n\n private function normalizeIds(array $ids): array\n {\n $stringIds = array_map('strval', $ids);\n $uniqueIds = array_unique($stringIds);\n sort($uniqueIds);\n\n return $uniqueIds;\n }\n\n private function updateAssociations(Activity $activity, array $associationChanges): void\n {\n $objectType = $activity->isTypeConference() ? 'meeting' : 'call';\n\n foreach ($associationChanges as $type => $changes) {\n if (! empty($changes['added'])) {\n $associationType = (new AssociationTypeIdV4())->getAssociationType($objectType, $type);\n $payload = $this->payloadBuilder->buildAddAssociationPayload(\n $activity->getCrmProviderId(),\n $changes['added'],\n $associationType\n );\n $this->getClient()->addAssociations($objectType, $type, $payload);\n }\n\n if (! empty($changes['removed'])) {\n $payload = $this->payloadBuilder->buildRemoveAssociationPayload(\n $activity->getCrmProviderId(),\n $changes['removed']\n );\n $this->getClient()->removeAssociations($objectType, $type, $payload);\n }\n }\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function updateMeetingV3(string $meetingId, array $engagement, array $metadata): Response\n {\n // If already set by us/client, do not override it\n if (isset($engagement['activityType']) && $this->hasEngagementActivityType($meetingId)) {\n $this->logger->info('[HubSpot] Meeting activity type already set', [\n 'meetingId' => $meetingId,\n 'activityType' => $engagement['activityType'],\n ]);\n\n unset($engagement['activityType']);\n }\n\n $payload = $this->payloadBuilder->getV3MeetingPayload($engagement, $metadata);\n\n return $this->getClient()->updateMeeting($meetingId, $payload);\n }\n\n private function hasEngagementActivityType(string $engagementId): bool\n {\n try {\n $engagementData = $this->getClient()->getEngagementData($engagementId);\n if (isset($engagementData['engagement']['activityType']) && trim($engagementData['engagement']['activityType']) != '') {\n return true;\n }\n\n return false;\n } catch (\\Exception $exception) {\n Sentry::captureException($exception);\n\n $this->logger->info('[HubSpot] Exception checking engagement activity type, defaulting to preserve existing', [\n 'engagementId' => $engagementId,\n 'exception' => $exception->getMessage(),\n ]);\n }\n\n return true;\n }\n\n private function updateTask(Activity $activity, array $engagement, array $metadata): void\n {\n $this->getClient()->deleteEngagement($activity->getCrmProviderId());\n\n $this->logCrmEngagementManipulation(\n self::ACTION_DELETE,\n ['crmId' => $activity->getCrmProviderId()],\n );\n\n $this->createActivity($activity, $engagement, $metadata);\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function createActivity(Activity $activity, array $engagement, array $metadata): void\n {\n $associations = $this->getActivityAssociations($activity);\n $associationsV4 = $this->convertActivityMeetingAssociationsV4($activity);\n\n if ($activity->isTypeConference()) {\n try {\n $hsEngagement = $this->createMeetingV3($engagement, $associationsV4, $metadata);\n $activityId = $hsEngagement->data->id;\n\n $this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associationsV4);\n\n $activity->crm_provider_id = $activityId;\n $activity->save();\n } catch (BadRequest $exception) {\n Sentry::captureException($exception);\n\n $this->logger->warning('[HubSpot] Error while creating engagements', [\n 'activity' => $activity->getUuid(),\n 'message' => $exception->getMessage(),\n 'engagement' => $engagement,\n 'associations' => $associations,\n 'metadata' => $metadata,\n ]);\n }\n } else {\n try {\n $hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);\n $activityId = $hsEngagement->data->engagement->id;\n\n $this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);\n\n $activity->crm_provider_id = $activityId;\n $activity->save();\n } catch (BadRequest $exception) {\n Sentry::captureException($exception);\n\n $this->logger->warning('[HubSpot] Error while creating engagements', [\n 'activity' => $activity->getUuid(),\n 'message' => $exception->getMessage(),\n 'engagement' => $engagement,\n 'associations' => $associations,\n 'metadata' => $metadata,\n ]);\n }\n }\n }\n\n private function convertActivityMeetingAssociationsV4(Activity $activity): array\n {\n $associations = [];\n\n $contactIds = $this->getParticipantsIds($activity);\n\n foreach ($contactIds as $contactId) {\n $associations[] = $this->buildAssociation(\n (int) $contactId,\n [AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_CONTACT]\n );\n }\n\n if ($activity->hasAccount()) {\n $crmProviderId = $activity->getAccount()?->getCrmProviderId();\n if ($crmProviderId) {\n $associations[] = $this->buildAssociation(\n (int) $crmProviderId,\n [AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_COMPANY]\n );\n }\n }\n\n if ($activity->hasOpportunity()) {\n $crmProviderId = $activity->getOpportunity()?->getCrmProviderId();\n if ($crmProviderId) {\n $associations[] = $this->buildAssociation(\n (int) $crmProviderId,\n [AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_DEAL]\n );\n }\n }\n\n return $associations;\n }\n\n private function buildAssociation(int $id, array $categoryToTypeIds): array\n {\n $types = [];\n\n foreach ($categoryToTypeIds as $category => $typeId) {\n $types[] = $this->buildAssociationType($category, $typeId);\n }\n\n return [\n 'to' => ['id' => (string) $id],\n 'types' => $types,\n ];\n }\n\n private function buildAssociationType(string $category, int $typeId): array\n {\n return [\n 'associationCategory' => $category,\n 'associationTypeId' => $typeId,\n ];\n }\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function createMeetingV3(array $engagement, array $associations, array $metadata): Response\n {\n $payload = $this->payloadBuilder->getV3MeetingPayload(\n engagement: $engagement,\n metadata: $metadata,\n associations: $associations\n );\n\n return $this->getClient()->createMeeting($payload);\n }\n\n /**\n * @throws BadRequest\n * @throws HubspotException\n */\n private function buildSoftphonePayload(Activity $activity): Activity\n {\n $decorator = $this->getDecorateActivity();\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $decorator->formatCreatedAt($activity),\n 'type' => 'CALL',\n ];\n\n if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {\n $engagement['activityType'] = $activity->getActivityType()->getName();\n }\n\n $metadata = [\n 'toNumber' => $decorator->formatCallToParticipant($activity),\n 'fromNumber' => $activity->getFromParticipant()?->getPhoneNumber(),\n 'status' => $decorator->convertCallStatus($activity),\n 'durationMilliseconds' => (int) $activity->getDuration() * 1000,\n 'body' => $decorator->generateDescription($activity),\n ];\n\n // For now, this is just a \"disposition\" field to store Call Outcome.\n $metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));\n\n return $this->upsertActivity($activity, $engagement, $metadata);\n }\n\n\n /**\n * @throws HubspotException\n * @throws BadRequest\n */\n private function buildTextMessagePayload(Activity $activity): Activity\n {\n $decorator = $this->getDecorateActivity();\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $decorator->formatCreatedAt($activity),\n 'type' => 'NOTE',\n ];\n\n $metadata = [\n 'body' => $decorator->generateDescription($activity),\n ];\n\n return $this->upsertActivity($activity, $engagement, $metadata);\n }\n\n private function getActivityAssociations(Activity $activity): array\n {\n return [\n 'contactIds' => $this->getParticipantsIds($activity),\n 'companyIds' => $activity->hasAccount() ? [$activity->getAccount()->getCrmProviderId()] : [],\n 'dealIds' => $activity->hasOpportunity() ? [$activity->getOpportunity()->getCrmProviderId()] : [],\n 'ownerIds' => [],\n ];\n }\n\n /**\n * Get DecorateActivity instance. Can be overridden in tests for mocking.\n */\n protected function getDecorateActivity(): DecorateActivity\n {\n return new DecorateActivity();\n }\n\n public function saveFollowupActivity(Activity $activity, array $fields): ?string\n {\n if (empty($fields['subject'])) {\n return null;\n }\n\n $associations = $this->getActivityAssociations($activity);\n\n if (empty($fields['timestamp']) === false) {\n $formatTimestamp = Carbon::createFromFormat('Y-m-d\\TH:i:s\\Z', $fields['timestamp']);\n $timestamp = $formatTimestamp->getTimestamp();\n } else {\n $timestamp = strtotime('+1 day');\n }\n\n $reminder = null;\n if (empty($fields['reminder']) === false) {\n $formatReminder = Carbon::createFromFormat('Y-m-d\\TH:i:s\\Z', $fields['reminder']);\n $reminder = $formatReminder->getTimestamp() * 1000;\n }\n\n $engagement = [\n 'active' => true,\n 'ownerId' => $this->profile->getCrmProviderId(),\n 'timestamp' => $timestamp * 1000,\n 'type' => 'TASK',\n ];\n\n $metadata = [\n 'subject' => $fields['subject'],\n 'body' => '',\n 'status' => 'NOT_STARTED',\n 'taskType' => 'CALL',\n 'reminders' => $reminder ? [$reminder] : [],\n ];\n\n try {\n $hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);\n } catch (BadRequest $e) {\n $this->logger->info('[HubSpot] Failed to create followup task', [\n 'activity' => $activity->getUuid(),\n 'engagement' => $engagement,\n 'metadata' => $metadata,\n 'error' => $e->getMessage(),\n ]);\n\n return null;\n }\n\n $this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);\n\n // We don't actually create a corresponding activity object on our side yet.\n return (string) $hsEngagement->data->engagement->id;\n }\n\n private function logCrmEngagementManipulation(\n string $action,\n array $engagementData,\n array $data = [],\n array $associations = [],\n ): void {\n $payload = ['team' => $this->team->getUuid()];\n\n if ($action === self::ACTION_CREATE) {\n $payload['engagementData'] = $engagementData;\n $payload['data'] = $data;\n $payload['associations'] = $associations;\n }\n\n if ($action === self::ACTION_UPDATE) {\n $payload['engagementId'] = $engagementData['crmId'];\n $payload['data'] = $data;\n }\n\n if ($action === self::ACTION_DELETE) {\n $payload['engagementId'] = $engagementData['crmId'];\n }\n\n $this->logger->info('[HubSpot] Engagement manipulated (' . $action . ')', $payload);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT\n# DISTINCT\nopp.id as opp_id, opp.uuid, opp.name,\n# COUNT(dr.id) AS deal_risk_count,\n\n# dr.id,\n# cfd.value,\nusr.name AS owner_name,\nopp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,\nusr.uuid as owner_uuid,\nusr.photo_path as owner_photo,\nusr.id AS owner_id,\njt.name as owner_job,\nopp.stage_id, opp.stage_updated_at,\nacc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,\nrt.business_process_id AS pipeline_id\nFROM opportunities opp\nLEFT JOIN record_types rt ON opp.record_type_id = rt.id\nLEFT JOIN users usr ON opp.user_id = usr.id\nLEFT JOIN accounts acc ON opp.account_id = acc.id\nLEFT JOIN job_titles jt ON usr.job_title_id = jt.id\n\n# LEFT JOIN group_deal_risk_types gdrt ON gdrt.group_id = usr.group_id\n# LEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id AND dr.group_deal_risk_type_id = gdrt.id\n\nLEFT JOIN crm_field_data cfd ON (cfd.object_id = opp.id and cfd.crm_field_id = 66814)\n\nWHERE opp.user_id IS NOT NULL\nAND opp.deleted_at IS NULL\nAND opp.is_closed = 1\nAND opp.is_won = 0\nAND opp.close_date >= '2024-01-01 00:00:00'\nAND opp.close_date <= '2024-12-31 23:59:59'\nAND usr.team_id = 1\n\n# and opp.id = 4823179\n\nGROUP BY opp.id, cfd.value\nORDER BY\n# cfd.value\n CAST(cfd.value AS UNSIGNED)\n# owner_name\n# (SELECT COUNT(dr.id)\n# FROM deal_risks dr\n# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id\n# WHERE dr.opportunity_id = opp.id\n# AND dr.is_active = 1\n# AND gdrt.is_enabled = 1)\nDESC\nLIMIT 25\n# OFFSET 0\n;\n\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\nselect * from crm_layout_entities where crm_layout_id = 1493;\n\nSELECT * FROM opportunities WHERE id = 4584045;\nSELECT * FROM crm_field_data WHERE object_id = 4584045;\n\nSELECT * FROM opportunities where team_id = 1 and crm_provider_id = '0061K00000lfb9IQAQ'\n\nSELECT\n opp.id as opportunity_id,\n opp.name,\n COUNT(dr.id) as risk_count\nFROM opportunities opp\nLEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id\nWHERE opp.id IN (\n 6069574,8900938,9507638,9524799,9660490,9662824,9705675,9749758,4158460,4391812,6450439,4448422,5118945,5590675,4584045,7228149,9002408,9165534,9446720,9641778,9665149,9703344,9709280,5747948,4158491,6182565,6263970,5798120,5111315,4536978,6062352,6548383,6072095,6548225,4480986,5011422,6548381,8760540,8917554,9509986,9514392,9569009,9569011,9578490,9713604,5784397,7276612,7288405,8994421,9118219,9608148,9818911,4510535,6479693,5958049,6271674,6550448,4158331,4158483,6126571,6171615,6540943,4897466,5190896,5796182,5932762,8572433,8723698,8892697,9711001,9789264,4549188,6100831,6170064,6260799,6263653,6449936,6530871,6538978,7777651,8059269,8319918,8787049,8901150,9263153,9453207,9514738,9696700,9791062,5752018,6421452,7439134,7878923,9354763,9369285,9514396,9582506,9889949,9890216,4094311,4158495,4158496,6098128,5585661,3872564,6442149,5891604,6164746,6199593,6583474,6519684,9018490,9809006,4496897,5041324,5829430,6198319,6253504,6555763,7242914,7931055,8024125,8797814,8058559,8673347,8892695,8994420,9616219,9714970,9722004,9809439,9818918,6523177,8134147,9002915,9711422,9892713,9901719,9954210,9978435,5800810,6243518,6416114,6222251,6411974,6512456,5791953,6545606,9914780,5805540,6238986,6463838,6547680,9767049,9809437,9810885,9890855,6673493,9902036,4335521,6379871,6503799,6546077,8018765,9907556,9958433,9905855,9916179,9946741,9957877,5563344,6271838,6450815,7641128,7762567,7780592,8684810,8685786,8685787,8685788\n)\nGROUP BY opp.id;\n\nSELECT COUNT(dr.id)\n FROM deal_risks dr\n JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id\n WHERE dr.opportunity_id = 5563344\n# AND gdrt.group_id = usr.group_id\n\n\n\nEXPLAIN SELECT\n opp.id as opp_id, opp.uuid, opp.name,\n\ncfd.value,\ncfv.sequence,\ncfv.value,\n# MAX(cfd.value) AS max_cfd_value,\nusr.name AS owner_name,\nopp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,\nusr.uuid as owner_uuid,\nusr.photo_path as owner_photo,\nusr.id AS owner_id,\njt.name as owner_job,\nopp.stage_id, opp.stage_updated_at,\nacc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,\nrt.business_process_id AS pipeline_id\nFROM opportunities opp\n\nLEFT JOIN record_types rt ON opp.record_type_id = rt.id\nLEFT JOIN users usr ON opp.user_id = usr.id\nLEFT JOIN accounts acc ON opp.account_id = acc.id\nLEFT JOIN job_titles jt ON usr.job_title_id = jt.id\n\nLEFT JOIN crm_field_data cfd ON cfd.id = (SELECT sub_cfd.id\n FROM crm_field_data sub_cfd\n WHERE sub_cfd.object_id = opp.id\n AND sub_cfd.crm_field_id = 66810\n ORDER BY sub_cfd.updated_at DESC\n LIMIT 1)\n\nLEFT JOIN crm_field_values cfv ON cfv.crm_field_id = 66810 AND cfv.value = cfd.value\n\nWHERE opp.user_id IS NOT NULL\nAND opp.deleted_at IS NULL\nAND opp.is_closed = 0\n# AND opp.is_closed = 1\n# AND opp.is_won = 0\nAND opp.close_date >= '2024-01-01 00:00:00'\nAND opp.close_date <= '2024-12-31 23:59:59'\nAND usr.team_id = 1\n\n# and opp.id = 4823179\n\n# GROUP BY opp.id\nORDER BY\n cfv.sequence DESC,\n# opp.name\n# owner_name\n cfd.value\n# CAST(cfd.value AS UNSIGNED)\n# CAST(MAX(cfd.value) AS UNSIGNED)\n# (SELECT COUNT(dr.id)\n# FROM deal_risks dr\n# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id\n# WHERE dr.opportunity_id = opp.id\n# AND dr.is_active = 1 AND gdrt.is_enabled = 1)\nDESC\n# LIMIT 75, 25\n;\n\n\n\nSELECT * FROM crm_field_values WHERE crm_field_id = 66810;\n\nSELECT f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value, fd.updated_at, fd.id, fd.created_at\nFROM crm_fields f\nINNER JOIN crm_field_data fd ON fd.crm_field_id = f.id\n WHERE (f.crm_configuration_id = 1)\n AND (f.object_type = 'opportunity')\n# AND (fd.object_id IN (4158331,4158483,4158495,4158496,6069574,6263970,6171615,6540943,6545606,5829430,6198319,6263653,6548381,7242914,8797814,7228149,7439134,7878923,8134147,9002915,9118219,9165534,9354763,9369285,9446720))\n AND (fd.object_id IN (4158460))\n AND (f.crm_provider_id IN ('ForecastCategoryName'))\n ORDER BY fd.object_id ASC, fd.updated_at DESC;\n\nselect * from crm_layouts where crm_configuration_id = 1;\nselect cf.* from crm_fields cf\njoin crm_layout_entities cle on cf.id = cle.crm_field_id\nwhere crm_layout_id = 1493;\n\nSELECT * FROM opportunities WHERE id = 4158460;\nSELECT * FROM crm_field_data WHERE object_id = 4158460;\n\nselect * from users where team_id = 1;\nSELECT * FROM users WHERE id = 7160;\nselect * from role_user where user_id = 3248;\n\nselect * from crm_field_values where crm_field_id = 66824;\n\nSELECT * FROM users WHERE id = 23470;\nselect * from crm_configurations;\n\n# ******************************************\nselect * from teams where id = 1038; # 23521, 966\nselect * from users where team_id = 1038;\nselect * from crm_configurations where id = 966;\nSELECT * FROM activities WHERE uuid_to_bin('e8dc7c34-31f6-4430-bd81-2d9d8f00dd07') = uuid; # 54965762\nSELECT * FROM activities WHERE uuid_to_bin('4b5727c0-69d1-428f-b8d9-b649055166e2') = uuid; # 54965764\nSELECT * FROM participants WHERE activity_id = 54965764;\n\nSELECT id, uuid, title, recording_state FROM activities WHERE uuid_to_bin('355f105d-5606-4379-b0c5-d91daf59f4ce') = uuid; # 54964075\nSELECT * FROM participants WHERE activity_id = 54964075;\nselect f.id, slug, title, tf.team_id from team_features tf JOIN features f on tf.feature_id = f.id\n where tf.team_id = 1038;\n\n\n# ****************************************** PD *************************\nselect * from teams where id = 1029;\nSELECT * FROM crm_configurations WHERE id = 957;\nSELECT * FROM activities WHERE uuid_to_bin('581a33cb-4343-44bd-ac0c-4a5cee71c5ec') = uuid; # 54963423\nSELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433\n\nSELECT * FROM activities WHERE uuid_to_bin('8b6bb2f7-e7a7-4aec-8806-fbfea7093ccd') = uuid; # 54963421\n\n# ****************************************** Close *************************\nselect * from teams where id = 1031;\nSELECT * FROM crm_configurations WHERE id = 959;\nSELECT * FROM activities WHERE uuid_to_bin('59c517e0-96c9-4dad-bfeb-b7bef72f8725') = uuid; # 54963517\n\n\nSELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433\n\nSELECT * FROM activities WHERE uuid_to_bin('d68311e3-ac34-49bd-bf04-88323a7e5352') = uuid; # 54966009\n\n# ****************************************** SF *************************\nSELECT * FROM activities WHERE uuid_to_bin('2bd4cfa3-4eb5-4c77-84a7-9ed46a21c988') = uuid;\n\nselect * from roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 136;\n\nselect * from migrations order by id desc;\n\nselect * from teams where id IN (1, 1037);\nselect * from crm_layouts where crm_configuration_id = 1;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1493;\nSELECT * FROM crm_fields WHERE id IN (1652,1661,66799,66814,66821,66836,66843,66846,66864,84752,182306,323580,380378);\n\nselect * from features;\nselect * from team_features where feature_id = 33;\nselect * from opportunities;\n\nselect * from teams;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1052 and sa.provider = 'hubspot';\n\nSELECT * FROM accounts where id = 11512582;\nselect * from activities where account_id = 11512582;","depth":4,"on_screen":true,"value":"SELECT\n# DISTINCT\nopp.id as opp_id, opp.uuid, opp.name,\n# COUNT(dr.id) AS deal_risk_count,\n\n# dr.id,\n# cfd.value,\nusr.name AS owner_name,\nopp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,\nusr.uuid as owner_uuid,\nusr.photo_path as owner_photo,\nusr.id AS owner_id,\njt.name as owner_job,\nopp.stage_id, opp.stage_updated_at,\nacc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,\nrt.business_process_id AS pipeline_id\nFROM opportunities opp\nLEFT JOIN record_types rt ON opp.record_type_id = rt.id\nLEFT JOIN users usr ON opp.user_id = usr.id\nLEFT JOIN accounts acc ON opp.account_id = acc.id\nLEFT JOIN job_titles jt ON usr.job_title_id = jt.id\n\n# LEFT JOIN group_deal_risk_types gdrt ON gdrt.group_id = usr.group_id\n# LEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id AND dr.group_deal_risk_type_id = gdrt.id\n\nLEFT JOIN crm_field_data cfd ON (cfd.object_id = opp.id and cfd.crm_field_id = 66814)\n\nWHERE opp.user_id IS NOT NULL\nAND opp.deleted_at IS NULL\nAND opp.is_closed = 1\nAND opp.is_won = 0\nAND opp.close_date >= '2024-01-01 00:00:00'\nAND opp.close_date <= '2024-12-31 23:59:59'\nAND usr.team_id = 1\n\n# and opp.id = 4823179\n\nGROUP BY opp.id, cfd.value\nORDER BY\n# cfd.value\n CAST(cfd.value AS UNSIGNED)\n# owner_name\n# (SELECT COUNT(dr.id)\n# FROM deal_risks dr\n# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id\n# WHERE dr.opportunity_id = opp.id\n# AND dr.is_active = 1\n# AND gdrt.is_enabled = 1)\nDESC\nLIMIT 25\n# OFFSET 0\n;\n\nselect * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';\nselect * from crm_layout_entities where crm_layout_id = 1493;\n\nSELECT * FROM opportunities WHERE id = 4584045;\nSELECT * FROM crm_field_data WHERE object_id = 4584045;\n\nSELECT * FROM opportunities where team_id = 1 and crm_provider_id = '0061K00000lfb9IQAQ'\n\nSELECT\n opp.id as opportunity_id,\n opp.name,\n COUNT(dr.id) as risk_count\nFROM opportunities opp\nLEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id\nWHERE opp.id IN (\n 6069574,8900938,9507638,9524799,9660490,9662824,9705675,9749758,4158460,4391812,6450439,4448422,5118945,5590675,4584045,7228149,9002408,9165534,9446720,9641778,9665149,9703344,9709280,5747948,4158491,6182565,6263970,5798120,5111315,4536978,6062352,6548383,6072095,6548225,4480986,5011422,6548381,8760540,8917554,9509986,9514392,9569009,9569011,9578490,9713604,5784397,7276612,7288405,8994421,9118219,9608148,9818911,4510535,6479693,5958049,6271674,6550448,4158331,4158483,6126571,6171615,6540943,4897466,5190896,5796182,5932762,8572433,8723698,8892697,9711001,9789264,4549188,6100831,6170064,6260799,6263653,6449936,6530871,6538978,7777651,8059269,8319918,8787049,8901150,9263153,9453207,9514738,9696700,9791062,5752018,6421452,7439134,7878923,9354763,9369285,9514396,9582506,9889949,9890216,4094311,4158495,4158496,6098128,5585661,3872564,6442149,5891604,6164746,6199593,6583474,6519684,9018490,9809006,4496897,5041324,5829430,6198319,6253504,6555763,7242914,7931055,8024125,8797814,8058559,8673347,8892695,8994420,9616219,9714970,9722004,9809439,9818918,6523177,8134147,9002915,9711422,9892713,9901719,9954210,9978435,5800810,6243518,6416114,6222251,6411974,6512456,5791953,6545606,9914780,5805540,6238986,6463838,6547680,9767049,9809437,9810885,9890855,6673493,9902036,4335521,6379871,6503799,6546077,8018765,9907556,9958433,9905855,9916179,9946741,9957877,5563344,6271838,6450815,7641128,7762567,7780592,8684810,8685786,8685787,8685788\n)\nGROUP BY opp.id;\n\nSELECT COUNT(dr.id)\n FROM deal_risks dr\n JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id\n WHERE dr.opportunity_id = 5563344\n# AND gdrt.group_id = usr.group_id\n\n\n\nEXPLAIN SELECT\n opp.id as opp_id, opp.uuid, opp.name,\n\ncfd.value,\ncfv.sequence,\ncfv.value,\n# MAX(cfd.value) AS max_cfd_value,\nusr.name AS owner_name,\nopp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,\nusr.uuid as owner_uuid,\nusr.photo_path as owner_photo,\nusr.id AS owner_id,\njt.name as owner_job,\nopp.stage_id, opp.stage_updated_at,\nacc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,\nrt.business_process_id AS pipeline_id\nFROM opportunities opp\n\nLEFT JOIN record_types rt ON opp.record_type_id = rt.id\nLEFT JOIN users usr ON opp.user_id = usr.id\nLEFT JOIN accounts acc ON opp.account_id = acc.id\nLEFT JOIN job_titles jt ON usr.job_title_id = jt.id\n\nLEFT JOIN crm_field_data cfd ON cfd.id = (SELECT sub_cfd.id\n FROM crm_field_data sub_cfd\n WHERE sub_cfd.object_id = opp.id\n AND sub_cfd.crm_field_id = 66810\n ORDER BY sub_cfd.updated_at DESC\n LIMIT 1)\n\nLEFT JOIN crm_field_values cfv ON cfv.crm_field_id = 66810 AND cfv.value = cfd.value\n\nWHERE opp.user_id IS NOT NULL\nAND opp.deleted_at IS NULL\nAND opp.is_closed = 0\n# AND opp.is_closed = 1\n# AND opp.is_won = 0\nAND opp.close_date >= '2024-01-01 00:00:00'\nAND opp.close_date <= '2024-12-31 23:59:59'\nAND usr.team_id = 1\n\n# and opp.id = 4823179\n\n# GROUP BY opp.id\nORDER BY\n cfv.sequence DESC,\n# opp.name\n# owner_name\n cfd.value\n# CAST(cfd.value AS UNSIGNED)\n# CAST(MAX(cfd.value) AS UNSIGNED)\n# (SELECT COUNT(dr.id)\n# FROM deal_risks dr\n# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id\n# WHERE dr.opportunity_id = opp.id\n# AND dr.is_active = 1 AND gdrt.is_enabled = 1)\nDESC\n# LIMIT 75, 25\n;\n\n\n\nSELECT * FROM crm_field_values WHERE crm_field_id = 66810;\n\nSELECT f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value, fd.updated_at, fd.id, fd.created_at\nFROM crm_fields f\nINNER JOIN crm_field_data fd ON fd.crm_field_id = f.id\n WHERE (f.crm_configuration_id = 1)\n AND (f.object_type = 'opportunity')\n# AND (fd.object_id IN (4158331,4158483,4158495,4158496,6069574,6263970,6171615,6540943,6545606,5829430,6198319,6263653,6548381,7242914,8797814,7228149,7439134,7878923,8134147,9002915,9118219,9165534,9354763,9369285,9446720))\n AND (fd.object_id IN (4158460))\n AND (f.crm_provider_id IN ('ForecastCategoryName'))\n ORDER BY fd.object_id ASC, fd.updated_at DESC;\n\nselect * from crm_layouts where crm_configuration_id = 1;\nselect cf.* from crm_fields cf\njoin crm_layout_entities cle on cf.id = cle.crm_field_id\nwhere crm_layout_id = 1493;\n\nSELECT * FROM opportunities WHERE id = 4158460;\nSELECT * FROM crm_field_data WHERE object_id = 4158460;\n\nselect * from users where team_id = 1;\nSELECT * FROM users WHERE id = 7160;\nselect * from role_user where user_id = 3248;\n\nselect * from crm_field_values where crm_field_id = 66824;\n\nSELECT * FROM users WHERE id = 23470;\nselect * from crm_configurations;\n\n# ******************************************\nselect * from teams where id = 1038; # 23521, 966\nselect * from users where team_id = 1038;\nselect * from crm_configurations where id = 966;\nSELECT * FROM activities WHERE uuid_to_bin('e8dc7c34-31f6-4430-bd81-2d9d8f00dd07') = uuid; # 54965762\nSELECT * FROM activities WHERE uuid_to_bin('4b5727c0-69d1-428f-b8d9-b649055166e2') = uuid; # 54965764\nSELECT * FROM participants WHERE activity_id = 54965764;\n\nSELECT id, uuid, title, recording_state FROM activities WHERE uuid_to_bin('355f105d-5606-4379-b0c5-d91daf59f4ce') = uuid; # 54964075\nSELECT * FROM participants WHERE activity_id = 54964075;\nselect f.id, slug, title, tf.team_id from team_features tf JOIN features f on tf.feature_id = f.id\n where tf.team_id = 1038;\n\n\n# ****************************************** PD *************************\nselect * from teams where id = 1029;\nSELECT * FROM crm_configurations WHERE id = 957;\nSELECT * FROM activities WHERE uuid_to_bin('581a33cb-4343-44bd-ac0c-4a5cee71c5ec') = uuid; # 54963423\nSELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433\n\nSELECT * FROM activities WHERE uuid_to_bin('8b6bb2f7-e7a7-4aec-8806-fbfea7093ccd') = uuid; # 54963421\n\n# ****************************************** Close *************************\nselect * from teams where id = 1031;\nSELECT * FROM crm_configurations WHERE id = 959;\nSELECT * FROM activities WHERE uuid_to_bin('59c517e0-96c9-4dad-bfeb-b7bef72f8725') = uuid; # 54963517\n\n\nSELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433\n\nSELECT * FROM activities WHERE uuid_to_bin('d68311e3-ac34-49bd-bf04-88323a7e5352') = uuid; # 54966009\n\n# ****************************************** SF *************************\nSELECT * FROM activities WHERE uuid_to_bin('2bd4cfa3-4eb5-4c77-84a7-9ed46a21c988') = uuid;\n\nselect * from roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 136;\n\nselect * from migrations order by id desc;\n\nselect * from teams where id IN (1, 1037);\nselect * from crm_layouts where crm_configuration_id = 1;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 1493;\nSELECT * FROM crm_fields WHERE id IN (1652,1661,66799,66814,66821,66836,66843,66846,66864,84752,182306,323580,380378);\n\nselect * from features;\nselect * from team_features where feature_id = 33;\nselect * from opportunities;\n\nselect * from teams;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1052 and sa.provider = 'hubspot';\n\nSELECT * FROM accounts where id = 11512582;\nselect * from activities where account_id = 11512582;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.28224733,"top":1.0,"width":0.024268618,"height":-0.04788506},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3382584868951134281
|
6551498163460912845
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12066 on JY-20725-handle Project: faVsco.js, menu
#12066 on JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
HandleHubspotRateLimitTest
Run 'HandleHubspotRateLimitTest'
Debug 'HandleHubspotRateLimitTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
8
6
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot\ServiceTraits;
use Carbon\Carbon;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Field;
use Jiminny\Repositories\Crm\FieldDataRepository;
use Jiminny\Services\Crm\Hubspot\DecorateActivity;
use Jiminny\Services\Crm\Hubspot\Utils\AssociationCategoryV4;
use Jiminny\Services\Crm\Hubspot\Utils\AssociationTypeIdV4;
use SevenShores\Hubspot\Exceptions\BadRequest;
use SevenShores\Hubspot\Http\Response;
use SevenShores\Hubspot\Exceptions\HubspotException;
use Sentry;
trait WriteCrmTrait
{
private const string ACTION_CREATE = 'create';
private const string ACTION_UPDATE = 'update';
private const string ACTION_DELETE = 'delete';
/**
* @inheritdoc
*/
public function saveActivity(Activity $activity): Activity
{
switch ($activity->getCrmType()) {
case Activity::TYPE_CONFERENCE:
$activity = $this->buildConferencePayload($activity);
break;
case Activity::TYPE_SOFTPHONE:
case Activity::TYPE_SOFTPHONE_INBOUND:
$activity = $this->buildSoftphonePayload($activity);
break;
case Activity::TYPE_SMS_INBOUND:
case Activity::TYPE_SMS_OUTBOUND:
$activity = $this->buildTextMessagePayload($activity);
break;
}
return $activity;
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function buildConferencePayload(Activity $activity): Activity
{
$decorator = $this->getDecorateActivity();
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $decorator->formatStartTime($activity),
'type' => 'MEETING',
];
if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {
$engagement['activityType'] = $activity->getActivityType()->getName();
}
$metadata = [
'meetingOutcome' => $decorator->convertMeetingOutcome($activity),
'internalMeetingNotes' => $decorator->generateDescription($activity),
];
// Only if they are creating a fresh engagement should we update the times, otherwise it will cause a cal sync.
if (! $activity->hasCrmProviderId()) {
if ($activity->hasActualStartTime() && $activity->hasActualEndTime()) {
$metadata['startTime'] = $decorator->formatStartTime($activity);
$metadata['endTime'] = $decorator->formatEndTime($activity);
}
$metadata['title'] = $decorator->generateTitle($activity);
}
// For now, this is just a "meetingOutcome" field for some customers.
$metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));
return $this->upsertActivity($activity, $engagement, $metadata);
}
private function fetchCustomFieldData(Activity $activity, string $objectType): array
{
$payload = [];
$fieldDataRepository = app(FieldDataRepository::class);
$fieldData = $fieldDataRepository->getActivityFieldData($activity, $objectType);
foreach ($fieldData as $data) {
// Add the field and value to the payload.
$payload += [
$data->getField()->getCrmProviderId() => $data->getValue(),
];
}
return $payload;
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function upsertActivity(Activity $activity, array $engagement, array $metadata): Activity
{
if (! $activity->hasCrmProviderId()) {
$this->createActivity($activity, $engagement, $metadata);
return $activity;
}
try {
$oldEngagement = $this->getClient()->getEngagementData($activity->getCrmProviderId());
} catch (HubspotException $e) {
$this->logger->warning('[HubSpot] Engagement not found', [
'activity_id' => $activity->getUuid(),
'crm_provider_id' => $activity->getCrmProviderId(),
'exception' => $e->getMessage(),
]);
// potentially here we can log new activity if it is not found
return $activity;
}
$type = $oldEngagement['engagement']['type'] ?? null;
$bodyAttribute = $activity->isTypeConference() ? 'internalMeetingNotes' : 'body';
$decorator = $this->getDecorateActivity();
if ($type !== 'TASK') {
$oldDescription = $oldEngagement['metadata'][$bodyAttribute] ?? '';
$metadata[$bodyAttribute] = $decorator->mergeDescriptions(
$metadata[$bodyAttribute],
$oldDescription
);
$oldAssociations = $oldEngagement['associations'] ?? [];
$this->updateNonTaskActivity($activity, $engagement, $metadata, $oldAssociations);
} else {
$oldTaskBody = $oldEngagement['metadata']['body'] ?? '';
$metadata[$bodyAttribute] = $decorator->mergeDescriptions(
$metadata[$bodyAttribute],
$oldTaskBody
);
$this->updateTask($activity, $engagement, $metadata);
}
return $activity;
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function updateNonTaskActivity(
Activity $activity,
array $engagement,
array $metadata,
array $oldAssociations
): void {
if ($activity->isTypeConference()) {
$this->updateMeetingV3($activity->getCrmProviderId(), $engagement, $metadata);
} else {
$this->getClient()->updateEngagement($activity->getCrmProviderId(), $engagement, $metadata);
}
$this->updateActivityAssociations($activity, $oldAssociations);
$this->logCrmEngagementManipulation(
self::ACTION_UPDATE,
['crmId' => $activity->getCrmProviderId()],
$metadata,
);
}
private function updateActivityAssociations(Activity $activity, array $oldAssociations): void
{
$currentAssociations = $this->getActivityAssociations($activity);
$associationChanges = $this->getAssociationDifferences($activity, $oldAssociations, $currentAssociations);
// No changes - exit
if (empty($associationChanges)) {
return;
}
$this->logger->info('[HubSpot] Updating associations', [
'team' => $this->team->getUuid(),
'activity' => $activity->getUuid(),
'associationChanges' => $associationChanges,
]);
$this->updateAssociations($activity, $associationChanges);
}
private function getAssociationDifferences(
Activity $activity,
array $oldAssociations,
array $currentAssociations
): array {
$objects = ['contactIds', 'companyIds', 'dealIds'];
$changes = [];
foreach ($objects as $object) {
$oldIds = $this->normalizeIds($oldAssociations[$object] ?? []);
$currentIds = $this->normalizeIds($currentAssociations[$object] ?? []);
$added = array_diff($currentIds, $oldIds);
$removed = array_diff($oldIds, $currentIds);
$type = match ($object) {
'contactIds' => 'contact',
'companyIds' => 'company',
'dealIds' => 'deal',
};
$shouldIncludeRemoved = $this->shouldIncludeRemovedAssociations($type, $added, $activity);
if (! empty($removed) && ! $shouldIncludeRemoved) {
$this->logger->info('[HubSpot] Skipping association removal', [
'team' => $this->team->getUuid(),
'type' => $type,
'oldIds' => $oldIds,
'currentIds' => $currentIds,
'skippedRemovals' => array_values($removed),
]);
}
if (! empty($added) || (! empty($removed) && $shouldIncludeRemoved)) {
$changes[$type] = [
'added' => array_values($added),
'removed' => array_values($removed),
];
}
}
return $changes;
}
/**
* Determines whether removed associations should be synced to HubSpot.
*
* For contacts and companies, we always sync removals (original behavior).
* For deals, we only sync removals when:
* - There are new deals being added (replacement scenario), OR
* - The activity has an account associated (indicating intentional association management)
*
* This prevents accidentally removing deal associations that exist in HubSpot
* but not in Jiminny's database (e.g., deals manually added by users in HubSpot).
*/
private function shouldIncludeRemovedAssociations(string $type, array $added, Activity $activity): bool
{
// Contacts and companies: always sync removals
if ($type !== 'deal') {
return true;
}
// Deals: sync removals if we're adding new deals (replacement)
if (! empty($added)) {
return true;
}
// Deals: sync removals only if activity has an account (intentional management)
return $activity->hasAccount();
}
private function normalizeIds(array $ids): array
{
$stringIds = array_map('strval', $ids);
$uniqueIds = array_unique($stringIds);
sort($uniqueIds);
return $uniqueIds;
}
private function updateAssociations(Activity $activity, array $associationChanges): void
{
$objectType = $activity->isTypeConference() ? 'meeting' : 'call';
foreach ($associationChanges as $type => $changes) {
if (! empty($changes['added'])) {
$associationType = (new AssociationTypeIdV4())->getAssociationType($objectType, $type);
$payload = $this->payloadBuilder->buildAddAssociationPayload(
$activity->getCrmProviderId(),
$changes['added'],
$associationType
);
$this->getClient()->addAssociations($objectType, $type, $payload);
}
if (! empty($changes['removed'])) {
$payload = $this->payloadBuilder->buildRemoveAssociationPayload(
$activity->getCrmProviderId(),
$changes['removed']
);
$this->getClient()->removeAssociations($objectType, $type, $payload);
}
}
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function updateMeetingV3(string $meetingId, array $engagement, array $metadata): Response
{
// If already set by us/client, do not override it
if (isset($engagement['activityType']) && $this->hasEngagementActivityType($meetingId)) {
$this->logger->info('[HubSpot] Meeting activity type already set', [
'meetingId' => $meetingId,
'activityType' => $engagement['activityType'],
]);
unset($engagement['activityType']);
}
$payload = $this->payloadBuilder->getV3MeetingPayload($engagement, $metadata);
return $this->getClient()->updateMeeting($meetingId, $payload);
}
private function hasEngagementActivityType(string $engagementId): bool
{
try {
$engagementData = $this->getClient()->getEngagementData($engagementId);
if (isset($engagementData['engagement']['activityType']) && trim($engagementData['engagement']['activityType']) != '') {
return true;
}
return false;
} catch (\Exception $exception) {
Sentry::captureException($exception);
$this->logger->info('[HubSpot] Exception checking engagement activity type, defaulting to preserve existing', [
'engagementId' => $engagementId,
'exception' => $exception->getMessage(),
]);
}
return true;
}
private function updateTask(Activity $activity, array $engagement, array $metadata): void
{
$this->getClient()->deleteEngagement($activity->getCrmProviderId());
$this->logCrmEngagementManipulation(
self::ACTION_DELETE,
['crmId' => $activity->getCrmProviderId()],
);
$this->createActivity($activity, $engagement, $metadata);
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function createActivity(Activity $activity, array $engagement, array $metadata): void
{
$associations = $this->getActivityAssociations($activity);
$associationsV4 = $this->convertActivityMeetingAssociationsV4($activity);
if ($activity->isTypeConference()) {
try {
$hsEngagement = $this->createMeetingV3($engagement, $associationsV4, $metadata);
$activityId = $hsEngagement->data->id;
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associationsV4);
$activity->crm_provider_id = $activityId;
$activity->save();
} catch (BadRequest $exception) {
Sentry::captureException($exception);
$this->logger->warning('[HubSpot] Error while creating engagements', [
'activity' => $activity->getUuid(),
'message' => $exception->getMessage(),
'engagement' => $engagement,
'associations' => $associations,
'metadata' => $metadata,
]);
}
} else {
try {
$hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);
$activityId = $hsEngagement->data->engagement->id;
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);
$activity->crm_provider_id = $activityId;
$activity->save();
} catch (BadRequest $exception) {
Sentry::captureException($exception);
$this->logger->warning('[HubSpot] Error while creating engagements', [
'activity' => $activity->getUuid(),
'message' => $exception->getMessage(),
'engagement' => $engagement,
'associations' => $associations,
'metadata' => $metadata,
]);
}
}
}
private function convertActivityMeetingAssociationsV4(Activity $activity): array
{
$associations = [];
$contactIds = $this->getParticipantsIds($activity);
foreach ($contactIds as $contactId) {
$associations[] = $this->buildAssociation(
(int) $contactId,
[AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_CONTACT]
);
}
if ($activity->hasAccount()) {
$crmProviderId = $activity->getAccount()?->getCrmProviderId();
if ($crmProviderId) {
$associations[] = $this->buildAssociation(
(int) $crmProviderId,
[AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_COMPANY]
);
}
}
if ($activity->hasOpportunity()) {
$crmProviderId = $activity->getOpportunity()?->getCrmProviderId();
if ($crmProviderId) {
$associations[] = $this->buildAssociation(
(int) $crmProviderId,
[AssociationCategoryV4::HUBSPOT_DEFINED => AssociationTypeIdV4::MEETING_TO_DEAL]
);
}
}
return $associations;
}
private function buildAssociation(int $id, array $categoryToTypeIds): array
{
$types = [];
foreach ($categoryToTypeIds as $category => $typeId) {
$types[] = $this->buildAssociationType($category, $typeId);
}
return [
'to' => ['id' => (string) $id],
'types' => $types,
];
}
private function buildAssociationType(string $category, int $typeId): array
{
return [
'associationCategory' => $category,
'associationTypeId' => $typeId,
];
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function createMeetingV3(array $engagement, array $associations, array $metadata): Response
{
$payload = $this->payloadBuilder->getV3MeetingPayload(
engagement: $engagement,
metadata: $metadata,
associations: $associations
);
return $this->getClient()->createMeeting($payload);
}
/**
* @throws BadRequest
* @throws HubspotException
*/
private function buildSoftphonePayload(Activity $activity): Activity
{
$decorator = $this->getDecorateActivity();
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $decorator->formatCreatedAt($activity),
'type' => 'CALL',
];
if ($activity->hasActivityType() && $this->matchesCrmType($activity->getActivityType())) {
$engagement['activityType'] = $activity->getActivityType()->getName();
}
$metadata = [
'toNumber' => $decorator->formatCallToParticipant($activity),
'fromNumber' => $activity->getFromParticipant()?->getPhoneNumber(),
'status' => $decorator->convertCallStatus($activity),
'durationMilliseconds' => (int) $activity->getDuration() * 1000,
'body' => $decorator->generateDescription($activity),
];
// For now, this is just a "disposition" field to store Call Outcome.
$metadata = array_merge($metadata, $this->fetchCustomFieldData($activity, Field::OBJECT_TASK));
return $this->upsertActivity($activity, $engagement, $metadata);
}
/**
* @throws HubspotException
* @throws BadRequest
*/
private function buildTextMessagePayload(Activity $activity): Activity
{
$decorator = $this->getDecorateActivity();
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $decorator->formatCreatedAt($activity),
'type' => 'NOTE',
];
$metadata = [
'body' => $decorator->generateDescription($activity),
];
return $this->upsertActivity($activity, $engagement, $metadata);
}
private function getActivityAssociations(Activity $activity): array
{
return [
'contactIds' => $this->getParticipantsIds($activity),
'companyIds' => $activity->hasAccount() ? [$activity->getAccount()->getCrmProviderId()] : [],
'dealIds' => $activity->hasOpportunity() ? [$activity->getOpportunity()->getCrmProviderId()] : [],
'ownerIds' => [],
];
}
/**
* Get DecorateActivity instance. Can be overridden in tests for mocking.
*/
protected function getDecorateActivity(): DecorateActivity
{
return new DecorateActivity();
}
public function saveFollowupActivity(Activity $activity, array $fields): ?string
{
if (empty($fields['subject'])) {
return null;
}
$associations = $this->getActivityAssociations($activity);
if (empty($fields['timestamp']) === false) {
$formatTimestamp = Carbon::createFromFormat('Y-m-d\TH:i:s\Z', $fields['timestamp']);
$timestamp = $formatTimestamp->getTimestamp();
} else {
$timestamp = strtotime('+1 day');
}
$reminder = null;
if (empty($fields['reminder']) === false) {
$formatReminder = Carbon::createFromFormat('Y-m-d\TH:i:s\Z', $fields['reminder']);
$reminder = $formatReminder->getTimestamp() * 1000;
}
$engagement = [
'active' => true,
'ownerId' => $this->profile->getCrmProviderId(),
'timestamp' => $timestamp * 1000,
'type' => 'TASK',
];
$metadata = [
'subject' => $fields['subject'],
'body' => '',
'status' => 'NOT_STARTED',
'taskType' => 'CALL',
'reminders' => $reminder ? [$reminder] : [],
];
try {
$hsEngagement = $this->getClient()->createEngagement($engagement, $associations, $metadata);
} catch (BadRequest $e) {
$this->logger->info('[HubSpot] Failed to create followup task', [
'activity' => $activity->getUuid(),
'engagement' => $engagement,
'metadata' => $metadata,
'error' => $e->getMessage(),
]);
return null;
}
$this->logCrmEngagementManipulation(self::ACTION_CREATE, $engagement, $metadata, $associations);
// We don't actually create a corresponding activity object on our side yet.
return (string) $hsEngagement->data->engagement->id;
}
private function logCrmEngagementManipulation(
string $action,
array $engagementData,
array $data = [],
array $associations = [],
): void {
$payload = ['team' => $this->team->getUuid()];
if ($action === self::ACTION_CREATE) {
$payload['engagementData'] = $engagementData;
$payload['data'] = $data;
$payload['associations'] = $associations;
}
if ($action === self::ACTION_UPDATE) {
$payload['engagementId'] = $engagementData['crmId'];
$payload['data'] = $data;
}
if ($action === self::ACTION_DELETE) {
$payload['engagementId'] = $engagementData['crmId'];
}
$this->logger->info('[HubSpot] Engagement manipulated (' . $action . ')', $payload);
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
8
1
3
4
Previous Highlighted Error
Next Highlighted Error
SELECT
# DISTINCT
opp.id as opp_id, opp.uuid, opp.name,
# COUNT(dr.id) AS deal_risk_count,
# dr.id,
# cfd.value,
usr.name AS owner_name,
opp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,
usr.uuid as owner_uuid,
usr.photo_path as owner_photo,
usr.id AS owner_id,
jt.name as owner_job,
opp.stage_id, opp.stage_updated_at,
acc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,
rt.business_process_id AS pipeline_id
FROM opportunities opp
LEFT JOIN record_types rt ON opp.record_type_id = rt.id
LEFT JOIN users usr ON opp.user_id = usr.id
LEFT JOIN accounts acc ON opp.account_id = acc.id
LEFT JOIN job_titles jt ON usr.job_title_id = jt.id
# LEFT JOIN group_deal_risk_types gdrt ON gdrt.group_id = usr.group_id
# LEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id AND dr.group_deal_risk_type_id = gdrt.id
LEFT JOIN crm_field_data cfd ON (cfd.object_id = opp.id and cfd.crm_field_id = 66814)
WHERE opp.user_id IS NOT NULL
AND opp.deleted_at IS NULL
AND opp.is_closed = 1
AND opp.is_won = 0
AND opp.close_date >= '2024-01-01 00:00:00'
AND opp.close_date <= '2024-12-31 23:59:59'
AND usr.team_id = 1
# and opp.id = 4823179
GROUP BY opp.id, cfd.value
ORDER BY
# cfd.value
CAST(cfd.value AS UNSIGNED)
# owner_name
# (SELECT COUNT(dr.id)
# FROM deal_risks dr
# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id
# WHERE dr.opportunity_id = opp.id
# AND dr.is_active = 1
# AND gdrt.is_enabled = 1)
DESC
LIMIT 25
# OFFSET 0
;
select * from crm_fields where crm_configuration_id = 1 and object_type = 'opportunity';
select * from crm_layout_entities where crm_layout_id = 1493;
SELECT * FROM opportunities WHERE id = 4584045;
SELECT * FROM crm_field_data WHERE object_id = 4584045;
SELECT * FROM opportunities where team_id = 1 and crm_provider_id = '0061K00000lfb9IQAQ'
SELECT
opp.id as opportunity_id,
opp.name,
COUNT(dr.id) as risk_count
FROM opportunities opp
LEFT JOIN deal_risks dr ON dr.opportunity_id = opp.id
WHERE opp.id IN (
6069574,8900938,9507638,9524799,9660490,9662824,9705675,9749758,4158460,4391812,6450439,4448422,5118945,5590675,4584045,7228149,9002408,9165534,9446720,9641778,9665149,9703344,9709280,5747948,4158491,6182565,6263970,5798120,5111315,4536978,6062352,6548383,6072095,6548225,4480986,5011422,6548381,8760540,8917554,9509986,9514392,9569009,9569011,9578490,9713604,5784397,7276612,7288405,8994421,9118219,9608148,9818911,4510535,6479693,5958049,6271674,6550448,4158331,4158483,6126571,6171615,6540943,4897466,5190896,5796182,5932762,8572433,8723698,8892697,9711001,9789264,4549188,6100831,6170064,6260799,6263653,6449936,6530871,6538978,7777651,8059269,8319918,8787049,8901150,9263153,9453207,9514738,9696700,9791062,5752018,6421452,7439134,7878923,9354763,9369285,9514396,9582506,9889949,9890216,4094311,4158495,4158496,6098128,5585661,3872564,6442149,5891604,6164746,6199593,6583474,6519684,9018490,9809006,4496897,5041324,5829430,6198319,6253504,6555763,7242914,7931055,8024125,8797814,8058559,8673347,8892695,8994420,9616219,9714970,9722004,9809439,9818918,6523177,8134147,9002915,9711422,9892713,9901719,9954210,9978435,5800810,6243518,6416114,6222251,6411974,6512456,5791953,6545606,9914780,5805540,6238986,6463838,6547680,9767049,9809437,9810885,9890855,6673493,9902036,4335521,6379871,6503799,6546077,8018765,9907556,9958433,9905855,9916179,9946741,9957877,5563344,6271838,6450815,7641128,7762567,7780592,8684810,8685786,8685787,8685788
)
GROUP BY opp.id;
SELECT COUNT(dr.id)
FROM deal_risks dr
JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id
WHERE dr.opportunity_id = 5563344
# AND gdrt.group_id = usr.group_id
EXPLAIN SELECT
opp.id as opp_id, opp.uuid, opp.name,
cfd.value,
cfv.sequence,
cfv.value,
# MAX(cfd.value) AS max_cfd_value,
usr.name AS owner_name,
opp.value, opp.currency_code, opp.close_date, opp.remotely_created_at, opp.is_closed, opp.is_won,
usr.uuid as owner_uuid,
usr.photo_path as owner_photo,
usr.id AS owner_id,
jt.name as owner_job,
opp.stage_id, opp.stage_updated_at,
acc.name AS acc_name, opp.stage_updated_at, acc.crm_provider_id AS acc_provider_id, opp.crm_provider_id AS opp_provider_id,
rt.business_process_id AS pipeline_id
FROM opportunities opp
LEFT JOIN record_types rt ON opp.record_type_id = rt.id
LEFT JOIN users usr ON opp.user_id = usr.id
LEFT JOIN accounts acc ON opp.account_id = acc.id
LEFT JOIN job_titles jt ON usr.job_title_id = jt.id
LEFT JOIN crm_field_data cfd ON cfd.id = (SELECT sub_cfd.id
FROM crm_field_data sub_cfd
WHERE sub_cfd.object_id = opp.id
AND sub_cfd.crm_field_id = 66810
ORDER BY sub_cfd.updated_at DESC
LIMIT 1)
LEFT JOIN crm_field_values cfv ON cfv.crm_field_id = 66810 AND cfv.value = cfd.value
WHERE opp.user_id IS NOT NULL
AND opp.deleted_at IS NULL
AND opp.is_closed = 0
# AND opp.is_closed = 1
# AND opp.is_won = 0
AND opp.close_date >= '2024-01-01 00:00:00'
AND opp.close_date <= '2024-12-31 23:59:59'
AND usr.team_id = 1
# and opp.id = 4823179
# GROUP BY opp.id
ORDER BY
cfv.sequence DESC,
# opp.name
# owner_name
cfd.value
# CAST(cfd.value AS UNSIGNED)
# CAST(MAX(cfd.value) AS UNSIGNED)
# (SELECT COUNT(dr.id)
# FROM deal_risks dr
# JOIN group_deal_risk_types gdrt ON dr.group_deal_risk_type_id = gdrt.id
# WHERE dr.opportunity_id = opp.id
# AND dr.is_active = 1 AND gdrt.is_enabled = 1)
DESC
# LIMIT 75, 25
;
SELECT * FROM crm_field_values WHERE crm_field_id = 66810;
SELECT f.id, f.crm_provider_id AS field_name, f.label, fd.object_id AS dealId, fd.value, fd.updated_at, fd.id, fd.created_at
FROM crm_fields f
INNER JOIN crm_field_data fd ON fd.crm_field_id = f.id
WHERE (f.crm_configuration_id = 1)
AND (f.object_type = 'opportunity')
# AND (fd.object_id IN (4158331,4158483,4158495,4158496,6069574,6263970,6171615,6540943,6545606,5829430,6198319,6263653,6548381,7242914,8797814,7228149,7439134,7878923,8134147,9002915,9118219,9165534,9354763,9369285,9446720))
AND (fd.object_id IN (4158460))
AND (f.crm_provider_id IN ('ForecastCategoryName'))
ORDER BY fd.object_id ASC, fd.updated_at DESC;
select * from crm_layouts where crm_configuration_id = 1;
select cf.* from crm_fields cf
join crm_layout_entities cle on cf.id = cle.crm_field_id
where crm_layout_id = 1493;
SELECT * FROM opportunities WHERE id = 4158460;
SELECT * FROM crm_field_data WHERE object_id = 4158460;
select * from users where team_id = 1;
SELECT * FROM users WHERE id = 7160;
select * from role_user where user_id = 3248;
select * from crm_field_values where crm_field_id = 66824;
SELECT * FROM users WHERE id = 23470;
select * from crm_configurations;
# [PASSWORD_DOTS]
select * from teams where id = 1038; # 23521, 966
select * from users where team_id = 1038;
select * from crm_configurations where id = 966;
SELECT * FROM activities WHERE uuid_to_bin('e8dc7c34-31f6-4430-bd81-2d9d8f00dd07') = uuid; # 54965762
SELECT * FROM activities WHERE uuid_to_bin('4b5727c0-69d1-428f-b8d9-b649055166e2') = uuid; # 54965764
SELECT * FROM participants WHERE activity_id = 54965764;
SELECT id, uuid, title, recording_state FROM activities WHERE uuid_to_bin('355f105d-5606-4379-b0c5-d91daf59f4ce') = uuid; # 54964075
SELECT * FROM participants WHERE activity_id = 54964075;
select f.id, slug, title, tf.team_id from team_features tf JOIN features f on tf.feature_id = f.id
where tf.team_id = 1038;
# [PASSWORD_DOTS] PD [PASSWORD_DOTS]
select * from teams where id = 1029;
SELECT * FROM crm_configurations WHERE id = 957;
SELECT * FROM activities WHERE uuid_to_bin('581a33cb-4343-44bd-ac0c-4a5cee71c5ec') = uuid; # 54963423
SELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433
SELECT * FROM activities WHERE uuid_to_bin('8b6bb2f7-e7a7-4aec-8806-fbfea7093ccd') = uuid; # 54963421
# [PASSWORD_DOTS] Close [PASSWORD_DOTS]
select * from teams where id = 1031;
SELECT * FROM crm_configurations WHERE id = 959;
SELECT * FROM activities WHERE uuid_to_bin('59c517e0-96c9-4dad-bfeb-b7bef72f8725') = uuid; # 54963517
SELECT * FROM activities WHERE uuid_to_bin('07238011-25fa-418e-838b-fb21e82b9ea2') = uuid; # 54963433
SELECT * FROM activities WHERE uuid_to_bin('d68311e3-ac34-49bd-bf04-88323a7e5352') = uuid; # 54966009
# [PASSWORD_DOTS] SF [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('2bd4cfa3-4eb5-4c77-84a7-9ed46a21c988') = uuid;
select * from roles;
select * from permissions;
select * from permission_role where permission_id = 136;
select * from migrations order by id desc;
select * from teams where id IN (1, 1037);
select * from crm_layouts where crm_configuration_id = 1;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 1493;
SELECT * FROM crm_fields WHERE id IN (1652,1661,66799,66814,66821,66836,66843,66846,66864,84752,182306,323580,380378);
select * from features;
select * from team_features where feature_id = 33;
select * from opportunities;
select * from teams;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1052 and sa.provider = 'hubspot';
SELECT * FROM accounts where id = 11512582;
select * from activities where account_id = 11512582;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
45454
|
NULL
|
NULL
|
NULL
|
|
16364
|
735
|
10
|
2026-05-11T08:46:30.966130+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778489190966_m2.jpg...
|
PhpStorm
|
faVsco.js – _ide_helper.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
/* @noinspection ALL */
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 12.33.0.
*
* This file should not be included in your code, only analyzed by your IDE!
*
* @author Barry vd. Heuvel <[EMAIL]>
* @see [URL_WITH_CREDENTIALS] string
* @static
*/
public static function inferBasePath()
{
return \Illuminate\Foundation\Application::inferBasePath();
}
/**
* Get the version number of the application.
*
* @return string
* @static
*/
public static function version()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->version();
}
/**
* Run the given array of bootstrap classes.
*
* @param string[] $bootstrappers
* @return void
* @static
*/
public static function bootstrapWith($bootstrappers)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->bootstrapWith($bootstrappers);
}
/**
* Register a callback to run after loading the environment.
*
* @param \Closure $callback
* @return void
* @static
*/
public static function afterLoadingEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterLoadingEnvironment($callback);
}
/**
* Register a callback to run before a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function beforeBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->beforeBootstrapping($bootstrapper, $callback);
}
/**
* Register a callback to run after a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function afterBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterBootstrapping($bootstrapper, $callback);
}
/**
* Determine if the application has been bootstrapped before.
*
* @return bool
* @static
*/
public static function hasBeenBootstrapped()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasBeenBootstrapped();
}
/**
* Set the base path for the application.
*
* @param string $basePath
* @return \Illuminate\Foundation\Application
* @static
*/
public static function setBasePath($basePath)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->setBasePath($basePath);
}
/**
* Get the path to the application "app" directory.
*
* @param string $path
* @return string
* @static
*/
public static function path($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->path($path);
}
/**
* Set the application directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useAppPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useAppPath($path);
}
/**
* Get the base path of the Laravel installation.
*
* @param string $path
* @return string
* @static
*/
public static function basePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->basePath($path);
}
/**
* Get the path to the bootstrap directory.
*
* @param string $path
* @return string
* @static
*/
public static function bootstrapPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bootstrapPath($path);
}
/**
* Get the path to the service provider list in the bootstrap directory.
*
* @return string
* @static
*/
public static function getBootstrapProvidersPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getBootstrapProvidersPath();
}
/**
* Set the bootstrap file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useBootstrapPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useBootstrapPath($path);
}
/**
* Get the path to the application configuration files.
*
* @param string $path
* @return string
* @static
*/
public static function configPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configPath($path);
}
/**
* Set the configuration directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useConfigPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useConfigPath($path);
}
/**
* Get the path to the database directory.
*
* @param string $path
* @return string
* @static
*/
public static function databasePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->databasePath($path);
}
/**
* Set the database directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useDatabasePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useDatabasePath($path);
}
/**
* Get the path to the language files.
*
* @param string $path
* @return string
* @static
*/
public static function langPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->langPath($path);
}
/**
* Set the language file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useLangPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useLangPath($path);
}
/**
* Get the path to the public / web directory.
*
* @param string $path
* @return string
* @static
*/
public static function publicPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->publicPath($path);
}
/**
* Set the public / web directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function usePublicPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->usePublicPath($path);
}
/**
* Get the path to the storage directory.
*
* @param string $path
* @return string
* @static
*/
public static function storagePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->storagePath($path);
}
/**
* Set the storage directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useStoragePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useStoragePath($path);
}
/**
* Get the path to the resources directory.
*
* @param string $path
* @return string
* @static
*/
public static function resourcePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resourcePath($path);
}
/**
* Get the path to the views directory.
*
* This method returns the first configured path in the array of view paths.
*
* @param string $path
* @return string
* @static
*/
public static function viewPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->viewPath($path);
}
/**
* Join the given paths together.
*
* @param string $basePath
* @param string $path
* @return string
* @static
*/
public static function joinPaths($basePath, $path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->joinPaths($basePath, $path);
}
/**
* Get the path to the environment file directory.
*
* @return string
* @static
*/
public static function environmentPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentPath();
}
/**
* Set the directory for the environment file.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useEnvironmentPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useEnvironmentPath($path);
}
/**
* Set the environment file to be loaded during bootstrapping.
*
* @param string $file
* @return \Illuminate\Foundation\Application
* @static
*/
public static function loadEnvironmentFrom($file)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->loadEnvironmentFrom($file);
}
/**
* Get the environment file the application is using.
*
* @return string
* @static
*/
public static function environmentFile()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFile();
}
/**
* Get the fully qualified path to the environment file.
*
* @return string
* @static
*/
public static function environmentFilePath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFilePath();
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
* @static
*/
public static function environment(...$environments)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environment(...$environments);
}
/**
* Determine if the application is in the local environment.
*
* @return bool
* @static
*/
public static function isLocal()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocal();
}
/**
* Determine if the application is in the production environment.
*
* @return bool
* @static
*/
public static function isProduction()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isProduction();
}
/**
* Detect the application's current environment.
*
* @param \Closure $callback
* @return string
* @static
*/
public static function detectEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->detectEnvironment($callback);
}
/**
* Determine if the application is running in the console.
*
* @return bool
* @static
*/
public static function runningInConsole()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningInConsole();
}
/**
* Determine if the application is running any of the given console commands.
*
* @param string|array $commands
* @return bool
* @static
*/
public static function runningConsoleCommand(...$commands)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningConsoleCommand(...$commands);
}
/**
* Determine if the application is running unit tests.
*
* @return bool
* @static
*/
public static function runningUnitTests()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningUnitTests();
}
/**
* Determine if the application is running with debug mode enabled.
*
* @return bool
* @static
*/
public static function hasDebugModeEnabled()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasDebugModeEnabled();
}
/**
* Register a new registered listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function registered($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registered($callback);
}
/**
* Register all of the configured providers.
*
* @return void
* @static
*/
public static function registerConfiguredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerConfiguredProviders();
}
/**
* Register a service provider with the application.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function register($provider, $force = false)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->register($provider, $force);
}
/**
* Get the registered service provider instance if it exists.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return \Illuminate\Support\ServiceProvider|null
* @static
*/
public static function getProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProvider($provider);
}
/**
* Get the registered service provider instances if any exist.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return array
* @static
*/
public static function getProviders($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProviders($provider);
}
/**
* Resolve a service provider instance from the class name.
*
* @param string $provider
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function resolveProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolveProvider($provider);
}
/**
* Load and boot all of the remaining deferred providers.
*
* @return void
* @static
*/
public static function loadDeferredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProviders();
}
/**
* Load the provider for a deferred service.
*
* @param string $service
* @return void
* @static
*/
public static function loadDeferredProvider($service)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProvider($service);
}
/**
* Register a deferred provider and service.
*
* @param string $provider
* @param string|null $service
* @return void
* @static
*/
public static function registerDeferredProvider($provider, $service = null)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerDeferredProvider($provider, $service);
}
/**
* Resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function make($abstract, $parameters = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->make($abstract, $parameters);
}
/**
* Determine if the given abstract type has been bound.
*
* @param string $abstract
* @return bool
* @static
*/
public static function bound($abstract)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bound($abstract);
}
/**
* Determine if the application has booted.
*
* @return bool
* @static
*/
public static function isBooted()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isBooted();
}
/**
* Boot the application's service providers.
*
* @return void
* @static
*/
public static function boot()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->boot();
}
/**
* Register a new boot listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booting($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booting($callback);
}
/**
* Register a new "booted" listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booted($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booted($callback);
}
/**
* {@inheritdoc}
*
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function handle($request, $type = 1, $catch = true)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handle($request, $type, $catch);
}
/**
* Handle the incoming HTTP request and send the response to the browser.
*
* @param \Illuminate\Http\Request $request
* @return void
* @static
*/
public static function handleRequest($request)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->handleRequest($request);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
* @static
*/
public static function handleCommand($input)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handleCommand($input);
}
/**
* Determine if the framework's base configuration should be merged.
*
* @return bool
* @static
*/
public static function shouldMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldMergeFrameworkConfiguration();
}
/**
* Indicate that the framework's base configuration should not be merged.
*
* @return \Illuminate\Foundation\Application
* @static
*/
public static function dontMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->dontMergeFrameworkConfiguration();
}
/**
* Determine if middleware has been disabled for the application.
*
* @return bool
* @static
*/
public static function shouldSkipMiddleware()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldSkipMiddleware();
}
/**
* Get the path to the cached services.php file.
*
* @return string
* @static
*/
public static function getCachedServicesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedServicesPath();
}
/**
* Get the path to the cached packages.php file.
*
* @return string
* @static
*/
public static function getCachedPackagesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedPackagesPath();
}
/**
* Determine if the application configuration is cached.
*
* @return bool
* @static
*/
public static function configurationIsCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configurationIsCached();
}
/**
* Get the path to the configuration cache file.
*
* @return string
* @static
*/
public static function getCachedConfigPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedConfigPath();
}
/**
* Determine if the application routes are cached.
*
* @return bool
* @static
*/
public static function routesAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->routesAreCached();
}
/**
* Get the path to the routes cache file.
*
* @return string
* @static
*/
public static function getCachedRoutesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedRoutesPath();
}
/**
* Determine if the application events are cached.
*
* @return bool
* @static
*/
public static function eventsAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->eventsAreCached();
}
/**
* Get the path to the events cache file.
*
* @return string
* @static
*/
public static function getCachedEventsPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedEventsPath();
}
/**
* Add new prefix to list of absolute path prefixes.
*
* @param string $prefix
* @return \Illuminate\Foundation\Application
* @static
*/
public static function addAbsoluteCachePathPrefix($prefix)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->addAbsoluteCachePathPrefix($prefix);
}
/**
* Get an instance of the maintenance mode manager implementation.
*
* @return \Illuminate\Contracts\Foundation\MaintenanceMode
* @static
*/
public static function maintenanceMode()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->maintenanceMode();
}
/**
* Determine if the application is currently down for maintenance.
*
* @return bool
* @static
*/
public static function isDownForMaintenance()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDownForMaintenance();
}
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return never
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
* @static
*/
public static function abort($code, $message = '', $headers = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->abort($code, $message, $headers);
}
/**
* Register a terminating callback with the application.
*
* @param callable|string $callback
* @return \Illuminate\Foundation\Application
* @static
*/
public static function terminating($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->terminating($callback);
}
/**
* Terminate the application.
*
* @return void
* @static
*/
public static function terminate()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->terminate();
}
/**
* Get the service providers that have been loaded.
*
* @return array<string, bool>
* @static
*/
public static function getLoadedProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLoadedProviders();
}
/**
* Determine if the given service provider is loaded.
*
* @param string $provider
* @return bool
* @static
*/
public static function providerIsLoaded($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->providerIsLoaded($provider);
}
/**
* Get the application's deferred services.
*
* @return array
* @static
*/
public static function getDeferredServices()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getDeferredServices();
}
/**
* Set the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function setDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setDeferredServices($services);
}
/**
* Determine if the given service is a deferred service.
*
* @param string $service
* @return bool
* @static
*/
public static function isDeferredService($service)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDeferredService($service);
}
/**
* Add an array of services to the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function addDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->addDeferredServices($services);
}
/**
* Remove an array of services from the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function removeDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->removeDeferredServices($services);
}
/**
* Configure the real-time facade namespace.
*
* @param string $namespace
* @return void
* @static
*/
public static function provideFacades($namespace)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->provideFacades($namespace);
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function getLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLocale();
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function currentLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->currentLocale();
}
/**
* Get the current application fallback locale.
*
* @return string
* @static
*/
public static function getFallbackLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getFallbackLocale();
}
/**
* Set the current application locale.
*
* @param string $locale
* @return void
* @static
*/
public static function setLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setLocale($locale);
}
/**
* Set the current application fallback locale.
*
* @param string $fallbackLocale
* @return void
* @static
*/
public static function setFallbackLocale($fallbackLocale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setFallbackLocale($fallbackLocale);
}
/**
* Determine if the application locale is the given locale.
*
* @param string $locale
* @return bool
* @static
*/
public static function isLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocale($locale);
}
/**
* Register the core class aliases in the container.
*
* @return void
* @static
*/
public static function registerCoreContainerAliases()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerCoreContainerAliases();
}
/**
* Flush the container of all bindings and resolved instances.
*
* @return void
* @static
*/
public static function flush()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->flush();
}
/**
* Get the application namespace.
*
* @return string
* @throws \RuntimeException
* @static
*/
public static function getNamespace()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getNamespace();
}
/**
* Define a contextual binding.
*
* @param array|string $concrete
* @return \Illuminate\Contracts\Container\ContextualBindingBuilder
* @static
*/
public static function when($concrete)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->when($concrete);
}
/**
* Define a contextual binding based on an attribute.
*
* @param string $attribute
* @param \Closure $handler
* @return void
* @static
*/
public static function whenHasAttribute($attribute, $handler)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->whenHasAttribute($attribute, $handler);
}
/**
* Returns true if the container can return an entry for the given identifier.
*
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
*
* @return bool
* @param string $id Identifier of the entry to look for.
* @return bool
* @static
*/
public static function has($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->has($id);
}
/**
* Determine if the given abstract type has been resolved.
*
* @param string $abstract
* @return bool
* @static
*/
public static function resolved($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolved($abstract);
}
/**
* Determine if a given type is shared.
*
* @param string $abstract
* @return bool
* @static
*/
public static function isShared($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isShared($abstract);
}
/**
* Determine if a given string is an alias.
*
* @param string $name
* @return bool
* @static
*/
public static function isAlias($name)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isAlias($name);
}
/**
* Register a binding with the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @throws \TypeError
* @throws ReflectionException
* @static
*/
public static function bind($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bind($abstract, $concrete, $shared);
}
/**
* Determine if the container has a method binding.
*
* @param string $method
* @return bool
* @static
*/
public static function hasMethodBinding($method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasMethodBinding($method);
}
/**
* Bind a callback to resolve with Container::call.
*
* @param array|string $method
* @param \Closure $callback
* @return void
* @static
*/
public static function bindMethod($method, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindMethod($method, $callback);
}
/**
* Get the method binding for the given method.
*
* @param string $method
* @param mixed $instance
* @return mixed
* @static
*/
public static function callMethodBinding($method, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->callMethodBinding($method, $instance);
}
/**
* Add a contextual binding to the container.
*
* @param string $concrete
* @param \Closure|string $abstract
* @param \Closure|string $implementation
* @return void
* @static
*/
public static function addContextualBinding($concrete, $abstract, $implementation)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->addContextualBinding($concrete, $abstract, $implementation);
}
/**
* Register a binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @static
*/
public static function bindIf($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindIf($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singleton($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singleton($abstract, $concrete);
}
/**
* Register a shared binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singletonIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singletonIf($abstract, $concrete);
}
/**
* Register a scoped binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scoped($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scoped($abstract, $concrete);
}
/**
* Register a scoped binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scopedIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scopedIf($abstract, $concrete);
}
/**
* "Extend" an abstract type in the container.
*
* @param string $abstract
* @param \Closure $closure
* @return void
* @throws \InvalidArgumentException
* @static
*/
public static function extend($abstract, $closure)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->extend($abstract, $closure);
}
/**
* Register an existing instance as shared in the container.
*
* @template TInstance of mixed
* @param string $abstract
* @param TInstance $instance
* @return TInstance
* @static
*/
public static function instance($abstract, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->instance($abstract, $instance);
}
/**
* Assign a set of tags to a given binding.
*
* @param array|string $abstracts
* @param mixed $tags
* @return void
* @static
*/
public static function tag($abstracts, $tags)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->tag($abstracts, $tags);
}
/**
* Resolve all of the bindings for a given tag.
*
* @param string $tag
* @return iterable
* @static
*/
public static function tagged($tag)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->tagged($tag);
}
/**
* Alias a type to a different name.
*
* @param string $abstract
* @param string $alias
* @return void
* @throws \LogicException
* @static
*/
public static function alias($abstract, $alias)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->alias($abstract, $alias);
}
/**
* Bind a new callback to an abstract's rebind event.
*
* @param string $abstract
* @param \Closure $callback
* @return mixed
* @static
*/
public static function rebinding($abstract, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->rebinding($abstract, $callback);
}
/**
* Refresh an instance on the given target and method.
*
* @param string $abstract
* @param mixed $target
* @param string $method
* @return mixed
* @static
*/
public static function refresh($abstract, $target, $method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->refresh($abstract, $target, $method);
}
/**
* Wrap the given closure such that its dependencies will be injected when executed.
*
* @param \Closure $callback
* @param array $parameters
* @return \Closure
* @static
*/
public static function wrap($callback, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->wrap($callback, $parameters);
}
/**
* Call the given Closure / class@method and inject its dependencies.
*
* @param callable|string $callback
* @param array<string, mixed> $parameters
* @param string|null $defaultMethod
* @return mixed
* @throws \InvalidArgumentException
* @static
*/
public static function call($callback, $parameters = [], $defaultMethod = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->call($callback, $parameters, $defaultMethod);
}
/**
* Get a closure to resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @return ($abstract is class-string<TClass> ? \Closure(): TClass : \Closure(): mixed)
* @static
*/
public static function factory($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->factory($abstract);
}
/**
* An alias function name for make().
*
* @template TClass of object
* @param string|class-string<TClass>|callable $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function makeWith($abstract, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->makeWith($abstract, $parameters);
}
/**
* {@inheritdoc}
*
* @template TClass of object
* @param string|class-string<TClass> $id
* @return ($id is class-string<TClass> ? TClass : mixed)
* @static
*/
public static function get($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20725-handle-HS-search-rate-limit, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09541223,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20725-handle-HS-search-rate-limit","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n/* @noinspection ALL */\n// @formatter:off\n// phpcs:ignoreFile\n\n/**\n * A helper file for Laravel, to provide autocomplete information to your IDE\n * Generated for Laravel 12.33.0.\n *\n * This file should not be included in your code, only analyzed by your IDE!\n *\n * @author Barry vd. Heuvel <barryvdh@gmail.com>\n * @see https://github.com/barryvdh/laravel-ide-helper\n */\nnamespace Illuminate\\Support\\Facades {\n /**\n * @see \\Illuminate\\Foundation\\Application\n */\n class App {\n /**\n * Begin configuring a new Laravel application instance.\n *\n * @param string|null $basePath\n * @return \\Illuminate\\Foundation\\Configuration\\ApplicationBuilder\n * @static\n */\n public static function configure($basePath = null)\n {\n return \\Illuminate\\Foundation\\Application::configure($basePath);\n }\n\n /**\n * Infer the application's base directory from the environment.\n *\n * @return string\n * @static\n */\n public static function inferBasePath()\n {\n return \\Illuminate\\Foundation\\Application::inferBasePath();\n }\n\n /**\n * Get the version number of the application.\n *\n * @return string\n * @static\n */\n public static function version()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->version();\n }\n\n /**\n * Run the given array of bootstrap classes.\n *\n * @param string[] $bootstrappers\n * @return void\n * @static\n */\n public static function bootstrapWith($bootstrappers)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bootstrapWith($bootstrappers);\n }\n\n /**\n * Register a callback to run after loading the environment.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterLoadingEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterLoadingEnvironment($callback);\n }\n\n /**\n * Register a callback to run before a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function beforeBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Register a callback to run after a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Determine if the application has been bootstrapped before.\n *\n * @return bool\n * @static\n */\n public static function hasBeenBootstrapped()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasBeenBootstrapped();\n }\n\n /**\n * Set the base path for the application.\n *\n * @param string $basePath\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function setBasePath($basePath)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->setBasePath($basePath);\n }\n\n /**\n * Get the path to the application \"app\" directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->path($path);\n }\n\n /**\n * Set the application directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useAppPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useAppPath($path);\n }\n\n /**\n * Get the base path of the Laravel installation.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->basePath($path);\n }\n\n /**\n * Get the path to the bootstrap directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function bootstrapPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bootstrapPath($path);\n }\n\n /**\n * Get the path to the service provider list in the bootstrap directory.\n *\n * @return string\n * @static\n */\n public static function getBootstrapProvidersPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBootstrapProvidersPath();\n }\n\n /**\n * Set the bootstrap file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useBootstrapPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useBootstrapPath($path);\n }\n\n /**\n * Get the path to the application configuration files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function configPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configPath($path);\n }\n\n /**\n * Set the configuration directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useConfigPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useConfigPath($path);\n }\n\n /**\n * Get the path to the database directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function databasePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->databasePath($path);\n }\n\n /**\n * Set the database directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useDatabasePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useDatabasePath($path);\n }\n\n /**\n * Get the path to the language files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function langPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->langPath($path);\n }\n\n /**\n * Set the language file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useLangPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useLangPath($path);\n }\n\n /**\n * Get the path to the public / web directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function publicPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->publicPath($path);\n }\n\n /**\n * Set the public / web directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function usePublicPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->usePublicPath($path);\n }\n\n /**\n * Get the path to the storage directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function storagePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->storagePath($path);\n }\n\n /**\n * Set the storage directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useStoragePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useStoragePath($path);\n }\n\n /**\n * Get the path to the resources directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function resourcePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resourcePath($path);\n }\n\n /**\n * Get the path to the views directory.\n * \n * This method returns the first configured path in the array of view paths.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function viewPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->viewPath($path);\n }\n\n /**\n * Join the given paths together.\n *\n * @param string $basePath\n * @param string $path\n * @return string\n * @static\n */\n public static function joinPaths($basePath, $path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->joinPaths($basePath, $path);\n }\n\n /**\n * Get the path to the environment file directory.\n *\n * @return string\n * @static\n */\n public static function environmentPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentPath();\n }\n\n /**\n * Set the directory for the environment file.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useEnvironmentPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useEnvironmentPath($path);\n }\n\n /**\n * Set the environment file to be loaded during bootstrapping.\n *\n * @param string $file\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function loadEnvironmentFrom($file)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->loadEnvironmentFrom($file);\n }\n\n /**\n * Get the environment file the application is using.\n *\n * @return string\n * @static\n */\n public static function environmentFile()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFile();\n }\n\n /**\n * Get the fully qualified path to the environment file.\n *\n * @return string\n * @static\n */\n public static function environmentFilePath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFilePath();\n }\n\n /**\n * Get or check the current application environment.\n *\n * @param string|array $environments\n * @return string|bool\n * @static\n */\n public static function environment(...$environments)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environment(...$environments);\n }\n\n /**\n * Determine if the application is in the local environment.\n *\n * @return bool\n * @static\n */\n public static function isLocal()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocal();\n }\n\n /**\n * Determine if the application is in the production environment.\n *\n * @return bool\n * @static\n */\n public static function isProduction()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isProduction();\n }\n\n /**\n * Detect the application's current environment.\n *\n * @param \\Closure $callback\n * @return string\n * @static\n */\n public static function detectEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->detectEnvironment($callback);\n }\n\n /**\n * Determine if the application is running in the console.\n *\n * @return bool\n * @static\n */\n public static function runningInConsole()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningInConsole();\n }\n\n /**\n * Determine if the application is running any of the given console commands.\n *\n * @param string|array $commands\n * @return bool\n * @static\n */\n public static function runningConsoleCommand(...$commands)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningConsoleCommand(...$commands);\n }\n\n /**\n * Determine if the application is running unit tests.\n *\n * @return bool\n * @static\n */\n public static function runningUnitTests()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningUnitTests();\n }\n\n /**\n * Determine if the application is running with debug mode enabled.\n *\n * @return bool\n * @static\n */\n public static function hasDebugModeEnabled()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasDebugModeEnabled();\n }\n\n /**\n * Register a new registered listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function registered($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registered($callback);\n }\n\n /**\n * Register all of the configured providers.\n *\n * @return void\n * @static\n */\n public static function registerConfiguredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerConfiguredProviders();\n }\n\n /**\n * Register a service provider with the application.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @param bool $force\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function register($provider, $force = false)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->register($provider, $force);\n }\n\n /**\n * Get the registered service provider instance if it exists.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return \\Illuminate\\Support\\ServiceProvider|null\n * @static\n */\n public static function getProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProvider($provider);\n }\n\n /**\n * Get the registered service provider instances if any exist.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return array\n * @static\n */\n public static function getProviders($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProviders($provider);\n }\n\n /**\n * Resolve a service provider instance from the class name.\n *\n * @param string $provider\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function resolveProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveProvider($provider);\n }\n\n /**\n * Load and boot all of the remaining deferred providers.\n *\n * @return void\n * @static\n */\n public static function loadDeferredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProviders();\n }\n\n /**\n * Load the provider for a deferred service.\n *\n * @param string $service\n * @return void\n * @static\n */\n public static function loadDeferredProvider($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProvider($service);\n }\n\n /**\n * Register a deferred provider and service.\n *\n * @param string $provider\n * @param string|null $service\n * @return void\n * @static\n */\n public static function registerDeferredProvider($provider, $service = null)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerDeferredProvider($provider, $service);\n }\n\n /**\n * Resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function make($abstract, $parameters = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->make($abstract, $parameters);\n }\n\n /**\n * Determine if the given abstract type has been bound.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function bound($abstract)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bound($abstract);\n }\n\n /**\n * Determine if the application has booted.\n *\n * @return bool\n * @static\n */\n public static function isBooted()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isBooted();\n }\n\n /**\n * Boot the application's service providers.\n *\n * @return void\n * @static\n */\n public static function boot()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->boot();\n }\n\n /**\n * Register a new boot listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booting($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booting($callback);\n }\n\n /**\n * Register a new \"booted\" listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booted($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booted($callback);\n }\n\n /**\n * {@inheritdoc}\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function handle($request, $type = 1, $catch = true)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handle($request, $type, $catch);\n }\n\n /**\n * Handle the incoming HTTP request and send the response to the browser.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function handleRequest($request)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->handleRequest($request);\n }\n\n /**\n * Handle the incoming Artisan command.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @return int\n * @static\n */\n public static function handleCommand($input)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handleCommand($input);\n }\n\n /**\n * Determine if the framework's base configuration should be merged.\n *\n * @return bool\n * @static\n */\n public static function shouldMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldMergeFrameworkConfiguration();\n }\n\n /**\n * Indicate that the framework's base configuration should not be merged.\n *\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function dontMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->dontMergeFrameworkConfiguration();\n }\n\n /**\n * Determine if middleware has been disabled for the application.\n *\n * @return bool\n * @static\n */\n public static function shouldSkipMiddleware()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldSkipMiddleware();\n }\n\n /**\n * Get the path to the cached services.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedServicesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedServicesPath();\n }\n\n /**\n * Get the path to the cached packages.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedPackagesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedPackagesPath();\n }\n\n /**\n * Determine if the application configuration is cached.\n *\n * @return bool\n * @static\n */\n public static function configurationIsCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configurationIsCached();\n }\n\n /**\n * Get the path to the configuration cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedConfigPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedConfigPath();\n }\n\n /**\n * Determine if the application routes are cached.\n *\n * @return bool\n * @static\n */\n public static function routesAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->routesAreCached();\n }\n\n /**\n * Get the path to the routes cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedRoutesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedRoutesPath();\n }\n\n /**\n * Determine if the application events are cached.\n *\n * @return bool\n * @static\n */\n public static function eventsAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->eventsAreCached();\n }\n\n /**\n * Get the path to the events cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedEventsPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedEventsPath();\n }\n\n /**\n * Add new prefix to list of absolute path prefixes.\n *\n * @param string $prefix\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function addAbsoluteCachePathPrefix($prefix)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->addAbsoluteCachePathPrefix($prefix);\n }\n\n /**\n * Get an instance of the maintenance mode manager implementation.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\MaintenanceMode\n * @static\n */\n public static function maintenanceMode()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->maintenanceMode();\n }\n\n /**\n * Determine if the application is currently down for maintenance.\n *\n * @return bool\n * @static\n */\n public static function isDownForMaintenance()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDownForMaintenance();\n }\n\n /**\n * Throw an HttpException with the given data.\n *\n * @param int $code\n * @param string $message\n * @param array $headers\n * @return never\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\HttpException\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException\n * @static\n */\n public static function abort($code, $message = '', $headers = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->abort($code, $message, $headers);\n }\n\n /**\n * Register a terminating callback with the application.\n *\n * @param callable|string $callback\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function terminating($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->terminating($callback);\n }\n\n /**\n * Terminate the application.\n *\n * @return void\n * @static\n */\n public static function terminate()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->terminate();\n }\n\n /**\n * Get the service providers that have been loaded.\n *\n * @return array<string, bool>\n * @static\n */\n public static function getLoadedProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLoadedProviders();\n }\n\n /**\n * Determine if the given service provider is loaded.\n *\n * @param string $provider\n * @return bool\n * @static\n */\n public static function providerIsLoaded($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->providerIsLoaded($provider);\n }\n\n /**\n * Get the application's deferred services.\n *\n * @return array\n * @static\n */\n public static function getDeferredServices()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getDeferredServices();\n }\n\n /**\n * Set the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function setDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setDeferredServices($services);\n }\n\n /**\n * Determine if the given service is a deferred service.\n *\n * @param string $service\n * @return bool\n * @static\n */\n public static function isDeferredService($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDeferredService($service);\n }\n\n /**\n * Add an array of services to the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function addDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addDeferredServices($services);\n }\n\n /**\n * Remove an array of services from the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function removeDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->removeDeferredServices($services);\n }\n\n /**\n * Configure the real-time facade namespace.\n *\n * @param string $namespace\n * @return void\n * @static\n */\n public static function provideFacades($namespace)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->provideFacades($namespace);\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLocale();\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function currentLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentLocale();\n }\n\n /**\n * Get the current application fallback locale.\n *\n * @return string\n * @static\n */\n public static function getFallbackLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getFallbackLocale();\n }\n\n /**\n * Set the current application locale.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Set the current application fallback locale.\n *\n * @param string $fallbackLocale\n * @return void\n * @static\n */\n public static function setFallbackLocale($fallbackLocale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setFallbackLocale($fallbackLocale);\n }\n\n /**\n * Determine if the application locale is the given locale.\n *\n * @param string $locale\n * @return bool\n * @static\n */\n public static function isLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocale($locale);\n }\n\n /**\n * Register the core class aliases in the container.\n *\n * @return void\n * @static\n */\n public static function registerCoreContainerAliases()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerCoreContainerAliases();\n }\n\n /**\n * Flush the container of all bindings and resolved instances.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->flush();\n }\n\n /**\n * Get the application namespace.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Define a contextual binding.\n *\n * @param array|string $concrete\n * @return \\Illuminate\\Contracts\\Container\\ContextualBindingBuilder\n * @static\n */\n public static function when($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->when($concrete);\n }\n\n /**\n * Define a contextual binding based on an attribute.\n *\n * @param string $attribute\n * @param \\Closure $handler\n * @return void\n * @static\n */\n public static function whenHasAttribute($attribute, $handler)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->whenHasAttribute($attribute, $handler);\n }\n\n /**\n * Returns true if the container can return an entry for the given identifier.\n * \n * Returns false otherwise.\n * \n * `has($id)` returning true does not mean that `get($id)` will not throw an exception.\n * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.\n *\n * @return bool\n * @param string $id Identifier of the entry to look for.\n * @return bool\n * @static\n */\n public static function has($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->has($id);\n }\n\n /**\n * Determine if the given abstract type has been resolved.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function resolved($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolved($abstract);\n }\n\n /**\n * Determine if a given type is shared.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function isShared($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isShared($abstract);\n }\n\n /**\n * Determine if a given string is an alias.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function isAlias($name)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isAlias($name);\n }\n\n /**\n * Register a binding with the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @throws \\TypeError\n * @throws ReflectionException\n * @static\n */\n public static function bind($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bind($abstract, $concrete, $shared);\n }\n\n /**\n * Determine if the container has a method binding.\n *\n * @param string $method\n * @return bool\n * @static\n */\n public static function hasMethodBinding($method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasMethodBinding($method);\n }\n\n /**\n * Bind a callback to resolve with Container::call.\n *\n * @param array|string $method\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function bindMethod($method, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindMethod($method, $callback);\n }\n\n /**\n * Get the method binding for the given method.\n *\n * @param string $method\n * @param mixed $instance\n * @return mixed\n * @static\n */\n public static function callMethodBinding($method, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->callMethodBinding($method, $instance);\n }\n\n /**\n * Add a contextual binding to the container.\n *\n * @param string $concrete\n * @param \\Closure|string $abstract\n * @param \\Closure|string $implementation\n * @return void\n * @static\n */\n public static function addContextualBinding($concrete, $abstract, $implementation)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addContextualBinding($concrete, $abstract, $implementation);\n }\n\n /**\n * Register a binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @static\n */\n public static function bindIf($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindIf($abstract, $concrete, $shared);\n }\n\n /**\n * Register a shared binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singleton($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singleton($abstract, $concrete);\n }\n\n /**\n * Register a shared binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singletonIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singletonIf($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scoped($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scoped($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scopedIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scopedIf($abstract, $concrete);\n }\n\n /**\n * \"Extend\" an abstract type in the container.\n *\n * @param string $abstract\n * @param \\Closure $closure\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function extend($abstract, $closure)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->extend($abstract, $closure);\n }\n\n /**\n * Register an existing instance as shared in the container.\n *\n * @template TInstance of mixed\n * @param string $abstract\n * @param TInstance $instance\n * @return TInstance\n * @static\n */\n public static function instance($abstract, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->instance($abstract, $instance);\n }\n\n /**\n * Assign a set of tags to a given binding.\n *\n * @param array|string $abstracts\n * @param mixed $tags\n * @return void\n * @static\n */\n public static function tag($abstracts, $tags)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->tag($abstracts, $tags);\n }\n\n /**\n * Resolve all of the bindings for a given tag.\n *\n * @param string $tag\n * @return iterable\n * @static\n */\n public static function tagged($tag)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->tagged($tag);\n }\n\n /**\n * Alias a type to a different name.\n *\n * @param string $abstract\n * @param string $alias\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function alias($abstract, $alias)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->alias($abstract, $alias);\n }\n\n /**\n * Bind a new callback to an abstract's rebind event.\n *\n * @param string $abstract\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function rebinding($abstract, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->rebinding($abstract, $callback);\n }\n\n /**\n * Refresh an instance on the given target and method.\n *\n * @param string $abstract\n * @param mixed $target\n * @param string $method\n * @return mixed\n * @static\n */\n public static function refresh($abstract, $target, $method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->refresh($abstract, $target, $method);\n }\n\n /**\n * Wrap the given closure such that its dependencies will be injected when executed.\n *\n * @param \\Closure $callback\n * @param array $parameters\n * @return \\Closure\n * @static\n */\n public static function wrap($callback, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->wrap($callback, $parameters);\n }\n\n /**\n * Call the given Closure / class@method and inject its dependencies.\n *\n * @param callable|string $callback\n * @param array<string, mixed> $parameters\n * @param string|null $defaultMethod\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function call($callback, $parameters = [], $defaultMethod = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->call($callback, $parameters, $defaultMethod);\n }\n\n /**\n * Get a closure to resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @return ($abstract is class-string<TClass> ? \\Closure(): TClass : \\Closure(): mixed)\n * @static\n */\n public static function factory($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->factory($abstract);\n }\n\n /**\n * An alias function name for make().\n *\n * @template TClass of object\n * @param string|class-string<TClass>|callable $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function makeWith($abstract, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->makeWith($abstract, $parameters);\n }\n\n /**\n * {@inheritdoc}\n *\n * @template TClass of object\n * @param string|class-string<TClass> $id\n * @return ($id is class-string<TClass> ? TClass : mixed)\n * @static\n */\n public static function get($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->get($id);\n }\n\n /**\n * Instantiate a concrete instance of the given type.\n *\n * @template TClass of object\n * @param \\Closure(static, array): TClass|class-string<TClass> $concrete\n * @return TClass\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @throws \\Illuminate\\Contracts\\Container\\CircularDependencyException\n * @static\n */\n public static function build($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->build($concrete);\n }\n\n /**\n * Resolve a dependency based on an attribute.\n *\n * @param \\ReflectionAttribute $attribute\n * @return mixed\n * @static\n */\n public static function resolveFromAttribute($attribute)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveFromAttribute($attribute);\n }\n\n /**\n * Register a new before resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function beforeResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeResolving($abstract, $callback);\n }\n\n /**\n * Register a new resolving callback.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function resolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function afterResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving attribute callback for all types.\n *\n * @param string $attribute\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterResolvingAttribute($attribute, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolvingAttribute($attribute, $callback);\n }\n\n /**\n * Fire all of the after resolving attribute callbacks.\n *\n * @param \\ReflectionAttribute[] $attributes\n * @param mixed $object\n * @return void\n * @static\n */\n public static function fireAfterResolvingAttributeCallbacks($attributes, $object)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->fireAfterResolvingAttributeCallbacks($attributes, $object);\n }\n\n /**\n * Get the name of the binding the container is currently resolving.\n *\n * @return class-string|string|null\n * @static\n */\n public static function currentlyResolving()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentlyResolving();\n }\n\n /**\n * Get the container's bindings.\n *\n * @return array\n * @static\n */\n public static function getBindings()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the alias for an abstract if available.\n *\n * @param string $abstract\n * @return string\n * @static\n */\n public static function getAlias($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getAlias($abstract);\n }\n\n /**\n * Remove all of the extender callbacks for a given type.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetExtenders($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetExtenders($abstract);\n }\n\n /**\n * Remove a resolved instance from the instance cache.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetInstance($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstance($abstract);\n }\n\n /**\n * Clear all of the instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstances();\n }\n\n /**\n * Clear all of the scoped instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetScopedInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetScopedInstances();\n }\n\n /**\n * Set the callback which determines the current container environment.\n *\n * @param (callable(array<int, string>|string): bool|string)|null $callback\n * @return void\n * @static\n */\n public static function resolveEnvironmentUsing($callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolveEnvironmentUsing($callback);\n }\n\n /**\n * Determine the environment for the container.\n *\n * @param array<int, string>|string $environments\n * @return bool\n * @static\n */\n public static function currentEnvironmentIs($environments)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentEnvironmentIs($environments);\n }\n\n /**\n * Get the globally available instance of the container.\n *\n * @return static\n * @static\n */\n public static function getInstance()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::getInstance();\n }\n\n /**\n * Set the shared instance of the container.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container|null $container\n * @return \\Illuminate\\Contracts\\Container\\Container|static\n * @static\n */\n public static function setInstance($container = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::setInstance($container);\n }\n\n /**\n * Determine if a given offset exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get the value at a given offset.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set the value at a given offset.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset the value at a given offset.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Application::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Application::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Application::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Application::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Console\\Kernel\n */\n class Artisan {\n /**\n * Re-route the Symfony command events to their Laravel counterparts.\n *\n * @internal\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function rerouteSymfonyCommandEvents()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->rerouteSymfonyCommandEvents();\n }\n\n /**\n * Run the console application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $output\n * @return int\n * @static\n */\n public static function handle($input, $output = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->handle($input, $output);\n }\n\n /**\n * Terminate the application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param int $status\n * @return void\n * @static\n */\n public static function terminate($input, $status)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->terminate($input, $status);\n }\n\n /**\n * Register a callback to be invoked when the command lifecycle duration exceeds a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param callable $handler\n * @return void\n * @static\n */\n public static function whenCommandLifecycleIsLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->whenCommandLifecycleIsLongerThan($threshold, $handler);\n }\n\n /**\n * When the command being handled started.\n *\n * @return \\Illuminate\\Support\\Carbon|null\n * @static\n */\n public static function commandStartedAt()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->commandStartedAt();\n }\n\n /**\n * Resolve a console schedule instance.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function resolveConsoleSchedule()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->resolveConsoleSchedule();\n }\n\n /**\n * Register a Closure based command with the application.\n *\n * @param string $signature\n * @param \\Closure $callback\n * @return \\Illuminate\\Foundation\\Console\\ClosureCommand\n * @static\n */\n public static function command($signature, $callback)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->command($signature, $callback);\n }\n\n /**\n * Register the given command with the console application.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command $command\n * @return void\n * @static\n */\n public static function registerCommand($command)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->registerCommand($command);\n }\n\n /**\n * Run an Artisan console command by name.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $outputBuffer\n * @return int\n * @throws \\Symfony\\Component\\Console\\Exception\\CommandNotFoundException\n * @static\n */\n public static function call($command, $parameters = [], $outputBuffer = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->call($command, $parameters, $outputBuffer);\n }\n\n /**\n * Queue the given console command.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Foundation\\Bus\\PendingDispatch\n * @static\n */\n public static function queue($command, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->queue($command, $parameters);\n }\n\n /**\n * Get all of the commands registered with the console.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->all();\n }\n\n /**\n * Get the output for the last run command.\n *\n * @return string\n * @static\n */\n public static function output()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->output();\n }\n\n /**\n * Bootstrap the application for artisan commands.\n *\n * @return void\n * @static\n */\n public static function bootstrap()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrap();\n }\n\n /**\n * Bootstrap the application without booting service providers.\n *\n * @return void\n * @static\n */\n public static function bootstrapWithoutBootingProviders()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrapWithoutBootingProviders();\n }\n\n /**\n * Set the Artisan application instance.\n *\n * @param \\Illuminate\\Console\\Application|null $artisan\n * @return void\n * @static\n */\n public static function setArtisan($artisan)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->setArtisan($artisan);\n }\n\n /**\n * Set the Artisan commands provided by the application.\n *\n * @param array $commands\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommands($commands)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommands($commands);\n }\n\n /**\n * Set the paths that should have their Artisan commands automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandPaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandPaths($paths);\n }\n\n /**\n * Set the paths that should have their Artisan \"routes\" automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandRoutePaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandRoutePaths($paths);\n }\n\n /**\n * Confirm before proceeding with the action.\n * \n * This method only asks for confirmation in production.\n *\n * @param string $warning\n * @param \\Closure|bool|null $callback\n * @return bool\n * @static\n */\n public static function confirmToProceed($warning = 'Application In Production', $callback = null)\n {\n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->confirmToProceed($warning, $callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\AuthManager\n * @see \\Illuminate\\Auth\\SessionGuard\n */\n class Auth {\n /**\n * Attempt to get the guard from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\Guard|\\Illuminate\\Contracts\\Auth\\StatefulGuard\n * @static\n */\n public static function guard($name = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->guard($name);\n }\n\n /**\n * Create a session based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function createSessionDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createSessionDriver($name, $config);\n }\n\n /**\n * Create a token based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\TokenGuard\n * @static\n */\n public static function createTokenDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createTokenDriver($name, $config);\n }\n\n /**\n * Get the default authentication driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default guard driver the factory should serve.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function shouldUse($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->shouldUse($name);\n }\n\n /**\n * Set the default authentication driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a new callback based request guard.\n *\n * @param string $driver\n * @param callable $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function viaRequest($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->viaRequest($driver, $callback);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function userResolver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->userResolver();\n }\n\n /**\n * Set the callback to be used to resolve users.\n *\n * @param \\Closure $userResolver\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function resolveUsersUsing($userResolver)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->resolveUsersUsing($userResolver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Register a custom provider creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function provider($name, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->provider($name, $callback);\n }\n\n /**\n * Determines if any guards have already been resolved.\n *\n * @return bool\n * @static\n */\n public static function hasResolvedGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->hasResolvedGuards();\n }\n\n /**\n * Forget all of the resolved guard instances.\n *\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function forgetGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->forgetGuards();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Create the user provider implementation for the driver.\n *\n * @param string|null $provider\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider|null\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createUserProvider($provider = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createUserProvider($provider);\n }\n\n /**\n * Get the default user provider name.\n *\n * @return string\n * @static\n */\n public static function getDefaultUserProvider()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultUserProvider();\n }\n\n /**\n * Get the currently authenticated user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function user()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->user();\n }\n\n /**\n * Get the ID for the currently authenticated user.\n *\n * @return int|string|null\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->id();\n }\n\n /**\n * Log a user into the application without sessions or cookies.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function once($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->once($credentials);\n }\n\n /**\n * Log the given user ID into the application without sessions or cookies.\n *\n * @param mixed $id\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function onceUsingId($id)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceUsingId($id);\n }\n\n /**\n * Validate a user's credentials.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function validate($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->validate($credentials);\n }\n\n /**\n * Attempt to authenticate using HTTP Basic Auth.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function basic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->basic($field, $extraConditions);\n }\n\n /**\n * Perform a stateless HTTP Basic login attempt.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function onceBasic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceBasic($field, $extraConditions);\n }\n\n /**\n * Attempt to authenticate a user using the given credentials.\n *\n * @param array $credentials\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attempt($credentials = [], $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attempt($credentials, $remember);\n }\n\n /**\n * Attempt to authenticate a user with credentials and additional callbacks.\n *\n * @param array $credentials\n * @param array|callable|null $callbacks\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attemptWhen($credentials = [], $callbacks = null, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attemptWhen($credentials, $callbacks, $remember);\n }\n\n /**\n * Log the given user ID into the application.\n *\n * @param mixed $id\n * @param bool $remember\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function loginUsingId($id, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->loginUsingId($id, $remember);\n }\n\n /**\n * Log a user into the application.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @param bool $remember\n * @return void\n * @static\n */\n public static function login($user, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->login($user, $remember);\n }\n\n /**\n * Log the user out of the application.\n *\n * @return void\n * @static\n */\n public static function logout()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logout();\n }\n\n /**\n * Log the user out of the application on their current device only.\n * \n * This method does not cycle the \"remember\" token.\n *\n * @return void\n * @static\n */\n public static function logoutCurrentDevice()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logoutCurrentDevice();\n }\n\n /**\n * Invalidate other sessions for the current user.\n * \n * The application must be using the AuthenticateSession middleware.\n *\n * @param string $password\n * @return \\Jiminny\\Models\\User|null\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function logoutOtherDevices($password)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->logoutOtherDevices($password);\n }\n\n /**\n * Register an authentication attempt event listener.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function attempting($callback)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->attempting($callback);\n }\n\n /**\n * Get the last user we attempted to authenticate.\n *\n * @return \\Jiminny\\Models\\User\n * @static\n */\n public static function getLastAttempted()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getLastAttempted();\n }\n\n /**\n * Get a unique identifier for the auth session value.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getName();\n }\n\n /**\n * Get the name of the cookie used to store the \"recaller\".\n *\n * @return string\n * @static\n */\n public static function getRecallerName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRecallerName();\n }\n\n /**\n * Determine if the user was authenticated via \"remember me\" cookie.\n *\n * @return bool\n * @static\n */\n public static function viaRemember()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->viaRemember();\n }\n\n /**\n * Set the number of minutes the remember me cookie should be valid for.\n *\n * @param int $minutes\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRememberDuration($minutes)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRememberDuration($minutes);\n }\n\n /**\n * Get the cookie creator instance used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Cookie\\QueueingFactory\n * @throws \\RuntimeException\n * @static\n */\n public static function getCookieJar()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getCookieJar();\n }\n\n /**\n * Set the cookie creator instance used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Cookie\\QueueingFactory $cookie\n * @return void\n * @static\n */\n public static function setCookieJar($cookie)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setCookieJar($cookie);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the session store used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getSession();\n }\n\n /**\n * Return the currently cached user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function getUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getUser();\n }\n\n /**\n * Set the current user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setUser($user)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setUser($user);\n }\n\n /**\n * Get the current request instance.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRequest($request);\n }\n\n /**\n * Get the timebox instance used by the guard.\n *\n * @return \\Illuminate\\Support\\Timebox\n * @static\n */\n public static function getTimebox()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getTimebox();\n }\n\n /**\n * Determine if the current user is authenticated. If not, throw an exception.\n *\n * @return \\Jiminny\\Models\\User\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function authenticate()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->authenticate();\n }\n\n /**\n * Determine if the guard has a user instance.\n *\n * @return bool\n * @static\n */\n public static function hasUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->hasUser();\n }\n\n /**\n * Determine if the current user is authenticated.\n *\n * @return bool\n * @static\n */\n public static function check()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->check();\n }\n\n /**\n * Determine if the current user is a guest.\n *\n * @return bool\n * @static\n */\n public static function guest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->guest();\n }\n\n /**\n * Forget the current user.\n *\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function forgetUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->forgetUser();\n }\n\n /**\n * Get the user provider used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider\n * @static\n */\n public static function getProvider()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getProvider();\n }\n\n /**\n * Set the user provider used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Auth\\UserProvider $provider\n * @return void\n * @static\n */\n public static function setProvider($provider)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setProvider($provider);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Auth\\SessionGuard::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Auth\\SessionGuard::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Auth\\SessionGuard::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Auth\\SessionGuard::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Compilers\\BladeCompiler\n */\n class Blade {\n /**\n * Compile the view at the given path.\n *\n * @param string|null $path\n * @return void\n * @static\n */\n public static function compile($path = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->compile($path);\n }\n\n /**\n * Get the path currently being compiled.\n *\n * @return string\n * @static\n */\n public static function getPath()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getPath();\n }\n\n /**\n * Set the path currently being compiled.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function setPath($path)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setPath($path);\n }\n\n /**\n * Compile the given Blade template contents.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileString($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileString($value);\n }\n\n /**\n * Evaluate and render a Blade string to HTML.\n *\n * @param string $string\n * @param array $data\n * @param bool $deleteCachedView\n * @return string\n * @static\n */\n public static function render($string, $data = [], $deleteCachedView = false)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::render($string, $data, $deleteCachedView);\n }\n\n /**\n * Render a component instance to HTML.\n *\n * @param \\Illuminate\\View\\Component $component\n * @return string\n * @static\n */\n public static function renderComponent($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::renderComponent($component);\n }\n\n /**\n * Strip the parentheses from the given expression.\n *\n * @param string $expression\n * @return string\n * @static\n */\n public static function stripParentheses($expression)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->stripParentheses($expression);\n }\n\n /**\n * Register a custom Blade compiler.\n *\n * @param callable $compiler\n * @return void\n * @static\n */\n public static function extend($compiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->extend($compiler);\n }\n\n /**\n * Get the extensions used by the compiler.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Register an \"if\" statement directive.\n *\n * @param string $name\n * @param callable $callback\n * @return void\n * @static\n */\n public static function if($name, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->if($name, $callback);\n }\n\n /**\n * Check the result of a condition.\n *\n * @param string $name\n * @param mixed $parameters\n * @return bool\n * @static\n */\n public static function check($name, ...$parameters)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->check($name, ...$parameters);\n }\n\n /**\n * Register a class-based component alias directive.\n *\n * @param string $class\n * @param string|null $alias\n * @param string $prefix\n * @return void\n * @static\n */\n public static function component($class, $alias = null, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->component($class, $alias, $prefix);\n }\n\n /**\n * Register an array of class-based components.\n *\n * @param array $components\n * @param string $prefix\n * @return void\n * @static\n */\n public static function components($components, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->components($components, $prefix);\n }\n\n /**\n * Get the registered class component aliases.\n *\n * @return array\n * @static\n */\n public static function getClassComponentAliases()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentAliases();\n }\n\n /**\n * Register a new anonymous component path.\n *\n * @param string $path\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentPath($path, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentPath($path, $prefix);\n }\n\n /**\n * Register an anonymous component namespace.\n *\n * @param string $directory\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentNamespace($directory, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentNamespace($directory, $prefix);\n }\n\n /**\n * Register a class-based component namespace.\n *\n * @param string $namespace\n * @param string $prefix\n * @return void\n * @static\n */\n public static function componentNamespace($namespace, $prefix)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->componentNamespace($namespace, $prefix);\n }\n\n /**\n * Get the registered anonymous component paths.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentPaths()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentPaths();\n }\n\n /**\n * Get the registered anonymous component namespaces.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentNamespaces();\n }\n\n /**\n * Get the registered class component namespaces.\n *\n * @return array\n * @static\n */\n public static function getClassComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentNamespaces();\n }\n\n /**\n * Register a component alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasComponent($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasComponent($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function include($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->include($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasInclude($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasInclude($path, $alias);\n }\n\n /**\n * Register a handler for custom directives, binding the handler to the compiler.\n *\n * @param string $name\n * @param callable $handler\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function bindDirective($name, $handler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->bindDirective($name, $handler);\n }\n\n /**\n * Register a handler for custom directives.\n *\n * @param string $name\n * @param callable $handler\n * @param bool $bind\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function directive($name, $handler, $bind = false)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->directive($name, $handler, $bind);\n }\n\n /**\n * Get the list of custom directives.\n *\n * @return array\n * @static\n */\n public static function getCustomDirectives()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCustomDirectives();\n }\n\n /**\n * Indicate that the following callable should be used to prepare strings for compilation.\n *\n * @param callable $callback\n * @return \\Illuminate\\View\\Compilers\\BladeCompiler\n * @static\n */\n public static function prepareStringsForCompilationUsing($callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->prepareStringsForCompilationUsing($callback);\n }\n\n /**\n * Register a new precompiler.\n *\n * @param callable $precompiler\n * @return void\n * @static\n */\n public static function precompiler($precompiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->precompiler($precompiler);\n }\n\n /**\n * Execute the given callback using a custom echo format.\n *\n * @param string $format\n * @param callable $callback\n * @return string\n * @static\n */\n public static function usingEchoFormat($format, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->usingEchoFormat($format, $callback);\n }\n\n /**\n * Set the echo format to be used by the compiler.\n *\n * @param string $format\n * @return void\n * @static\n */\n public static function setEchoFormat($format)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setEchoFormat($format);\n }\n\n /**\n * Set the \"echo\" format to double encode entities.\n *\n * @return void\n * @static\n */\n public static function withDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withDoubleEncoding();\n }\n\n /**\n * Set the \"echo\" format to not double encode entities.\n *\n * @return void\n * @static\n */\n public static function withoutDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutDoubleEncoding();\n }\n\n /**\n * Indicate that component tags should not be compiled.\n *\n * @return void\n * @static\n */\n public static function withoutComponentTags()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutComponentTags();\n }\n\n /**\n * Get the path to the compiled version of a view.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getCompiledPath($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCompiledPath($path);\n }\n\n /**\n * Determine if the view at the given path is expired.\n *\n * @param string $path\n * @return bool\n * @throws \\ErrorException\n * @static\n */\n public static function isExpired($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->isExpired($path);\n }\n\n /**\n * Get a new component hash for a component name.\n *\n * @param string $component\n * @return string\n * @static\n */\n public static function newComponentHash($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::newComponentHash($component);\n }\n\n /**\n * Compile a class component opening.\n *\n * @param string $component\n * @param string $alias\n * @param string $data\n * @param string $hash\n * @return string\n * @static\n */\n public static function compileClassComponentOpening($component, $alias, $data, $hash)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash);\n }\n\n /**\n * Compile the end-component statements into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndComponentClass()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndComponentClass();\n }\n\n /**\n * Sanitize the given component attribute value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function sanitizeComponentAttribute($value)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::sanitizeComponentAttribute($value);\n }\n\n /**\n * Compile an end-once block into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndOnce()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndOnce();\n }\n\n /**\n * Add a handler to be executed before echoing a given class.\n *\n * @param string|callable $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Compile Blade echos into valid PHP.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileEchos($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEchos($value);\n }\n\n /**\n * Apply the echo handler for the value if it exists.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function applyEchoHandler($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->applyEchoHandler($value);\n }\n\n }\n /**\n * @method static mixed auth(\\Illuminate\\Http\\Request $request)\n * @method static mixed validAuthenticationResponse(\\Illuminate\\Http\\Request $request, mixed $result)\n * @method static void broadcast(array $channels, string $event, array $payload = [])\n * @method static array|null resolveAuthenticatedUser(\\Illuminate\\Http\\Request $request)\n * @method static void resolveAuthenticatedUserUsing(\\Closure $callback)\n * @method static \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster channel(\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel|string $channel, callable|string $callback, array $options = [])\n * @method static \\Illuminate\\Support\\Collection getChannels()\n * @see \\Illuminate\\Broadcasting\\BroadcastManager\n * @see \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster\n */\n class Broadcast {\n /**\n * Register the routes for handling broadcast channel authentication and sockets.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function routes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->routes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast user authentication.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function userRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->userRoutes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast authentication and sockets.\n * \n * Alias of \"routes\" method.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function channelRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->channelRoutes($attributes);\n }\n\n /**\n * Get the socket ID for the given request.\n *\n * @param \\Illuminate\\Http\\Request|null $request\n * @return string|null\n * @static\n */\n public static function socket($request = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->socket($request);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given channels.\n *\n * @static\n */\n public static function on($channels)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->on($channels);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given private channels.\n *\n * @static\n */\n public static function private($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->private($channel);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given presence channels.\n *\n * @static\n */\n public static function presence($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->presence($channel);\n }\n\n /**\n * Begin broadcasting an event.\n *\n * @param mixed $event\n * @return \\Illuminate\\Broadcasting\\PendingBroadcast\n * @static\n */\n public static function event($event = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->event($event);\n }\n\n /**\n * Queue the given event for broadcast.\n *\n * @param mixed $event\n * @return void\n * @static\n */\n public static function queue($event)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->queue($event);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @static\n */\n public static function connection($driver = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->connection($driver);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Get a Pusher instance for the given configuration.\n *\n * @param array $config\n * @return \\Pusher\\Pusher\n * @static\n */\n public static function pusher($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->pusher($config);\n }\n\n /**\n * Get an Ably instance for the given configuration.\n *\n * @param array $config\n * @return \\Ably\\AblyRest\n * @static\n */\n public static function ably($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->ably($config);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function forgetDrivers()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @see \\Illuminate\\Bus\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n */\n class Bus {\n /**\n * Dispatch a command to its appropriate handler.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function dispatch($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatch($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process.\n * \n * Queueable jobs will be dispatched to the \"sync\" queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchSync($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchSync($command, $handler);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process without using the synchronous queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchNow($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchNow($command, $handler);\n }\n\n /**\n * Attempt to find the batch with the given ID.\n *\n * @param string $batchId\n * @return \\Illuminate\\Bus\\Batch|null\n * @static\n */\n public static function findBatch($batchId)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->findBatch($batchId);\n }\n\n /**\n * Create a new batch of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $jobs\n * @return \\Illuminate\\Bus\\PendingBatch\n * @static\n */\n public static function batch($jobs)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->batch($jobs);\n }\n\n /**\n * Create a new chain of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|array|null $jobs\n * @return \\Illuminate\\Foundation\\Bus\\PendingChain\n * @static\n */\n public static function chain($jobs = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->chain($jobs);\n }\n\n /**\n * Determine if the given command has a handler.\n *\n * @param mixed $command\n * @return bool\n * @static\n */\n public static function hasCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->hasCommandHandler($command);\n }\n\n /**\n * Retrieve the handler for a command.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function getCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->getCommandHandler($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler behind a queue.\n *\n * @param mixed $command\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function dispatchToQueue($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchToQueue($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler after the current process.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return void\n * @static\n */\n public static function dispatchAfterResponse($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n $instance->dispatchAfterResponse($command, $handler);\n }\n\n /**\n * Set the pipes through which commands should be piped before dispatching.\n *\n * @param array $pipes\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function pipeThrough($pipes)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->pipeThrough($pipes);\n }\n\n /**\n * Map a command to a handler.\n *\n * @param array $map\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function map($map)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->map($map);\n }\n\n /**\n * Allow dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withDispatchingAfterResponses();\n }\n\n /**\n * Disable dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withoutDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withoutDispatchingAfterResponses();\n }\n\n /**\n * Specify the jobs that should be dispatched instead of faked.\n *\n * @param array|string $jobsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function except($jobsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->except($jobsToDispatch);\n }\n\n /**\n * Assert if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatched($command, $callback);\n }\n\n /**\n * Assert if a job was pushed exactly once.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedOnce($command);\n }\n\n /**\n * Assert if a job was pushed a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatched($command, $callback);\n }\n\n /**\n * Assert that no jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Assert if a job was explicitly dispatched synchronously based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was pushed synchronously a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedSyncTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSyncTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was dispatched after the response was sent based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a job was pushed after the response was sent a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponseTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponseTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a chain of jobs was dispatched.\n *\n * @param array $expectedChain\n * @return void\n * @static\n */\n public static function assertChained($expectedChain)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertChained($expectedChain);\n }\n\n /**\n * Assert no chained jobs was dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingChained()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingChained();\n }\n\n /**\n * Assert if a job was dispatched with an empty chain based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedWithoutChain($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedWithoutChain($command, $callback);\n }\n\n /**\n * Create a new assertion about a chained batch.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Support\\Testing\\Fakes\\ChainedBatchTruthTest\n * @static\n */\n public static function chainedBatch($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->chainedBatch($callback);\n }\n\n /**\n * Assert if a batch was dispatched based on a truth-test callback.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function assertBatched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatched($callback);\n }\n\n /**\n * Assert the number of batches that have been dispatched.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertBatchCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatchCount($count);\n }\n\n /**\n * Assert that no batched jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingBatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingBatched();\n }\n\n /**\n * Assert that no jobs were dispatched, chained, or batched.\n *\n * @return void\n * @static\n */\n public static function assertNothingPlaced()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingPlaced();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatched($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched synchronously matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedSync($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched after the response was sent matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Get all of the pending batches matching a truth-test callback.\n *\n * @param callable $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function batched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->batched($callback);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatched($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatched($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedSync($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedSync($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedAfterResponse($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedAfterResponse($command);\n }\n\n /**\n * Dispatch an empty job batch for testing.\n *\n * @param string $name\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function dispatchFakeBatch($name = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchFakeBatch($name);\n }\n\n /**\n * Record the fake pending batch dispatch.\n *\n * @param \\Illuminate\\Bus\\PendingBatch $pendingBatch\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function recordPendingBatch($pendingBatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->recordPendingBatch($pendingBatch);\n }\n\n /**\n * Specify if commands should be serialized and restored when being batched.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the batches that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedBatches()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedBatches();\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\CacheManager\n * @see \\Illuminate\\Cache\\Repository\n */\n class Cache {\n /**\n * Get a cache store instance by name, wrapped in a repository.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function store($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->store($name);\n }\n\n /**\n * Get a cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Get a memoized cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function memo($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->memo($driver);\n }\n\n /**\n * Resolve the given store.\n *\n * @param string $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Build a cache repository with the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new cache repository with the given implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function repository($store, $config = [])\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->repository($store, $config);\n }\n\n /**\n * Re-set the event dispatcher on all resolved cache repositories.\n *\n * @return void\n * @static\n */\n public static function refreshEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->refreshEventDispatcher();\n }\n\n /**\n * Get the default cache driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default cache driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Unset the given driver instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function forgetDriver($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->forgetDriver($name);\n }\n\n /**\n * Disconnect the given driver and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if an item exists in the cache.\n *\n * @param array|string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if an item doesn't exist in the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve multiple items from the cache by key.\n * \n * Items not found in the cache will have a null value.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function many($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->many($keys);\n }\n\n /**\n * Obtains multiple cache items by their unique keys.\n *\n * @return iterable\n * @param iterable<string> $keys A list of keys that can be obtained in a single operation.\n * @param mixed $default Default value to return for keys that do not exist.\n * @return iterable<string, mixed> A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function getMultiple($keys, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getMultiple($keys, $default);\n }\n\n /**\n * Retrieve an item from the cache and delete it.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Store an item in the cache.\n *\n * @param array|string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function put($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->put($key, $value, $ttl);\n }\n\n /**\n * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.\n *\n * @return bool\n * @param string $key The key of the item to store.\n * @param mixed $value The value of the item to store, must be serializable.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function set($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->set($key, $value, $ttl);\n }\n\n /**\n * Store multiple items in the cache for a given number of seconds.\n *\n * @param array $values\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function putMany($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->putMany($values, $ttl);\n }\n\n /**\n * Persists a set of key => value pairs in the cache, with an optional TTL.\n *\n * @return bool\n * @param iterable $values A list of key => value pairs for a multiple-set operation.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $values is neither an array nor a Traversable,\n * or if any of the $values are not a legal value.\n * @static\n */\n public static function setMultiple($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setMultiple($values, $ttl);\n }\n\n /**\n * Store an item in the cache if the key does not exist.\n *\n * @param string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function add($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->add($key, $value, $ttl);\n }\n\n /**\n * Increment the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function increment($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->increment($key, $value);\n }\n\n /**\n * Decrement the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function decrement($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->decrement($key, $value);\n }\n\n /**\n * Store an item in the cache indefinitely.\n *\n * @param string $key\n * @param mixed $value\n * @return bool\n * @static\n */\n public static function forever($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forever($key, $value);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure|\\DateTimeInterface|\\DateInterval|int|null $ttl\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function remember($key, $ttl, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->remember($key, $ttl, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function sear($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->sear($key, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function rememberForever($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->rememberForever($key, $callback);\n }\n\n /**\n * Retrieve an item from the cache by key, refreshing it in the background if it is stale.\n *\n * @template TCacheValue\n * @param string $key\n * @param array{ 0: \\DateTimeInterface|\\DateInterval|int, 1: \\DateTimeInterface|\\DateInterval|int } $ttl\n * @param (callable(): TCacheValue) $callback\n * @param array{ seconds?: int, owner?: string }|null $lock\n * @param bool $alwaysDefer\n * @return TCacheValue\n * @static\n */\n public static function flexible($key, $ttl, $callback, $lock = null, $alwaysDefer = false)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->flexible($key, $ttl, $callback, $lock, $alwaysDefer);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Delete an item from the cache by its unique key.\n *\n * @return bool\n * @param string $key The unique cache key of the item to delete.\n * @return bool True if the item was successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function delete($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->delete($key);\n }\n\n /**\n * Deletes multiple cache items in a single operation.\n *\n * @return bool\n * @param iterable<string> $keys A list of string-based keys to be deleted.\n * @return bool True if the items were successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function deleteMultiple($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->deleteMultiple($keys);\n }\n\n /**\n * Wipes clean the entire cache's keys.\n *\n * @return bool\n * @return bool True on success and false on failure.\n * @static\n */\n public static function clear()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->clear();\n }\n\n /**\n * Begin executing a new tags operation if the store supports it.\n *\n * @param mixed $names\n * @return \\Illuminate\\Cache\\TaggedCache\n * @throws \\BadMethodCallException\n * @static\n */\n public static function tags($names)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->tags($names);\n }\n\n /**\n * Get the name of the cache store.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getName();\n }\n\n /**\n * Determine if the current store supports tags.\n *\n * @return bool\n * @static\n */\n public static function supportsTags()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->supportsTags();\n }\n\n /**\n * Get the default cache time.\n *\n * @return int|null\n * @static\n */\n public static function getDefaultCacheTime()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getDefaultCacheTime();\n }\n\n /**\n * Set the default cache time in seconds.\n *\n * @param int|null $seconds\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function setDefaultCacheTime($seconds)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setDefaultCacheTime($seconds);\n }\n\n /**\n * Get the cache store implementation.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Store\n * @static\n */\n public static function getStore()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getStore();\n }\n\n /**\n * Set the cache store implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @return static\n * @static\n */\n public static function setStore($store)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setStore($store);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setEventDispatcher($events)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->setEventDispatcher($events);\n }\n\n /**\n * Determine if a cached value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Store an item in the cache for the default time.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cache\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cache\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cache\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cache\\Repository::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a lock instance.\n *\n * @param string $name\n * @param int $seconds\n * @param string|null $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function lock($name, $seconds = 0, $owner = null)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lock($name, $seconds, $owner);\n }\n\n /**\n * Restore a lock instance using the owner identifier.\n *\n * @param string $name\n * @param string $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function restoreLock($name, $owner)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->restoreLock($name, $owner);\n }\n\n /**\n * Remove all items from the cache.\n *\n * @return bool\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->flush();\n }\n\n /**\n * Remove all expired tag set entries.\n *\n * @return void\n * @static\n */\n public static function flushStaleTags()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->flushStaleTags();\n }\n\n /**\n * Get the Redis connection instance.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->connection();\n }\n\n /**\n * Get the Redis connection instance that should be used to manage locks.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function lockConnection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lockConnection();\n }\n\n /**\n * Specify the name of the connection that should be used to store data.\n *\n * @param string $connection\n * @return void\n * @static\n */\n public static function setConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setConnection($connection);\n }\n\n /**\n * Specify the name of the connection that should be used to manage locks.\n *\n * @param string $connection\n * @return \\Illuminate\\Cache\\RedisStore\n * @static\n */\n public static function setLockConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->setLockConnection($connection);\n }\n\n /**\n * Get the Redis database instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the cache key prefix.\n *\n * @return string\n * @static\n */\n public static function getPrefix()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getPrefix();\n }\n\n /**\n * Set the cache key prefix.\n *\n * @param string $prefix\n * @return void\n * @static\n */\n public static function setPrefix($prefix)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setPrefix($prefix);\n }\n\n }\n /**\n * @method static array run(\\Closure|array $tasks)\n * @method static \\Illuminate\\Support\\Defer\\DeferredCallback defer(\\Closure|array $tasks)\n * @see \\Illuminate\\Concurrency\\ConcurrencyManager\n */\n class Concurrency {\n /**\n * Get a driver instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Create an instance of the process concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ProcessDriver\n * @static\n */\n public static function createProcessDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createProcessDriver($config);\n }\n\n /**\n * Create an instance of the fork concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ForkDriver\n * @throws \\RuntimeException\n * @static\n */\n public static function createForkDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createForkDriver($config);\n }\n\n /**\n * Create an instance of the sync concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\SyncDriver\n * @static\n */\n public static function createSyncDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createSyncDriver($config);\n }\n\n /**\n * Get the default instance name.\n *\n * @return string\n * @static\n */\n public static function getDefaultInstance()\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getDefaultInstance();\n }\n\n /**\n * Set the default instance name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultInstance($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->setDefaultInstance($name);\n }\n\n /**\n * Get the instance specific configuration.\n *\n * @param string $name\n * @return array\n * @static\n */\n public static function getInstanceConfig($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getInstanceConfig($name);\n }\n\n /**\n * Get an instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function instance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->instance($name);\n }\n\n /**\n * Unset the given instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function forgetInstance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->forgetInstance($name);\n }\n\n /**\n * Disconnect the given instance and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom instance creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function extend($name, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->extend($name, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function setApplication($app)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @see \\Illuminate\\Config\\Repository\n */\n class Config {\n /**\n * Determine if the given configuration value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Get the specified configuration value.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get many configuration values.\n *\n * @param array<string|int,mixed> $keys\n * @return array<string,mixed>\n * @static\n */\n public static function getMany($keys)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->getMany($keys);\n }\n\n /**\n * Get the specified string configuration value.\n *\n * @param string $key\n * @param (\\Closure():(string|null))|string|null $default\n * @return string\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Get the specified integer configuration value.\n *\n * @param string $key\n * @param (\\Closure():(int|null))|int|null $default\n * @return int\n * @static\n */\n public static function integer($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Get the specified float configuration value.\n *\n * @param string $key\n * @param (\\Closure():(float|null))|float|null $default\n * @return float\n * @static\n */\n public static function float($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Get the specified boolean configuration value.\n *\n * @param string $key\n * @param (\\Closure():(bool|null))|bool|null $default\n * @return bool\n * @static\n */\n public static function boolean($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Get the specified array configuration value.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return array<array-key, mixed>\n * @static\n */\n public static function array($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->array($key, $default);\n }\n\n /**\n * Get the specified array configuration value as a collection.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return Collection<array-key, mixed>\n * @static\n */\n public static function collection($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->collection($key, $default);\n }\n\n /**\n * Set a given configuration value.\n *\n * @param array|string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function set($key, $value = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->set($key, $value);\n }\n\n /**\n * Prepend a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function prepend($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->prepend($key, $value);\n }\n\n /**\n * Push a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Get all of the configuration items for the application.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Determine if the given configuration option exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get a configuration option.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set a configuration option.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset a configuration option.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Config\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Config\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Config\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Config\\Repository::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Log\\Context\\Repository\n */\n class Context {\n /**\n * Determine if the given key exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the given key is missing.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if the given key exists within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hasHidden($key);\n }\n\n /**\n * Determine if the given key is missing within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missingHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missingHidden($key);\n }\n\n /**\n * Retrieve all the context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Retrieve all the hidden context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function allHidden()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->allHidden();\n }\n\n /**\n * Retrieve the given key's value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->getHidden($key, $default);\n }\n\n /**\n * Retrieve the given key's value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pullHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pullHidden($key, $default);\n }\n\n /**\n * Retrieve only the values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->only($keys);\n }\n\n /**\n * Retrieve only the hidden values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function onlyHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->onlyHidden($keys);\n }\n\n /**\n * Retrieve all values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->except($keys);\n }\n\n /**\n * Retrieve all hidden values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function exceptHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->exceptHidden($keys);\n }\n\n /**\n * Add a context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function add($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->add($key, $value);\n }\n\n /**\n * Add a hidden context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHidden($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHidden($key, $value);\n }\n\n /**\n * Add a context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function remember($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->remember($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function rememberHidden($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->rememberHidden($key, $value);\n }\n\n /**\n * Forget the given context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Forget the given hidden context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forgetHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forgetHidden($key);\n }\n\n /**\n * Add a context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addIf($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHiddenIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHiddenIf($key, $value);\n }\n\n /**\n * Push the given values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function push($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->push($key, ...$values);\n }\n\n /**\n * Pop the latest value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function pop($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pop($key);\n }\n\n /**\n * Push the given hidden values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function pushHidden($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pushHidden($key, ...$values);\n }\n\n /**\n * Pop the latest hidden value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function popHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->popHidden($key);\n }\n\n /**\n * Increment a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Determine if the given value is in the given stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function stackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->stackContains($key, $value, $strict);\n }\n\n /**\n * Determine if the given value is in the given hidden stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function hiddenStackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hiddenStackContains($key, $value, $strict);\n }\n\n /**\n * Run the callback function with the given context values and restore the original context state when complete.\n *\n * @param callable $callback\n * @param array<string, mixed> $data\n * @param array<string, mixed> $hidden\n * @return mixed\n * @throws \\Throwable\n * @static\n */\n public static function scope($callback, $data = [], $hidden = [])\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->scope($callback, $data, $hidden);\n }\n\n /**\n * Determine if the repository is empty.\n *\n * @return bool\n * @static\n */\n public static function isEmpty()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->isEmpty();\n }\n\n /**\n * Execute the given callback when context is about to be dehydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function dehydrating($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrating($callback);\n }\n\n /**\n * Execute the given callback when context has been hydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function hydrated($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrated($callback);\n }\n\n /**\n * Handle unserialize exceptions using the given callback.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleUnserializeExceptionsUsing($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->handleUnserializeExceptionsUsing($callback);\n }\n\n /**\n * Flush all context data.\n *\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->flush();\n }\n\n /**\n * Dehydrate the context data.\n *\n * @internal\n * @return \\Illuminate\\Log\\Context\\?array\n * @static\n */\n public static function dehydrate()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrate();\n }\n\n /**\n * Hydrate the context instance.\n *\n * @internal\n * @param \\Illuminate\\Log\\Context\\?array $context\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function hydrate($context)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrate($context);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Log\\Context\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Log\\Context\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Log\\Context\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Log\\Context\\Repository::flushMacros();\n }\n\n /**\n * Restore the model from the model identifier instance.\n *\n * @param \\Illuminate\\Contracts\\Database\\ModelIdentifier $value\n * @return \\Illuminate\\Database\\Eloquent\\Model\n * @static\n */\n public static function restoreModel($value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->restoreModel($value);\n }\n\n }\n /**\n * @see \\Illuminate\\Cookie\\CookieJar\n */\n class Cookie {\n /**\n * Create a new cookie instance.\n *\n * @param string $name\n * @param string $value\n * @param int $minutes\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Create a cookie that lasts \"forever\" (400 days).\n *\n * @param string $name\n * @param string $value\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Expire the given cookie.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forget($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forget($name, $path, $domain);\n }\n\n /**\n * Determine if a cookie has been queued.\n *\n * @param string $key\n * @param string|null $path\n * @return bool\n * @static\n */\n public static function hasQueued($key, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->hasQueued($key, $path);\n }\n\n /**\n * Get a queued cookie instance.\n *\n * @param string $key\n * @param mixed $default\n * @param string|null $path\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie|null\n * @static\n */\n public static function queued($key, $default = null, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->queued($key, $default, $path);\n }\n\n /**\n * Queue a cookie to send with the next response.\n *\n * @param mixed $parameters\n * @return void\n * @static\n */\n public static function queue(...$parameters)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->queue(...$parameters);\n }\n\n /**\n * Queue a cookie to expire with the next response.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return void\n * @static\n */\n public static function expire($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->expire($name, $path, $domain);\n }\n\n /**\n * Remove a cookie from the queue.\n *\n * @param string $name\n * @param string|null $path\n * @return void\n * @static\n */\n public static function unqueue($name, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->unqueue($name, $path);\n }\n\n /**\n * Set the default path and domain for the jar.\n *\n * @param string $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param string|null $sameSite\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite);\n }\n\n /**\n * Get the cookies which have been queued for the next request.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie[]\n * @static\n */\n public static function getQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->getQueuedCookies();\n }\n\n /**\n * Flush the cookies which have been queued for the next request.\n *\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function flushQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->flushQueuedCookies();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cookie\\CookieJar::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cookie\\CookieJar::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cookie\\CookieJar::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cookie\\CookieJar::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Encryption\\Encrypter\n */\n class Crypt {\n /**\n * Determine if the given key and cipher combination is valid.\n *\n * @param string $key\n * @param string $cipher\n * @return bool\n * @static\n */\n public static function supported($key, $cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::supported($key, $cipher);\n }\n\n /**\n * Create a new encryption key for the given cipher.\n *\n * @param string $cipher\n * @return string\n * @static\n */\n public static function generateKey($cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::generateKey($cipher);\n }\n\n /**\n * Encrypt the given value.\n *\n * @param mixed $value\n * @param bool $serialize\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encrypt($value, $serialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encrypt($value, $serialize);\n }\n\n /**\n * Encrypt a string without serialization.\n *\n * @param string $value\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encryptString($value)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encryptString($value);\n }\n\n /**\n * Decrypt the given value.\n *\n * @param string $payload\n * @param bool $unserialize\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decrypt($payload, $unserialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decrypt($payload, $unserialize);\n }\n\n /**\n * Decrypt the given string without unserialization.\n *\n * @param string $payload\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decryptString($payload)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decryptString($payload);\n }\n\n /**\n * Get the encryption key that the encrypter is currently using.\n *\n * @return string\n * @static\n */\n public static function getKey()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getKey();\n }\n\n /**\n * Get the current encryption key and all previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getAllKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getAllKeys();\n }\n\n /**\n * Get the previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getPreviousKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getPreviousKeys();\n }\n\n /**\n * Set the previous / legacy encryption keys that should be utilized if decryption fails.\n *\n * @param array $keys\n * @return \\Illuminate\\Encryption\\Encrypter\n * @static\n */\n public static function previousKeys($keys)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->previousKeys($keys);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\DatabaseManager\n */\n class DB {\n /**\n * Get a database connection instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Build a database connection instance from the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Calculate the dynamic connection name for an on-demand connection based on its configuration.\n *\n * @param array $config\n * @return string\n * @static\n */\n public static function calculateDynamicConnectionName($config)\n {\n return \\Illuminate\\Database\\DatabaseManager::calculateDynamicConnectionName($config);\n }\n\n /**\n * Get a database connection instance from the given configuration.\n *\n * @param \\UnitEnum|string $name\n * @param array $config\n * @param bool $force\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function connectUsing($name, $config, $force = false)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connectUsing($name, $config, $force);\n }\n\n /**\n * Disconnect from the given database and remove from local cache.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Disconnect from the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Reconnect to the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function reconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Set the default database connection for the callback execution.\n *\n * @param \\UnitEnum|string $name\n * @param callable $callback\n * @return mixed\n * @static\n */\n public static function usingConnection($name, $callback)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->usingConnection($name, $callback);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Get all of the supported drivers.\n *\n * @return string[]\n * @static\n */\n public static function supportedDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->supportedDrivers();\n }\n\n /**\n * Get all of the drivers that are actually available.\n *\n * @return string[]\n * @static\n */\n public static function availableDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->availableDrivers();\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Remove an extension connection resolver.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function forgetExtension($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->forgetExtension($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string, \\Illuminate\\Database\\Connection>\n * @static\n */\n public static function getConnections()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Set the database reconnector callback.\n *\n * @param callable $reconnector\n * @return void\n * @static\n */\n public static function setReconnector($reconnector)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setReconnector($reconnector);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Database\\DatabaseManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\DatabaseManager::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\DatabaseManager::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Database\\DatabaseManager::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\DatabaseManager::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a human-readable name for the given connection driver.\n *\n * @return string\n * @static\n */\n public static function getDriverTitle()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverTitle();\n }\n\n /**\n * Determine if the connected database is a MariaDB database.\n *\n * @return bool\n * @static\n */\n public static function isMaria()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->isMaria();\n }\n\n /**\n * Get the server version for the connection.\n *\n * @return string\n * @static\n */\n public static function getServerVersion()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getServerVersion();\n }\n\n /**\n * Get a schema builder instance for the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\MariaDbBuilder\n * @static\n */\n public static function getSchemaBuilder()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaBuilder();\n }\n\n /**\n * Get the schema state for the connection.\n *\n * @param \\Illuminate\\Filesystem\\Filesystem|null $files\n * @param callable|null $processFactory\n * @return \\Illuminate\\Database\\Schema\\MariaDbSchemaState\n * @static\n */\n public static function getSchemaState($files = null, $processFactory = null)\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaState($files, $processFactory);\n }\n\n /**\n * Run an insert statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param string|null $sequence\n * @return bool\n * @static\n */\n public static function insert($query, $bindings = [], $sequence = null)\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->insert($query, $bindings, $sequence);\n }\n\n /**\n * Get the connection's last insert ID.\n *\n * @return string|int|null\n * @static\n */\n public static function getLastInsertId()\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getLastInsertId();\n }\n\n /**\n * Set the query grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultQueryGrammar();\n }\n\n /**\n * Set the schema grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultSchemaGrammar();\n }\n\n /**\n * Set the query post processor to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultPostProcessor();\n }\n\n /**\n * Begin a fluent query against a database table.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|\\UnitEnum|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function table($table, $as = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->table($table, $as);\n }\n\n /**\n * Get a new query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function query()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->query();\n }\n\n /**\n * Run a select statement and return a single result.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @static\n */\n public static function selectOne($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectOne($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement and return the first column of the first row.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @throws \\Illuminate\\Database\\MultipleColumnsSelectedException\n * @static\n */\n public static function scalar($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->scalar($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return array\n * @static\n */\n public static function selectFromWriteConnection($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectFromWriteConnection($query, $bindings);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function select($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->select($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns all of the result sets.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function selectResultSets($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectResultSets($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns a generator.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return \\Generator<int, \\stdClass>\n * @static\n */\n public static function cursor($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->cursor($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run an update statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function update($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->update($query, $bindings);\n }\n\n /**\n * Run a delete statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function delete($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->delete($query, $bindings);\n }\n\n /**\n * Execute an SQL statement and return the boolean result.\n *\n * @param string $query\n * @param array $bindings\n * @return bool\n * @static\n */\n public static function statement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->statement($query, $bindings);\n }\n\n /**\n * Run an SQL statement and get the number of rows affected.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function affectingStatement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->affectingStatement($query, $bindings);\n }\n\n /**\n * Run a raw, unprepared query against the PDO connection.\n *\n * @param string $query\n * @return bool\n * @static\n */\n public static function unprepared($query)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->unprepared($query);\n }\n\n /**\n * Get the number of open connections for the database.\n *\n * @return int|null\n * @static\n */\n public static function threadCount()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->threadCount();\n }\n\n /**\n * Execute the given callback in \"dry run\" mode.\n *\n * @param (\\Closure(\\Illuminate\\Database\\Connection): mixed) $callback\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function pretend($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretend($callback);\n }\n\n /**\n * Execute the given callback without \"pretending\".\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutPretending($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutPretending($callback);\n }\n\n /**\n * Bind values to their parameters in the given statement.\n *\n * @param \\PDOStatement $statement\n * @param array $bindings\n * @return void\n * @static\n */\n public static function bindValues($statement, $bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->bindValues($statement, $bindings);\n }\n\n /**\n * Prepare the query bindings for execution.\n *\n * @param array $bindings\n * @return array\n * @static\n */\n public static function prepareBindings($bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->prepareBindings($bindings);\n }\n\n /**\n * Log a query in the connection's query log.\n *\n * @param string $query\n * @param array $bindings\n * @param float|null $time\n * @return void\n * @static\n */\n public static function logQuery($query, $bindings, $time = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->logQuery($query, $bindings, $time);\n }\n\n /**\n * Register a callback to be invoked when the connection queries for longer than a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param (callable(\\Illuminate\\Database\\Connection, \\Illuminate\\Database\\Events\\QueryExecuted): mixed) $handler\n * @return void\n * @static\n */\n public static function whenQueryingForLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->whenQueryingForLongerThan($threshold, $handler);\n }\n\n /**\n * Allow all the query duration handlers to run again, even if they have already run.\n *\n * @return void\n * @static\n */\n public static function allowQueryDurationHandlersToRunAgain()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->allowQueryDurationHandlersToRunAgain();\n }\n\n /**\n * Get the duration of all run queries in milliseconds.\n *\n * @return float\n * @static\n */\n public static function totalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->totalQueryDuration();\n }\n\n /**\n * Reset the duration of all run queries.\n *\n * @return void\n * @static\n */\n public static function resetTotalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->resetTotalQueryDuration();\n }\n\n /**\n * Reconnect to the database if a PDO connection is missing.\n *\n * @return void\n * @static\n */\n public static function reconnectIfMissingConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->reconnectIfMissingConnection();\n }\n\n /**\n * Register a hook to be run just before a database transaction is started.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeStartingTransaction($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeStartingTransaction($callback);\n }\n\n /**\n * Register a hook to be run just before a database query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeExecuting($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeExecuting($callback);\n }\n\n /**\n * Register a database query listener with the connection.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function listen($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->listen($callback);\n }\n\n /**\n * Get a new raw query expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->raw($value);\n }\n\n /**\n * Escape a value for safe SQL embedding.\n *\n * @param string|float|int|bool|null $value\n * @param bool $binary\n * @return string\n * @static\n */\n public static function escape($value, $binary = false)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->escape($value, $binary);\n }\n\n /**\n * Determine if the database connection has modified any database records.\n *\n * @return bool\n * @static\n */\n public static function hasModifiedRecords()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->hasModifiedRecords();\n }\n\n /**\n * Indicate if any records have been modified.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function recordsHaveBeenModified($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->recordsHaveBeenModified($value);\n }\n\n /**\n * Set the record modification state.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setRecordModificationState($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setRecordModificationState($value);\n }\n\n /**\n * Reset the record modification state.\n *\n * @return void\n * @static\n */\n public static function forgetRecordModificationState()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->forgetRecordModificationState();\n }\n\n /**\n * Indicate that the connection should use the write PDO connection for reads.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function useWriteConnectionWhenReading($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->useWriteConnectionWhenReading($value);\n }\n\n /**\n * Get the current PDO connection.\n *\n * @return \\PDO\n * @static\n */\n public static function getPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPdo();\n }\n\n /**\n * Get the current PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawPdo();\n }\n\n /**\n * Get the current PDO connection used for reading.\n *\n * @return \\PDO\n * @static\n */\n public static function getReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getReadPdo();\n }\n\n /**\n * Get the current read PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawReadPdo();\n }\n\n /**\n * Set the PDO connection.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPdo($pdo);\n }\n\n /**\n * Set the PDO connection used for reading.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadPdo($pdo);\n }\n\n /**\n * Get the database connection name.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getName();\n }\n\n /**\n * Get the database connection full name.\n *\n * @return string|null\n * @static\n */\n public static function getNameWithReadWriteType()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getNameWithReadWriteType();\n }\n\n /**\n * Get an option from the configuration options.\n *\n * @param string|null $option\n * @return mixed\n * @static\n */\n public static function getConfig($option = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getConfig($option);\n }\n\n /**\n * Get the PDO driver name.\n *\n * @return string\n * @static\n */\n public static function getDriverName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverName();\n }\n\n /**\n * Get the query grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryGrammar();\n }\n\n /**\n * Set the query grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setQueryGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setQueryGrammar($grammar);\n }\n\n /**\n * Get the schema grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\Grammars\\Grammar\n * @static\n */\n public static function getSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaGrammar();\n }\n\n /**\n * Set the schema grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Schema\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setSchemaGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setSchemaGrammar($grammar);\n }\n\n /**\n * Get the query post processor used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPostProcessor();\n }\n\n /**\n * Set the query post processor used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Processors\\Processor $processor\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPostProcessor($processor)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPostProcessor($processor);\n }\n\n /**\n * Get the event dispatcher used by the connection.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance on the connection.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setEventDispatcher($events)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setEventDispatcher($events);\n }\n\n /**\n * Unset the event dispatcher for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetEventDispatcher();\n }\n\n /**\n * Set the transaction manager instance on the connection.\n *\n * @param \\Illuminate\\Database\\DatabaseTransactionsManager $manager\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTransactionManager($manager)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTransactionManager($manager);\n }\n\n /**\n * Unset the transaction manager for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetTransactionManager()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetTransactionManager();\n }\n\n /**\n * Determine if the connection is in a \"dry run\".\n *\n * @return bool\n * @static\n */\n public static function pretending()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretending();\n }\n\n /**\n * Get the connection query log.\n *\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function getQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryLog();\n }\n\n /**\n * Get the connection query log with embedded bindings.\n *\n * @return array\n * @static\n */\n public static function getRawQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawQueryLog();\n }\n\n /**\n * Clear the query log.\n *\n * @return void\n * @static\n */\n public static function flushQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->flushQueryLog();\n }\n\n /**\n * Enable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function enableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->enableQueryLog();\n }\n\n /**\n * Disable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function disableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->disableQueryLog();\n }\n\n /**\n * Determine whether we're logging queries.\n *\n * @return bool\n * @static\n */\n public static function logging()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->logging();\n }\n\n /**\n * Get the name of the connected database.\n *\n * @return string\n * @static\n */\n public static function getDatabaseName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDatabaseName();\n }\n\n /**\n * Set the name of the connected database.\n *\n * @param string $database\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setDatabaseName($database)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setDatabaseName($database);\n }\n\n /**\n * Set the read / write type of the connection.\n *\n * @param string|null $readWriteType\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadWriteType($readWriteType)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadWriteType($readWriteType);\n }\n\n /**\n * Get the table prefix for the connection.\n *\n * @return string\n * @static\n */\n public static function getTablePrefix()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getTablePrefix();\n }\n\n /**\n * Set the table prefix in use by the connection.\n *\n * @param string $prefix\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTablePrefix($prefix)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTablePrefix($prefix);\n }\n\n /**\n * Execute the given callback without table prefix.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutTablePrefix($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutTablePrefix($callback);\n }\n\n /**\n * Register a connection resolver.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function resolverFor($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n \\Illuminate\\Database\\MariaDbConnection::resolverFor($driver, $callback);\n }\n\n /**\n * Get the connection resolver for the given driver.\n *\n * @param string $driver\n * @return \\Closure|null\n * @static\n */\n public static function getResolver($driver)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n return \\Illuminate\\Database\\MariaDbConnection::getResolver($driver);\n }\n\n /**\n * @template TReturn of mixed\n * \n * Execute a Closure within a transaction.\n * @param (\\Closure(static): TReturn) $callback\n * @param int $attempts\n * @return TReturn\n * @throws \\Throwable\n * @static\n */\n public static function transaction($callback, $attempts = 1)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transaction($callback, $attempts);\n }\n\n /**\n * Start a new database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function beginTransaction()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->beginTransaction();\n }\n\n /**\n * Commit the active database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function commit()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->commit();\n }\n\n /**\n * Rollback the active database transaction.\n *\n * @param int|null $toLevel\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function rollBack($toLevel = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->rollBack($toLevel);\n }\n\n /**\n * Get the number of active transactions.\n *\n * @return int\n * @static\n */\n public static function transactionLevel()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transactionLevel();\n }\n\n /**\n * Execute the callback after a transaction commits.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterCommit($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterCommit($callback);\n }\n\n /**\n * Execute the callback after a transaction rolls back.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterRollBack($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterRollBack($callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Events\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n */\n class Event {\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|string $events\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|null $listener\n * @return void\n * @static\n */\n public static function listen($events, $listener = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->listen($events, $listener);\n }\n\n /**\n * Determine if a given event has listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasListeners($eventName);\n }\n\n /**\n * Determine if the given event has any wildcard listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasWildcardListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasWildcardListeners($eventName);\n }\n\n /**\n * Register an event and payload to be fired later.\n *\n * @param string $event\n * @param object|array $payload\n * @return void\n * @static\n */\n public static function push($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->push($event, $payload);\n }\n\n /**\n * Flush a set of pushed events.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function flush($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->flush($event);\n }\n\n /**\n * Register an event subscriber with the dispatcher.\n *\n * @param object|string $subscriber\n * @return void\n * @static\n */\n public static function subscribe($subscriber)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->subscribe($subscriber);\n }\n\n /**\n * Fire an event until the first non-null response is returned.\n *\n * @param string|object $event\n * @param mixed $payload\n * @return mixed\n * @static\n */\n public static function until($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->until($event, $payload);\n }\n\n /**\n * Fire an event and call the listeners.\n *\n * @param string|object $event\n * @param mixed $payload\n * @param bool $halt\n * @return array|null\n * @static\n */\n public static function dispatch($event, $payload = [], $halt = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->dispatch($event, $payload, $halt);\n }\n\n /**\n * Get all of the listeners for a given event name.\n *\n * @param string $eventName\n * @return array\n * @static\n */\n public static function getListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getListeners($eventName);\n }\n\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Closure|string|array $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function makeListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->makeListener($listener, $wildcard);\n }\n\n /**\n * Create a class based listener using the IoC container.\n *\n * @param string $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function createClassListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->createClassListener($listener, $wildcard);\n }\n\n /**\n * Remove a set of listeners from the dispatcher.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function forget($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forget($event);\n }\n\n /**\n * Forget all of the pushed listeners.\n *\n * @return void\n * @static\n */\n public static function forgetPushed()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forgetPushed();\n }\n\n /**\n * Set the queue resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setQueueResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setQueueResolver($resolver);\n }\n\n /**\n * Set the database transaction manager resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setTransactionManagerResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setTransactionManagerResolver($resolver);\n }\n\n /**\n * Execute the given callback while deferring events, then dispatch all deferred events.\n *\n * @param callable $callback\n * @param array|null $events\n * @return mixed\n * @static\n */\n public static function defer($callback, $events = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->defer($callback, $events);\n }\n\n /**\n * Gets the raw, unprepared listeners.\n *\n * @return array\n * @static\n */\n public static function getRawListeners()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getRawListeners();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Events\\Dispatcher::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Events\\Dispatcher::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Events\\Dispatcher::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Events\\Dispatcher::flushMacros();\n }\n\n /**\n * Specify the events that should be dispatched instead of faked.\n *\n * @param array|string $eventsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n * @static\n */\n public static function except($eventsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->except($eventsToDispatch);\n }\n\n /**\n * Assert if an event has a listener attached to it.\n *\n * @param string $expectedEvent\n * @param string|array $expectedListener\n * @return void\n * @static\n */\n public static function assertListening($expectedEvent, $expectedListener)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertListening($expectedEvent, $expectedListener);\n }\n\n /**\n * Assert if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatched($event, $callback);\n }\n\n /**\n * Assert if an event was dispatched exactly once.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedOnce($event);\n }\n\n /**\n * Assert if an event was dispatched a number of times.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($event, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedTimes($event, $times);\n }\n\n /**\n * Determine if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNotDispatched($event, $callback);\n }\n\n /**\n * Assert that no events were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Get all of the events matching a truth-test callback.\n *\n * @param string $event\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatched($event, $callback);\n }\n\n /**\n * Determine if the given event has been dispatched.\n *\n * @param string $event\n * @return bool\n * @static\n */\n public static function hasDispatched($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->hasDispatched($event);\n }\n\n /**\n * Get the events that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedEvents()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatchedEvents();\n }\n\n }\n /**\n * @see \\Illuminate\\Filesystem\\Filesystem\n */\n class File {\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->missing($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @param bool $lock\n * @return string\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function get($path, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->get($path, $lock);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @param bool $lock\n * @return array\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function json($path, $flags = 0, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->json($path, $flags, $lock);\n }\n\n /**\n * Get contents of a file with shared access.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function sharedGet($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->sharedGet($path);\n }\n\n /**\n * Get the returned value of a file.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function getRequire($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->getRequire($path, $data);\n }\n\n /**\n * Require the given file once.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function requireOnce($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->requireOnce($path, $data);\n }\n\n /**\n * Get the contents of a file one line at a time.\n *\n * @param string $path\n * @return \\Illuminate\\Support\\LazyCollection\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function lines($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lines($path);\n }\n\n /**\n * Get the hash of the file at the given path.\n *\n * @param string $path\n * @param string $algorithm\n * @return string|false\n * @static\n */\n public static function hash($path, $algorithm = 'md5')\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hash($path, $algorithm);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param string $contents\n * @param bool $lock\n * @return int|bool\n * @static\n */\n public static function put($path, $contents, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->put($path, $contents, $lock);\n }\n\n /**\n * Write the contents of a file, replacing it atomically if it already exists.\n *\n * @param string $path\n * @param string $content\n * @param int|null $mode\n * @return void\n * @static\n */\n public static function replace($path, $content, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replace($path, $content, $mode);\n }\n\n /**\n * Replace a given string within a given file.\n *\n * @param array|string $search\n * @param array|string $replace\n * @param string $path\n * @return void\n * @static\n */\n public static function replaceInFile($search, $replace, $path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replaceInFile($search, $replace, $path);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @return int\n * @static\n */\n public static function prepend($path, $data)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->prepend($path, $data);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param bool $lock\n * @return int\n * @static\n */\n public static function append($path, $data, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->append($path, $data, $lock);\n }\n\n /**\n * Get or set UNIX mode of a file or directory.\n *\n * @param string $path\n * @param int|null $mode\n * @return mixed\n * @static\n */\n public static function chmod($path, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->chmod($path, $mode);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function move($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->move($path, $target);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function copy($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copy($path, $target);\n }\n\n /**\n * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file.\n *\n * @param string $target\n * @param string $link\n * @return bool|null\n * @static\n */\n public static function link($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->link($target, $link);\n }\n\n /**\n * Create a relative symlink to the target file or directory.\n *\n * @param string $target\n * @param string $link\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function relativeLink($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->relativeLink($target, $link);\n }\n\n /**\n * Extract the file name from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function name($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->name($path);\n }\n\n /**\n * Extract the trailing name component from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basename($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->basename($path);\n }\n\n /**\n * Extract the parent directory from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function dirname($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->dirname($path);\n }\n\n /**\n * Extract the file extension from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function extension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->extension($path);\n }\n\n /**\n * Guess the file extension from the mime-type of a given file.\n *\n * @param string $path\n * @return string|null\n * @throws \\RuntimeException\n * @static\n */\n public static function guessExtension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->guessExtension($path);\n }\n\n /**\n * Get the file type of a given file.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function type($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->type($path);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Determine if the given path is a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function isDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isDirectory($directory);\n }\n\n /**\n * Determine if the given path is a directory that does not contain any other files or directories.\n *\n * @param string $directory\n * @param bool $ignoreDotFiles\n * @return bool\n * @static\n */\n public static function isEmptyDirectory($directory, $ignoreDotFiles = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isEmptyDirectory($directory, $ignoreDotFiles);\n }\n\n /**\n * Determine if the given path is readable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isReadable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isReadable($path);\n }\n\n /**\n * Determine if the given path is writable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isWritable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isWritable($path);\n }\n\n /**\n * Determine if two files are the same by comparing their hashes.\n *\n * @param string $firstFile\n * @param string $secondFile\n * @return bool\n * @static\n */\n public static function hasSameHash($firstFile, $secondFile)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hasSameHash($firstFile, $secondFile);\n }\n\n /**\n * Determine if the given path is a file.\n *\n * @param string $file\n * @return bool\n * @static\n */\n public static function isFile($file)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isFile($file);\n }\n\n /**\n * Find path names matching a given pattern.\n *\n * @param string $pattern\n * @param int $flags\n * @return array\n * @static\n */\n public static function glob($pattern, $flags = 0)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->glob($pattern, $flags);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function files($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->files($directory, $hidden);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function allFiles($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->allFiles($directory, $hidden);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string $directory\n * @return array\n * @static\n */\n public static function directories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->directories($directory);\n }\n\n /**\n * Ensure a directory exists.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @return void\n * @static\n */\n public static function ensureDirectoryExists($path, $mode = 493, $recursive = true)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->ensureDirectoryExists($path, $mode, $recursive);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @param bool $force\n * @return bool\n * @static\n */\n public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->makeDirectory($path, $mode, $recursive, $force);\n }\n\n /**\n * Move a directory.\n *\n * @param string $from\n * @param string $to\n * @param bool $overwrite\n * @return bool\n * @static\n */\n public static function moveDirectory($from, $to, $overwrite = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->moveDirectory($from, $to, $overwrite);\n }\n\n /**\n * Copy a directory from one location to another.\n *\n * @param string $directory\n * @param string $destination\n * @param int|null $options\n * @return bool\n * @static\n */\n public static function copyDirectory($directory, $destination, $options = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copyDirectory($directory, $destination, $options);\n }\n\n /**\n * Recursively delete a directory.\n * \n * The directory itself may be optionally preserved.\n *\n * @param string $directory\n * @param bool $preserve\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory, $preserve = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectory($directory, $preserve);\n }\n\n /**\n * Remove all of the directories within a given directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectories($directory);\n }\n\n /**\n * Empty the specified directory of all files and folders.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function cleanDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->cleanDirectory($directory);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Filesystem\\Filesystem::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Filesystem\\Filesystem::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Filesystem\\Filesystem::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Filesystem\\Filesystem::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\Access\\Gate\n */\n class Gate {\n /**\n * Determine if a given ability has been defined.\n *\n * @param string|array $ability\n * @return bool\n * @static\n */\n public static function has($ability)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->has($ability);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function allowIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allowIf($condition, $message, $code);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function denyIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyIf($condition, $message, $code);\n }\n\n /**\n * Define a new ability.\n *\n * @param \\UnitEnum|string $ability\n * @param callable|array|string $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function define($ability, $callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->define($ability, $callback);\n }\n\n /**\n * Define abilities for a resource.\n *\n * @param string $name\n * @param string $class\n * @param array|null $abilities\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function resource($name, $class, $abilities = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resource($name, $class, $abilities);\n }\n\n /**\n * Define a policy class for a given class type.\n *\n * @param string $class\n * @param string $policy\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function policy($class, $policy)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policy($class, $policy);\n }\n\n /**\n * Register a callback to run before all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->before($callback);\n }\n\n /**\n * Register a callback to run after all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->after($callback);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function allows($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allows($ability, $arguments);\n }\n\n /**\n * Determine if any of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function denies($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denies($ability, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function check($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->check($abilities, $arguments);\n }\n\n /**\n * Determine if any one of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function any($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->any($abilities, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function none($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->none($abilities, $arguments);\n }\n\n /**\n * Determine if the given ability should be granted for the current user.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function authorize($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->authorize($ability, $arguments);\n }\n\n /**\n * Inspect the user for the given ability.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function inspect($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->inspect($ability, $arguments);\n }\n\n /**\n * Get the raw result from the authorization callback.\n *\n * @param string $ability\n * @param mixed $arguments\n * @return mixed\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function raw($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->raw($ability, $arguments);\n }\n\n /**\n * Get a policy instance for a given class.\n *\n * @param object|string $class\n * @return mixed\n * @static\n */\n public static function getPolicyFor($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->getPolicyFor($class);\n }\n\n /**\n * Specify a callback to be used to guess policy names.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function guessPolicyNamesUsing($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->guessPolicyNamesUsing($callback);\n }\n\n /**\n * Build a policy class instance of the given type.\n *\n * @param object|string $class\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function resolvePolicy($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resolvePolicy($class);\n }\n\n /**\n * Get a gate instance for the given user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable|mixed $user\n * @return static\n * @static\n */\n public static function forUser($user)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->forUser($user);\n }\n\n /**\n * Get all of the defined abilities.\n *\n * @return array\n * @static\n */\n public static function abilities()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->abilities();\n }\n\n /**\n * Get all of the defined policies.\n *\n * @return array\n * @static\n */\n public static function policies()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policies();\n }\n\n /**\n * Set the default denial response for gates and policies.\n *\n * @param \\Illuminate\\Auth\\Access\\Response $response\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function defaultDenialResponse($response)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->defaultDenialResponse($response);\n }\n\n /**\n * Set the container instance used by the gate.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Deny with a HTTP status code.\n *\n * @param int $status\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyWithStatus($status, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyWithStatus($status, $message, $code);\n }\n\n /**\n * Deny with a 404 HTTP status code.\n *\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyAsNotFound($message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyAsNotFound($message, $code);\n }\n\n }\n /**\n * @see \\Illuminate\\Hashing\\HashManager\n * @see \\Illuminate\\Hashing\\AbstractHasher\n */\n class Hash {\n /**\n * Create an instance of the Bcrypt hash Driver.\n *\n * @return \\Illuminate\\Hashing\\BcryptHasher\n * @static\n */\n public static function createBcryptDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createBcryptDriver();\n }\n\n /**\n * Create an instance of the Argon2i hash Driver.\n *\n * @return \\Illuminate\\Hashing\\ArgonHasher\n * @static\n */\n public static function createArgonDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgonDriver();\n }\n\n /**\n * Create an instance of the Argon2id hash Driver.\n *\n * @return \\Illuminate\\Hashing\\Argon2IdHasher\n * @static\n */\n public static function createArgon2idDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgon2idDriver();\n }\n\n /**\n * Get information about the given hashed value.\n *\n * @param string $hashedValue\n * @return array\n * @static\n */\n public static function info($hashedValue)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->info($hashedValue);\n }\n\n /**\n * Hash the given value.\n *\n * @param string $value\n * @param array $options\n * @return string\n * @static\n */\n public static function make($value, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->make($value, $options);\n }\n\n /**\n * Check the given plain value against a hash.\n *\n * @param string $value\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function check($value, $hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->check($value, $hashedValue, $options);\n }\n\n /**\n * Check if the given hash has been hashed using the given options.\n *\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function needsRehash($hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->needsRehash($hashedValue, $options);\n }\n\n /**\n * Determine if a given string is already hashed.\n *\n * @param string $value\n * @return bool\n * @static\n */\n public static function isHashed($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->isHashed($value);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Verifies that the configuration is less than or equal to what is configured.\n *\n * @param array $value\n * @return bool\n * @internal\n * @static\n */\n public static function verifyConfiguration($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->verifyConfiguration($value);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @method static \\Illuminate\\Http\\Client\\PendingRequest baseUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBody(\\Psr\\Http\\Message\\StreamInterface|string $content, string $contentType = 'application/json')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asForm()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest attach(string|array $name, string|resource $contents = '', string|null $filename = null, array $headers = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asMultipart()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest bodyFormat(string $format)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withQueryParameters(array $parameters)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest contentType(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest acceptJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest accept(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeader(string $name, mixed $value)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest replaceHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBasicAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withDigestAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withNtlmAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withToken(string $token, string $type = 'Bearer')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUserAgent(string|bool $userAgent)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUrlParameters(array $parameters = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withCookies(array $cookies, string $domain)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest maxRedirects(int $max)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutRedirecting()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutVerifying()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest sink(string|resource $to)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest timeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest connectTimeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest retry(array|int $times, \\Closure|int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withOptions(array $options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withRequestMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withResponseMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest beforeSending(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throw(callable|null $callback = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwIf(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwUnless(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dump()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dd()\n * @method static \\Illuminate\\Http\\Client\\Response get(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response head(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response post(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response patch(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response put(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response delete(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static array pool(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Batch batch(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Response send(string $method, string $url, array $options = [])\n * @method static \\GuzzleHttp\\Client buildClient()\n * @method static \\GuzzleHttp\\Client createClient(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\GuzzleHttp\\HandlerStack buildHandlerStack()\n * @method static \\GuzzleHttp\\HandlerStack pushHandlers(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\Closure buildBeforeSendingHandler()\n * @method static \\Closure buildRecorderHandler()\n * @method static \\Closure buildStubHandler()\n * @method static \\GuzzleHttp\\Psr7\\RequestInterface runBeforeSendingCallbacks(\\GuzzleHttp\\Psr7\\RequestInterface $request, array $options)\n * @method static array mergeOptions(array ...$options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest stub(callable $callback)\n * @method static bool isAllowedRequestUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest async(bool $async = true)\n * @method static \\GuzzleHttp\\Promise\\PromiseInterface|null getPromise()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest truncateExceptionsAt(int $length)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dontTruncateExceptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setClient(\\GuzzleHttp\\Client $client)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setHandler(callable $handler)\n * @method static array getOptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Http\\Client\\Factory\n */\n class Http {\n /**\n * Add middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalMiddleware($middleware);\n }\n\n /**\n * Add request middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalRequestMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalRequestMiddleware($middleware);\n }\n\n /**\n * Add response middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalResponseMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalResponseMiddleware($middleware);\n }\n\n /**\n * Set the options to apply to every request.\n *\n * @param \\Closure|array $options\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalOptions($options)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalOptions($options);\n }\n\n /**\n * Create a new response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array $headers\n * @return \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::response($body, $status, $headers);\n }\n\n /**\n * Create a new PSR-7 response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\GuzzleHttp\\Psr7\\Response\n * @static\n */\n public static function psr7Response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::psr7Response($body, $status, $headers);\n }\n\n /**\n * Create a new RequestException instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\Illuminate\\Http\\Client\\RequestException\n * @static\n */\n public static function failedRequest($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::failedRequest($body, $status, $headers);\n }\n\n /**\n * Create a new connection exception for use during stubbing.\n *\n * @param string|null $message\n * @return \\Closure(\\Illuminate\\Http\\Client\\Request): \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function failedConnection($message = null)\n {\n return \\Illuminate\\Http\\Client\\Factory::failedConnection($message);\n }\n\n /**\n * Get an invokable object that returns a sequence of responses in order for use during stubbing.\n *\n * @param array $responses\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function sequence($responses = [])\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->sequence($responses);\n }\n\n /**\n * Register a stub callable that will intercept requests and be able to return stub responses.\n *\n * @param callable|array<string, mixed>|null $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Register a response sequence for the given URL pattern.\n *\n * @param string $url\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function fakeSequence($url = '*')\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fakeSequence($url);\n }\n\n /**\n * Stub the given URL using the given callback.\n *\n * @param string $url\n * @param \\Illuminate\\Http\\Client\\Response|\\GuzzleHttp\\Promise\\PromiseInterface|callable|int|string|array|\\Illuminate\\Http\\Client\\ResponseSequence $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function stubUrl($url, $callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->stubUrl($url, $callback);\n }\n\n /**\n * Indicate that an exception should be thrown if any request is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function preventStrayRequests($prevent = true)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventStrayRequests($prevent);\n }\n\n /**\n * Determine if stray requests are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayRequests()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventingStrayRequests();\n }\n\n /**\n * Allow stray, unfaked requests entirely, or optionally allow only specific URLs.\n *\n * @param array<int, string>|null $only\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function allowStrayRequests($only = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->allowStrayRequests($only);\n }\n\n /**\n * Begin recording request / response pairs.\n *\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function record()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->record();\n }\n\n /**\n * Record a request response pair.\n *\n * @param \\Illuminate\\Http\\Client\\Request $request\n * @param \\Illuminate\\Http\\Client\\Response|null $response\n * @return void\n * @static\n */\n public static function recordRequestResponsePair($request, $response)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->recordRequestResponsePair($request, $response);\n }\n\n /**\n * Assert that a request / response pair was recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSent($callback);\n }\n\n /**\n * Assert that the given request was sent in the given order.\n *\n * @param list<string|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable> $callbacks\n * @return void\n * @static\n */\n public static function assertSentInOrder($callbacks)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentInOrder($callbacks);\n }\n\n /**\n * Assert that a request / response pair was not recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertNotSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNotSent($callback);\n }\n\n /**\n * Assert that no request / response pair was recorded.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert how many requests have been recorded.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert that every created response sequence is empty.\n *\n * @return void\n * @static\n */\n public static function assertSequencesAreEmpty()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSequencesAreEmpty();\n }\n\n /**\n * Get a collection of the request / response pairs matching the given truth test.\n *\n * @param (\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable $callback\n * @return \\Illuminate\\Support\\Collection<int, array{0: \\Illuminate\\Http\\Client\\Request, 1: \\Illuminate\\Http\\Client\\Response|null}>\n * @static\n */\n public static function recorded($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->recorded($callback);\n }\n\n /**\n * Create a new pending request instance for this factory.\n *\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function createPendingRequest()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->createPendingRequest();\n }\n\n /**\n * Get the current event dispatcher implementation.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Get the array of global middleware.\n *\n * @return array\n * @static\n */\n public static function getGlobalMiddleware()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getGlobalMiddleware();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Client\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Client\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Client\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Client\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n /**\n * @see \\Illuminate\\Translation\\Translator\n */\n class Lang {\n /**\n * Determine if a translation exists for a given locale.\n *\n * @param string $key\n * @param string|null $locale\n * @return bool\n * @static\n */\n public static function hasForLocale($key, $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->hasForLocale($key, $locale);\n }\n\n /**\n * Determine if a translation exists.\n *\n * @param string $key\n * @param string|null $locale\n * @param bool $fallback\n * @return bool\n * @static\n */\n public static function has($key, $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->has($key, $locale, $fallback);\n }\n\n /**\n * Get the translation for the given key.\n *\n * @param string $key\n * @param array $replace\n * @param string|null $locale\n * @param bool $fallback\n * @return string|array\n * @static\n */\n public static function get($key, $replace = [], $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->get($key, $replace, $locale, $fallback);\n }\n\n /**\n * Get a translation according to an integer value.\n *\n * @param string $key\n * @param \\Countable|int|float|array $number\n * @param array $replace\n * @param string|null $locale\n * @return string\n * @static\n */\n public static function choice($key, $number, $replace = [], $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->choice($key, $number, $replace, $locale);\n }\n\n /**\n * Add translation lines to the given locale.\n *\n * @param array $lines\n * @param string $locale\n * @param string $namespace\n * @return void\n * @static\n */\n public static function addLines($lines, $locale, $namespace = '*')\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addLines($lines, $locale, $namespace);\n }\n\n /**\n * Load the specified language group.\n *\n * @param string $namespace\n * @param string $group\n * @param string $locale\n * @return void\n * @static\n */\n public static function load($namespace, $group, $locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->load($namespace, $group, $locale);\n }\n\n /**\n * Register a callback that is responsible for handling missing translation keys.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleMissingKeysUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->handleMissingKeysUsing($callback);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string $hint\n * @return void\n * @static\n */\n public static function addNamespace($namespace, $hint)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addNamespace($namespace, $hint);\n }\n\n /**\n * Add a new path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addPath($path);\n }\n\n /**\n * Add a new JSON path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addJsonPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addJsonPath($path);\n }\n\n /**\n * Parse a key into namespace, group, and item.\n *\n * @param string $key\n * @return array\n * @static\n */\n public static function parseKey($key)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->parseKey($key);\n }\n\n /**\n * Specify a callback that should be invoked to determined the applicable locale array.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function determineLocalesUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->determineLocalesUsing($callback);\n }\n\n /**\n * Get the message selector instance.\n *\n * @return \\Illuminate\\Translation\\MessageSelector\n * @static\n */\n public static function getSelector()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getSelector();\n }\n\n /**\n * Set the message selector instance.\n *\n * @param \\Illuminate\\Translation\\MessageSelector $selector\n * @return void\n * @static\n */\n public static function setSelector($selector)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setSelector($selector);\n }\n\n /**\n * Get the language line loader implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Loader\n * @static\n */\n public static function getLoader()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLoader();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function locale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->locale();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLocale();\n }\n\n /**\n * Set the default locale.\n *\n * @param string $locale\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Get the fallback locale being used.\n *\n * @return string\n * @static\n */\n public static function getFallback()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getFallback();\n }\n\n /**\n * Set the fallback locale being used.\n *\n * @param string $fallback\n * @return void\n * @static\n */\n public static function setFallback($fallback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setFallback($fallback);\n }\n\n /**\n * Set the loaded translation groups.\n *\n * @param array $loaded\n * @return void\n * @static\n */\n public static function setLoaded($loaded)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLoaded($loaded);\n }\n\n /**\n * Add a handler to be executed in order to format a given class to a string during translation replacements.\n *\n * @param callable|string $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Set the parsed value of a key.\n *\n * @param string $key\n * @param array $parsed\n * @return void\n * @static\n */\n public static function setParsedKey($key, $parsed)\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setParsedKey($key, $parsed);\n }\n\n /**\n * Flush the cache of parsed keys.\n *\n * @return void\n * @static\n */\n public static function flushParsedKeys()\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->flushParsedKeys();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Translation\\Translator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Translation\\Translator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Translation\\Translator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Translation\\Translator::flushMacros();\n }\n\n }\n /**\n * @method static void write(string $level, \\Illuminate\\Contracts\\Support\\Arrayable|\\Illuminate\\Contracts\\Support\\Jsonable|\\Illuminate\\Support\\Stringable|array|string $message, array $context = [])\n * @method static \\Illuminate\\Log\\Logger withContext(array $context = [])\n * @method static void listen(\\Closure $callback)\n * @method static \\Psr\\Log\\LoggerInterface getLogger()\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $dispatcher)\n * @method static \\Illuminate\\Log\\Logger|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Log\\Logger|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Log\\LogManager\n */\n class Log {\n /**\n * Build an on-demand log channel.\n *\n * @param array $config\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new, on-demand aggregate logger instance.\n *\n * @param array $channels\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function stack($channels, $channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->stack($channels, $channel);\n }\n\n /**\n * Get a log channel instance.\n *\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function channel($channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->channel($channel);\n }\n\n /**\n * Get a log driver instance.\n *\n * @param string|null $driver\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Share context across channels and stacks.\n *\n * @param array $context\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function shareContext($context)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->shareContext($context);\n }\n\n /**\n * The context shared across channels and stacks.\n *\n * @return array\n * @static\n */\n public static function sharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->sharedContext();\n }\n\n /**\n * Flush the log context on all currently resolved channels.\n *\n * @param string[]|null $keys\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function withoutContext($keys = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->withoutContext($keys);\n }\n\n /**\n * Flush the shared context.\n *\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function flushSharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->flushSharedContext();\n }\n\n /**\n * Get the default log driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default log driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Unset the given channel instance.\n *\n * @param string|null $driver\n * @return void\n * @static\n */\n public static function forgetChannel($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->forgetChannel($driver);\n }\n\n /**\n * Get all of the resolved log channels.\n *\n * @return array\n * @static\n */\n public static function getChannels()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getChannels();\n }\n\n /**\n * System is unusable.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function emergency($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->emergency($message, $context);\n }\n\n /**\n * Action must be taken immediately.\n * \n * Example: Entire website down, database unavailable, etc. This should\n * trigger the SMS alerts and wake you up.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function alert($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->alert($message, $context);\n }\n\n /**\n * Critical conditions.\n * \n * Example: Application component unavailable, unexpected exception.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function critical($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->critical($message, $context);\n }\n\n /**\n * Runtime errors that do not require immediate action but should typically\n * be logged and monitored.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function error($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->error($message, $context);\n }\n\n /**\n * Exceptional occurrences that are not errors.\n * \n * Example: Use of deprecated APIs, poor use of an API, undesirable things\n * that are not necessarily wrong.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function warning($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->warning($message, $context);\n }\n\n /**\n * Normal but significant events.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function notice($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->notice($message, $context);\n }\n\n /**\n * Interesting events.\n * \n * Example: User logs in, SQL logs.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function info($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->info($message, $context);\n }\n\n /**\n * Detailed debug information.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function debug($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->debug($message, $context);\n }\n\n /**\n * Logs with an arbitrary level.\n *\n * @param mixed $level\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function log($level, $message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->log($level, $message, $context);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @method static void alwaysFrom(string $address, string|null $name = null)\n * @method static void alwaysReplyTo(string $address, string|null $name = null)\n * @method static void alwaysReturnPath(string $address)\n * @method static void alwaysTo(string $address, string|null $name = null)\n * @method static \\Illuminate\\Mail\\SentMessage|null html(string $html, mixed $callback)\n * @method static \\Illuminate\\Mail\\SentMessage|null plain(string $view, array $data, mixed $callback)\n * @method static string render(string|array $view, array $data = [])\n * @method static mixed onQueue(\\BackedEnum|string|null $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed queueOn(string $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed laterOn(string $queue, \\DateTimeInterface|\\DateInterval|int $delay, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static \\Symfony\\Component\\Mailer\\Transport\\TransportInterface getSymfonyTransport()\n * @method static \\Illuminate\\Contracts\\View\\Factory getViewFactory()\n * @method static void setSymfonyTransport(\\Symfony\\Component\\Mailer\\Transport\\TransportInterface $transport)\n * @method static \\Illuminate\\Mail\\Mailer setQueue(\\Illuminate\\Contracts\\Queue\\Factory $queue)\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @see \\Illuminate\\Mail\\MailManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\MailFake\n */\n class Mail {\n /**\n * Get a mailer instance by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Mail\\Mailer\n * @static\n */\n public static function mailer($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->mailer($name);\n }\n\n /**\n * Get a mailer driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Build a new mailer instance.\n *\n * @param array $config\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new transport instance.\n *\n * @param array $config\n * @return \\Symfony\\Component\\Mailer\\Transport\\TransportInterface\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createSymfonyTransport($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->createSymfonyTransport($config);\n }\n\n /**\n * Get the default mail driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default mail driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given mailer and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom transport creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved mailer instances.\n *\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function forgetMailers()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->forgetMailers();\n }\n\n /**\n * Assert if a mailable was sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSent($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent or queued to be sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotOutgoing($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotOutgoing($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotSent($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were sent or queued to be sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingOutgoing()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingOutgoing();\n }\n\n /**\n * Assert that no mailables were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert if a mailable was queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueued($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotQueued($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were queued.\n *\n * @return void\n * @static\n */\n public static function assertNothingQueued()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingQueued();\n }\n\n /**\n * Assert the total number of mailables that were sent.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert the total number of mailables that were queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertQueuedCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueuedCount($count);\n }\n\n /**\n * Assert the total number of mailables that were sent or queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertOutgoingCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertOutgoingCount($count);\n }\n\n /**\n * Get all of the mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->sent($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been sent.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasSent($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasSent($mailable);\n }\n\n /**\n * Get all of the queued mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function queued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queued($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been queued.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasQueued($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasQueued($mailable);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function to($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->to($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function cc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->cc($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function bcc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->bcc($users);\n }\n\n /**\n * Send a new message with only a raw text part.\n *\n * @param string $text\n * @param \\Closure|string $callback\n * @return void\n * @static\n */\n public static function raw($text, $callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->raw($text, $callback);\n }\n\n /**\n * Send a new message using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return mixed|void\n * @static\n */\n public static function send($view, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->send($view, $data, $callback);\n }\n\n /**\n * Send a new message synchronously using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $mailable\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return void\n * @static\n */\n public static function sendNow($mailable, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->sendNow($mailable, $data, $callback);\n }\n\n /**\n * Queue a new message for sending.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function queue($view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queue($view, $queue);\n }\n\n /**\n * Queue a new e-mail message for sending after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->later($delay, $view, $queue);\n }\n\n }\n /**\n * @see \\Illuminate\\Notifications\\ChannelManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n */\n class Notification {\n /**\n * Send the given notification to the given notifiable entities.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @return void\n * @static\n */\n public static function send($notifiables, $notification)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->send($notifiables, $notification);\n }\n\n /**\n * Send the given notification immediately.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @param array|null $channels\n * @return void\n * @static\n */\n public static function sendNow($notifiables, $notification, $channels = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->sendNow($notifiables, $notification, $channels);\n }\n\n /**\n * Get a channel instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function channel($name = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->channel($name);\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function deliversVia()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->deliversVia();\n }\n\n /**\n * Set the default channel driver name.\n *\n * @param string $channel\n * @return void\n * @static\n */\n public static function deliverVia($channel)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->deliverVia($channel);\n }\n\n /**\n * Set the locale of notifications.\n *\n * @param string $locale\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function locale($locale)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->locale($locale);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Assert if a notification was sent on-demand based on a truth-test callback.\n *\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentOnDemand($notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemand($notification, $callback);\n }\n\n /**\n * Assert if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert if a notification was sent on-demand a number of times.\n *\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentOnDemandTimes($notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemandTimes($notification, $times);\n }\n\n /**\n * Assert if a notification was sent a number of times.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentToTimes($notifiable, $notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentToTimes($notifiable, $notification, $times);\n }\n\n /**\n * Determine if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNotSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNotSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert that no notifications were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert that no notifications were sent to the given notifiable.\n *\n * @param mixed $notifiable\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNothingSentTo($notifiable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSentTo($notifiable);\n }\n\n /**\n * Assert the total amount of times a notification was sent.\n *\n * @param string $notification\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertSentTimes($notification, $expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTimes($notification, $expectedCount);\n }\n\n /**\n * Assert the total count of notification that were sent.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Get all of the notifications matching a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sent($notifiable, $notification, $callback);\n }\n\n /**\n * Determine if there are more notifications left to inspect.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @return bool\n * @static\n */\n public static function hasSent($notifiable, $notification)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->hasSent($notifiable, $notification);\n }\n\n /**\n * Specify if notification should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the notifications that have been sent.\n *\n * @return array\n * @static\n */\n public static function sentNotifications()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sentNotifications();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::flushMacros();\n }\n\n }\n /**\n * @method static string sendResetLink(array $credentials, \\Closure|null $callback = null)\n * @method static mixed reset(array $credentials, \\Closure $callback)\n * @method static \\Illuminate\\Contracts\\Auth\\CanResetPassword|null getUser(array $credentials)\n * @method static string createToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static void deleteToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static bool tokenExists(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user, string $token)\n * @method static \\Illuminate\\Auth\\Passwords\\TokenRepositoryInterface getRepository()\n * @method static \\Illuminate\\Support\\Timebox getTimebox()\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBroker\n */\n class Password {\n /**\n * Attempt to get the broker from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\PasswordBroker\n * @static\n */\n public static function broker($name = null)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->broker($name);\n }\n\n /**\n * Get the default password broker name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default password broker name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n }\n /**\n * @method static \\Illuminate\\Process\\PendingProcess command(array|string $command)\n * @method static \\Illuminate\\Process\\PendingProcess path(string $path)\n * @method static \\Illuminate\\Process\\PendingProcess timeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess idleTimeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess forever()\n * @method static \\Illuminate\\Process\\PendingProcess env(array $environment)\n * @method static \\Illuminate\\Process\\PendingProcess input(\\Traversable|resource|string|int|float|bool|null $input)\n * @method static \\Illuminate\\Process\\PendingProcess quietly()\n * @method static \\Illuminate\\Process\\PendingProcess tty(bool $tty = true)\n * @method static \\Illuminate\\Process\\PendingProcess options(array $options)\n * @method static \\Illuminate\\Contracts\\Process\\ProcessResult run(array|string|null $command = null, callable|null $output = null)\n * @method static \\Illuminate\\Process\\InvokedProcess start(array|string|null $command = null, callable|null $output = null)\n * @method static bool supportsTty()\n * @method static \\Illuminate\\Process\\PendingProcess withFakeHandlers(array $fakeHandlers)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Process\\PendingProcess\n * @see \\Illuminate\\Process\\Factory\n */\n class Process {\n /**\n * Create a new fake process response for testing purposes.\n *\n * @param array|string $output\n * @param array|string $errorOutput\n * @param int $exitCode\n * @return \\Illuminate\\Process\\FakeProcessResult\n * @static\n */\n public static function result($output = '', $errorOutput = '', $exitCode = 0)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->result($output, $errorOutput, $exitCode);\n }\n\n /**\n * Begin describing a fake process lifecycle.\n *\n * @return \\Illuminate\\Process\\FakeProcessDescription\n * @static\n */\n public static function describe()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->describe();\n }\n\n /**\n * Begin describing a fake process sequence.\n *\n * @param array $processes\n * @return \\Illuminate\\Process\\FakeProcessSequence\n * @static\n */\n public static function sequence($processes = [])\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->sequence($processes);\n }\n\n /**\n * Indicate that the process factory should fake processes.\n *\n * @param \\Closure|array|null $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Determine if the process factory has fake process handlers and is recording processes.\n *\n * @return bool\n * @static\n */\n public static function isRecording()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->isRecording();\n }\n\n /**\n * Record the given process if processes should be recorded.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function recordIfRecording($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->recordIfRecording($process, $result);\n }\n\n /**\n * Record the given process.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function record($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->record($process, $result);\n }\n\n /**\n * Indicate that an exception should be thrown if any process is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function preventStrayProcesses($prevent = true)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventStrayProcesses($prevent);\n }\n\n /**\n * Determine if stray processes are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayProcesses()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventingStrayProcesses();\n }\n\n /**\n * Assert that a process was recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRan($callback);\n }\n\n /**\n * Assert that a process was recorded a given number of times matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @param int $times\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRanTimes($callback, $times = 1)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRanTimes($callback, $times);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNotRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNotRan($callback);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertDidntRun($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertDidntRun($callback);\n }\n\n /**\n * Assert that no processes were recorded.\n *\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNothingRan()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNothingRan();\n }\n\n /**\n * Start defining a pool of processes.\n *\n * @param callable $callback\n * @return \\Illuminate\\Process\\Pool\n * @static\n */\n public static function pool($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pool($callback);\n }\n\n /**\n * Start defining a series of piped processes.\n *\n * @param callable|array $callback\n * @return \\Illuminate\\Contracts\\Process\\ProcessResult\n * @static\n */\n public static function pipe($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pipe($callback, $output);\n }\n\n /**\n * Run a pool of processes and wait for them to finish executing.\n *\n * @param callable $callback\n * @param callable|null $output\n * @return \\Illuminate\\Process\\ProcessPoolResults\n * @static\n */\n public static function concurrently($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->concurrently($callback, $output);\n }\n\n /**\n * Create a new pending process associated with this factory.\n *\n * @return \\Illuminate\\Process\\PendingProcess\n * @static\n */\n public static function newPendingProcess()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->newPendingProcess();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Process\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Process\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Process\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Process\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Queue\\QueueManager\n * @see \\Illuminate\\Queue\\Queue\n * @see \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n */\n class Queue {\n /**\n * Register an event listener for the before job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->before($callback);\n }\n\n /**\n * Register an event listener for the after job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->after($callback);\n }\n\n /**\n * Register an event listener for the exception occurred job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function exceptionOccurred($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->exceptionOccurred($callback);\n }\n\n /**\n * Register an event listener for the daemon queue loop.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function looping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->looping($callback);\n }\n\n /**\n * Register an event listener for the failed job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function failing($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->failing($callback);\n }\n\n /**\n * Register an event listener for the daemon queue starting.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function starting($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->starting($callback);\n }\n\n /**\n * Register an event listener for the daemon queue stopping.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function stopping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->stopping($callback);\n }\n\n /**\n * Determine if the driver is connected.\n *\n * @param string|null $name\n * @return bool\n * @static\n */\n public static function connected($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connected($name);\n }\n\n /**\n * Resolve a queue connection instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Queue\\Queue\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function extend($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->extend($driver, $resolver);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function addConnector($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->addConnector($driver, $resolver);\n }\n\n /**\n * Get the name of the default queue connection.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the name of the default queue connection.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get the full name for the given connection.\n *\n * @param string|null $connection\n * @return string\n * @static\n */\n public static function getName($connection = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getName($connection);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Queue\\QueueManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Specify the jobs that should be queued instead of faked.\n *\n * @param array|string $jobsToBeQueued\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function except($jobsToBeQueued)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->except($jobsToBeQueued);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushed($job, $callback);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string $queue\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedOn($queue, $job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedOn($queue, $job, $callback);\n }\n\n /**\n * Assert if a job was pushed with chained jobs based on a truth-test callback.\n *\n * @param string $job\n * @param array $expectedChain\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithChain($job, $expectedChain = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithChain($job, $expectedChain, $callback);\n }\n\n /**\n * Assert if a job was pushed with an empty chain based on a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithoutChain($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithoutChain($job, $callback);\n }\n\n /**\n * Assert if a closure was pushed based on a truth-test callback.\n *\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertClosurePushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosurePushed($callback);\n }\n\n /**\n * Assert that a closure was not pushed based on a truth-test callback.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertClosureNotPushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosureNotPushed($callback);\n }\n\n /**\n * Determine if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNotPushed($job, $callback);\n }\n\n /**\n * Assert the total count of jobs that were pushed.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Assert that no jobs were pushed.\n *\n * @return void\n * @static\n */\n public static function assertNothingPushed()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNothingPushed();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function pushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushed($job, $callback);\n }\n\n /**\n * Get all of the raw pushes matching a truth-test callback.\n *\n * @param null|\\Closure(string, ?string, array): bool $callback\n * @return \\Illuminate\\Support\\Collection<int, RawPushType>\n * @static\n */\n public static function pushedRaw($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedRaw($callback);\n }\n\n /**\n * Get all of the jobs by listener class, passing an optional truth-test callback.\n *\n * @param class-string $listenerClass\n * @param (\\Closure(mixed, \\Illuminate\\Events\\CallQueuedListener, string|null, mixed): bool)|null $callback\n * @return \\Illuminate\\Support\\Collection<int, \\Illuminate\\Events\\CallQueuedListener>\n * @static\n */\n public static function listenersPushed($listenerClass, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->listenersPushed($listenerClass, $callback);\n }\n\n /**\n * Determine if there are any stored jobs for a given class.\n *\n * @param string $job\n * @return bool\n * @static\n */\n public static function hasPushed($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->hasPushed($job);\n }\n\n /**\n * Get the size of the queue.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function size($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->size($queue);\n }\n\n /**\n * Get the number of pending jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function pendingSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pendingSize($queue);\n }\n\n /**\n * Get the number of delayed jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function delayedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->delayedSize($queue);\n }\n\n /**\n * Get the number of reserved jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function reservedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->reservedSize($queue);\n }\n\n /**\n * Get the creation timestamp of the oldest pending job, excluding delayed jobs.\n *\n * @param string|null $queue\n * @return int|null\n * @static\n */\n public static function creationTimeOfOldestPendingJob($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->creationTimeOfOldestPendingJob($queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function push($job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->push($job, $data, $queue);\n }\n\n /**\n * Determine if a job should be faked or actually dispatched.\n *\n * @param object $job\n * @return bool\n * @static\n */\n public static function shouldFakeJob($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->shouldFakeJob($job);\n }\n\n /**\n * Push a raw payload onto the queue.\n *\n * @param string $payload\n * @param string|null $queue\n * @param array $options\n * @return mixed\n * @static\n */\n public static function pushRaw($payload, $queue = null, $options = [])\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushRaw($payload, $queue, $options);\n }\n\n /**\n * Push a new job onto the queue after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->later($delay, $job, $data, $queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string $queue\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function pushOn($queue, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushOn($queue, $job, $data);\n }\n\n /**\n * Push a new job onto a specific queue after (n) seconds.\n *\n * @param string $queue\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function laterOn($queue, $delay, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->laterOn($queue, $delay, $job, $data);\n }\n\n /**\n * Pop the next job off of the queue.\n *\n * @param string|null $queue\n * @return \\Illuminate\\Contracts\\Queue\\Job|null\n * @static\n */\n public static function pop($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pop($queue);\n }\n\n /**\n * Push an array of jobs onto the queue.\n *\n * @param array $jobs\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function bulk($jobs, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->bulk($jobs, $data, $queue);\n }\n\n /**\n * Get the jobs that have been pushed.\n *\n * @return array\n * @static\n */\n public static function pushedJobs()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedJobs();\n }\n\n /**\n * Get the payloads that were pushed raw.\n *\n * @return list<RawPushType>\n * @static\n */\n public static function rawPushes()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->rawPushes();\n }\n\n /**\n * Specify if jobs should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the connection name for the queue.\n *\n * @return string\n * @static\n */\n public static function getConnectionName()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->getConnectionName();\n }\n\n /**\n * Set the connection name for the queue.\n *\n * @param string $name\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function setConnectionName($name)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->setConnectionName($name);\n }\n\n /**\n * Migrate the delayed jobs that are ready to the regular queue.\n *\n * @param string $from\n * @param string $to\n * @return array\n * @static\n */\n public static function migrateExpiredJobs($from, $to)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->migrateExpiredJobs($from, $to);\n }\n\n /**\n * Delete a reserved job from the queue.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @return void\n * @static\n */\n public static function deleteReserved($queue, $job)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteReserved($queue, $job);\n }\n\n /**\n * Delete a reserved job from the reserved queue and release it.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @param int $delay\n * @return void\n * @static\n */\n public static function deleteAndRelease($queue, $job, $delay)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteAndRelease($queue, $job, $delay);\n }\n\n /**\n * Delete all of the jobs from the queue.\n *\n * @param string $queue\n * @return int\n * @static\n */\n public static function clear($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->clear($queue);\n }\n\n /**\n * Get the queue or return the default.\n *\n * @param string|null $queue\n * @return string\n * @static\n */\n public static function getQueue($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getQueue($queue);\n }\n\n /**\n * Get the connection for the queue.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function getConnection()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getConnection();\n }\n\n /**\n * Get the underlying Redis instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the maximum number of attempts for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobTries($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobTries($job);\n }\n\n /**\n * Get the backoff for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobBackoff($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobBackoff($job);\n }\n\n /**\n * Get the expiration timestamp for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobExpiration($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobExpiration($job);\n }\n\n /**\n * Register a callback to be executed when creating job payloads.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function createPayloadUsing($callback)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n \\Illuminate\\Queue\\RedisQueue::createPayloadUsing($callback);\n }\n\n /**\n * Get the container instance being used by the connection.\n *\n * @return \\Illuminate\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\RateLimiter\n */\n class RateLimiter {\n /**\n * Register a named limiter configuration.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Cache\\RateLimiter\n * @static\n */\n public static function for($name, $callback)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->for($name, $callback);\n }\n\n /**\n * Get the given named rate limiter.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @return \\Closure|null\n * @static\n */\n public static function limiter($name)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->limiter($name);\n }\n\n /**\n * Attempts to execute a callback if it's not limited.\n *\n * @param string $key\n * @param int $maxAttempts\n * @param \\Closure $callback\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return mixed\n * @static\n */\n public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds);\n }\n\n /**\n * Determine if the given key has been \"accessed\" too many times.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return bool\n * @static\n */\n public static function tooManyAttempts($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->tooManyAttempts($key, $maxAttempts);\n }\n\n /**\n * Increment (by 1) the counter for a given key for a given decay time.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return int\n * @static\n */\n public static function hit($key, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->hit($key, $decaySeconds);\n }\n\n /**\n * Increment the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function increment($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->increment($key, $decaySeconds, $amount);\n }\n\n /**\n * Decrement the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->decrement($key, $decaySeconds, $amount);\n }\n\n /**\n * Get the number of attempts for the given key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function attempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempts($key);\n }\n\n /**\n * Reset the number of attempts for the given key.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function resetAttempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->resetAttempts($key);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function remaining($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->remaining($key, $maxAttempts);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function retriesLeft($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->retriesLeft($key, $maxAttempts);\n }\n\n /**\n * Clear the hits and lockout timer for the given key.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function clear($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n $instance->clear($key);\n }\n\n /**\n * Get the number of seconds until the \"key\" is accessible again.\n *\n * @param string $key\n * @return int\n * @static\n */\n public static function availableIn($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->availableIn($key);\n }\n\n /**\n * Clean the rate limiter key from unicode characters.\n *\n * @param string $key\n * @return string\n * @static\n */\n public static function cleanRateLimiterKey($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->cleanRateLimiterKey($key);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\Redirector\n */\n class Redirect {\n /**\n * Create a new redirect response to the previous location.\n *\n * @param int $status\n * @param array $headers\n * @param mixed $fallback\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function back($status = 302, $headers = [], $fallback = false)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->back($status, $headers, $fallback);\n }\n\n /**\n * Create a new redirect response to the current URI.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function refresh($status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->refresh($status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function guest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->guest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param mixed $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function intended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->intended($default, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function to($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->to($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to an external URL (no validation).\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function away($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->away($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to the given HTTPS path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function secure($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->secure($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function route($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->route($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->signedRoute($route, $parameters, $expiration, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function action($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->action($action, $parameters, $status, $headers);\n }\n\n /**\n * Get the URL generator instance.\n *\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function getUrlGenerator()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getUrlGenerator();\n }\n\n /**\n * Set the active session store.\n *\n * @param \\Illuminate\\Session\\Store $session\n * @return void\n * @static\n */\n public static function setSession($session)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n $instance->setSession($session);\n }\n\n /**\n * Get the \"intended\" URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function getIntendedUrl()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getIntendedUrl();\n }\n\n /**\n * Set the \"intended\" URL in the session.\n *\n * @param string $url\n * @return \\Illuminate\\Routing\\Redirector\n * @static\n */\n public static function setIntendedUrl($url)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->setIntendedUrl($url);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Redirector::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Redirector::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Redirector::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Redirector::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Http\\Request\n */\n class Request {\n /**\n * Create a new Illuminate HTTP request from server variables.\n *\n * @return static\n * @static\n */\n public static function capture()\n {\n return \\Illuminate\\Http\\Request::capture();\n }\n\n /**\n * Return the Request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function instance()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->instance();\n }\n\n /**\n * Get the request method.\n *\n * @return string\n * @static\n */\n public static function method()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->method();\n }\n\n /**\n * Get a URI instance for the request.\n *\n * @return \\Illuminate\\Support\\Uri\n * @static\n */\n public static function uri()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->uri();\n }\n\n /**\n * Get the root URL for the application.\n *\n * @return string\n * @static\n */\n public static function root()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->root();\n }\n\n /**\n * Get the URL (no query string) for the request.\n *\n * @return string\n * @static\n */\n public static function url()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->url();\n }\n\n /**\n * Get the full URL for the request.\n *\n * @return string\n * @static\n */\n public static function fullUrl()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrl();\n }\n\n /**\n * Get the full URL for the request with the added query string parameters.\n *\n * @param array $query\n * @return string\n * @static\n */\n public static function fullUrlWithQuery($query)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithQuery($query);\n }\n\n /**\n * Get the full URL for the request without the given query string parameters.\n *\n * @param array|string $keys\n * @return string\n * @static\n */\n public static function fullUrlWithoutQuery($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithoutQuery($keys);\n }\n\n /**\n * Get the current path info for the request.\n *\n * @return string\n * @static\n */\n public static function path()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->path();\n }\n\n /**\n * Get the current decoded path info for the request.\n *\n * @return string\n * @static\n */\n public static function decodedPath()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->decodedPath();\n }\n\n /**\n * Get a segment from the URI (1 based index).\n *\n * @param int $index\n * @param string|null $default\n * @return string|null\n * @static\n */\n public static function segment($index, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segment($index, $default);\n }\n\n /**\n * Get all of the segments for the request path.\n *\n * @return array\n * @static\n */\n public static function segments()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segments();\n }\n\n /**\n * Determine if the current request URI matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the route name matches a given pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function routeIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->routeIs(...$patterns);\n }\n\n /**\n * Determine if the current request URL and query string match a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function fullUrlIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlIs(...$patterns);\n }\n\n /**\n * Get the host name.\n *\n * @return string\n * @static\n */\n public static function host()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->host();\n }\n\n /**\n * Get the HTTP host being requested.\n *\n * @return string\n * @static\n */\n public static function httpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->httpHost();\n }\n\n /**\n * Get the scheme and HTTP host.\n *\n * @return string\n * @static\n */\n public static function schemeAndHttpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->schemeAndHttpHost();\n }\n\n /**\n * Determine if the request is the result of an AJAX call.\n *\n * @return bool\n * @static\n */\n public static function ajax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ajax();\n }\n\n /**\n * Determine if the request is the result of a PJAX call.\n *\n * @return bool\n * @static\n */\n public static function pjax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->pjax();\n }\n\n /**\n * Determine if the request is the result of a prefetch call.\n *\n * @return bool\n * @static\n */\n public static function prefetch()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefetch();\n }\n\n /**\n * Determine if the request is over HTTPS.\n *\n * @return bool\n * @static\n */\n public static function secure()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->secure();\n }\n\n /**\n * Get the client IP address.\n *\n * @return string|null\n * @static\n */\n public static function ip()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ip();\n }\n\n /**\n * Get the client IP addresses.\n *\n * @return array\n * @static\n */\n public static function ips()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ips();\n }\n\n /**\n * Get the client user agent.\n *\n * @return string|null\n * @static\n */\n public static function userAgent()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->userAgent();\n }\n\n /**\n * Merge new input into the current request's input array.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function merge($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->merge($input);\n }\n\n /**\n * Merge new input into the request's input, but only when that key is missing from the request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function mergeIfMissing($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->mergeIfMissing($input);\n }\n\n /**\n * Replace the input values for the current request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function replace($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->replace($input);\n }\n\n /**\n * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel.\n * \n * Instead, you may use the \"input\" method.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the JSON payload for the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? \\Symfony\\Component\\HttpFoundation\\InputBag : mixed)\n * @static\n */\n public static function json($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->json($key, $default);\n }\n\n /**\n * Create a new request instance from the given Laravel request.\n *\n * @param \\Illuminate\\Http\\Request $from\n * @param \\Illuminate\\Http\\Request|null $to\n * @return static\n * @static\n */\n public static function createFrom($from, $to = null)\n {\n return \\Illuminate\\Http\\Request::createFrom($from, $to);\n }\n\n /**\n * Create an Illuminate request from a Symfony instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return static\n * @static\n */\n public static function createFromBase($request)\n {\n return \\Illuminate\\Http\\Request::createFromBase($request);\n }\n\n /**\n * Clones a request and overrides some of its parameters.\n *\n * @return static\n * @param array|null $query The GET parameters\n * @param array|null $request The POST parameters\n * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array|null $cookies The COOKIE parameters\n * @param array|null $files The FILES parameters\n * @param array|null $server The SERVER parameters\n * @static\n */\n public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server);\n }\n\n /**\n * Whether the request contains a Session object.\n * \n * This method does not give any information about the state of the session object,\n * like whether the session is started or not. It is just a way to check if this Request\n * is associated with a Session instance.\n *\n * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory`\n * @static\n */\n public static function hasSession($skipIfUninitialized = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasSession($skipIfUninitialized);\n }\n\n /**\n * Gets the Session.\n *\n * @throws SessionNotFoundException When session is not set properly\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSession();\n }\n\n /**\n * Get the session associated with the request.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @throws \\RuntimeException\n * @static\n */\n public static function session()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->session();\n }\n\n /**\n * Set the session instance on the request.\n *\n * @param \\Illuminate\\Contracts\\Session\\Session $session\n * @return void\n * @static\n */\n public static function setLaravelSession($session)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setLaravelSession($session);\n }\n\n /**\n * Set the locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setRequestLocale($locale);\n }\n\n /**\n * Set the default locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setDefaultRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setDefaultRequestLocale($locale);\n }\n\n /**\n * Get the user making the request.\n *\n * @param string|null $guard\n * @return mixed\n * @static\n */\n public static function user($guard = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->user($guard);\n }\n\n /**\n * Get the route handling the request.\n *\n * @param string|null $param\n * @param mixed $default\n * @return ($param is null ? \\Illuminate\\Routing\\Route : object|string|null)\n * @static\n */\n public static function route($param = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->route($param, $default);\n }\n\n /**\n * Get a unique fingerprint for the request / route / IP address.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function fingerprint()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fingerprint();\n }\n\n /**\n * Set the JSON payload for the request.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\InputBag $json\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setJson($json)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setJson($json);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getUserResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserResolver();\n }\n\n /**\n * Set the user resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setUserResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setUserResolver($callback);\n }\n\n /**\n * Get the route resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getRouteResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRouteResolver();\n }\n\n /**\n * Set the route resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setRouteResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRouteResolver($callback);\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @return array\n * @static\n */\n public static function toArray()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->toArray();\n }\n\n /**\n * Determine if the given offset exists.\n *\n * @param string $offset\n * @return bool\n * @static\n */\n public static function offsetExists($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetExists($offset);\n }\n\n /**\n * Get the value at the given offset.\n *\n * @param string $offset\n * @return mixed\n * @static\n */\n public static function offsetGet($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetGet($offset);\n }\n\n /**\n * Set the value at the given offset.\n *\n * @param string $offset\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($offset, $value)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetSet($offset, $value);\n }\n\n /**\n * Remove the value at the given offset.\n *\n * @param string $offset\n * @return void\n * @static\n */\n public static function offsetUnset($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetUnset($offset);\n }\n\n /**\n * Sets the parameters for this request.\n * \n * This method also re-initializes all properties.\n *\n * @param array $query The GET parameters\n * @param array $request The POST parameters\n * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array $cookies The COOKIE parameters\n * @param array $files The FILES parameters\n * @param array $server The SERVER parameters\n * @param string|resource|null $content The raw body data\n * @static\n */\n public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);\n }\n\n /**\n * Creates a new request with values from PHP's super globals.\n *\n * @static\n */\n public static function createFromGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::createFromGlobals();\n }\n\n /**\n * Creates a Request based on a given URI and configuration.\n * \n * The information contained in the URI always take precedence\n * over the other information (server and parameters).\n *\n * @param string $uri The URI\n * @param string $method The HTTP method\n * @param array $parameters The query (GET) or request (POST) parameters\n * @param array $cookies The request cookies ($_COOKIE)\n * @param array $files The request files ($_FILES)\n * @param array $server The server parameters ($_SERVER)\n * @param string|resource|null $content The raw body data\n * @throws BadRequestException When the URI is invalid\n * @static\n */\n public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);\n }\n\n /**\n * Sets a callable able to create a Request instance.\n * \n * This is mainly useful when you need to override the Request class\n * to keep BC with an existing system. It should not be used for any\n * other purpose.\n *\n * @static\n */\n public static function setFactory($callable)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setFactory($callable);\n }\n\n /**\n * Overrides the PHP global variables according to this request instance.\n * \n * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.\n * $_FILES is never overridden, see rfc1867\n *\n * @static\n */\n public static function overrideGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->overrideGlobals();\n }\n\n /**\n * Sets a list of trusted proxies.\n * \n * You should only list the reverse proxies that you manage directly.\n *\n * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] and 'PRIVATE_SUBNETS' by IpUtils::PRIVATE_SUBNETS\n * @param int-mask-of<Request::HEADER_*> $trustedHeaderSet A bit field to set which headers to trust from your proxies\n * @static\n */\n public static function setTrustedProxies($proxies, $trustedHeaderSet)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedProxies($proxies, $trustedHeaderSet);\n }\n\n /**\n * Gets the list of trusted proxies.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedProxies()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedProxies();\n }\n\n /**\n * Gets the set of trusted headers from trusted proxies.\n *\n * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies\n * @static\n */\n public static function getTrustedHeaderSet()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHeaderSet();\n }\n\n /**\n * Sets a list of trusted host patterns.\n * \n * You should only list the hosts you manage using regexs.\n *\n * @param array $hostPatterns A list of trusted host patterns\n * @static\n */\n public static function setTrustedHosts($hostPatterns)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedHosts($hostPatterns);\n }\n\n /**\n * Gets the list of trusted host patterns.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedHosts()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHosts();\n }\n\n /**\n * Normalizes a query string.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized,\n * have consistent escaping and unneeded delimiters are removed.\n *\n * @static\n */\n public static function normalizeQueryString($qs)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::normalizeQueryString($qs);\n }\n\n /**\n * Enables support for the _method request parameter to determine the intended HTTP method.\n * \n * Be warned that enabling this feature might lead to CSRF issues in your code.\n * Check that you are using CSRF tokens when required.\n * If the HTTP method parameter override is enabled, an html-form with method \"POST\" can be altered\n * and used to send a \"PUT\" or \"DELETE\" request via the _method request parameter.\n * If these methods are not protected against CSRF, this presents a possible vulnerability.\n * \n * The HTTP method can only be overridden when the real HTTP method is POST.\n *\n * @static\n */\n public static function enableHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::enableHttpMethodParameterOverride();\n }\n\n /**\n * Checks whether support for the _method request parameter is enabled.\n *\n * @static\n */\n public static function getHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getHttpMethodParameterOverride();\n }\n\n /**\n * Sets the list of HTTP methods that can be overridden.\n * \n * Set to null to allow all methods to be overridden (default). Set to an\n * empty array to disallow overrides entirely. Otherwise, provide the list\n * of uppercased method names that are allowed.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null $methods\n * @static\n */\n public static function setAllowedHttpMethodOverride($methods)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setAllowedHttpMethodOverride($methods);\n }\n\n /**\n * Gets the list of HTTP methods that can be overridden.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null\n * @static\n */\n public static function getAllowedHttpMethodOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getAllowedHttpMethodOverride();\n }\n\n /**\n * Whether the request contains a Session which was started in one of the\n * previous requests.\n *\n * @static\n */\n public static function hasPreviousSession()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasPreviousSession();\n }\n\n /**\n * @static\n */\n public static function setSession($session)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSession($session);\n }\n\n /**\n * @internal\n * @param callable(): SessionInterface $factory\n * @static\n */\n public static function setSessionFactory($factory)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSessionFactory($factory);\n }\n\n /**\n * Returns the client IP addresses.\n * \n * In the returned array the most trusted IP address is first, and the\n * least trusted one last. The \"real\" client IP address is the last one,\n * but this is also the least trusted one. Trusted proxies are stripped.\n * \n * Use this method carefully; you should use getClientIp() instead.\n *\n * @see getClientIp()\n * @static\n */\n public static function getClientIps()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIps();\n }\n\n /**\n * Returns the client IP address.\n * \n * This method can read the client IP address from the \"X-Forwarded-For\" header\n * when trusted proxies were set via \"setTrustedProxies()\". The \"X-Forwarded-For\"\n * header value is a comma+space separated list of IP addresses, the left-most\n * being the original client, and each successive proxy that passed the request\n * adding the IP address where it received the request from.\n * \n * If your reverse proxy uses a different header name than \"X-Forwarded-For\",\n * (\"Client-Ip\" for instance), configure it via the $trustedHeaderSet\n * argument of the Request::setTrustedProxies() method instead.\n *\n * @see getClientIps()\n * @see https://wikipedia.org/wiki/X-Forwarded-For\n * @static\n */\n public static function getClientIp()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIp();\n }\n\n /**\n * Returns current script name.\n *\n * @static\n */\n public static function getScriptName()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScriptName();\n }\n\n /**\n * Returns the path being requested relative to the executed script.\n * \n * The path info always starts with a /.\n * \n * Suppose this request is instantiated from /mysite on localhost:\n * \n * * http://localhost/mysite returns an empty string\n * * http://localhost/mysite/about returns '/about'\n * * http://localhost/mysite/enco%20ded returns '/enco%20ded'\n * * http://localhost/mysite/about?var=1 returns '/about'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getPathInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPathInfo();\n }\n\n /**\n * Returns the root path from which this request is executed.\n * \n * Suppose that an index.php file instantiates this request object:\n * \n * * http://localhost/index.php returns an empty string\n * * http://localhost/index.php/page returns an empty string\n * * http://localhost/web/index.php returns '/web'\n * * http://localhost/we%20b/index.php returns '/we%20b'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getBasePath()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBasePath();\n }\n\n /**\n * Returns the root URL from which this request is executed.\n * \n * The base URL never ends with a /.\n * \n * This is similar to getBasePath(), except that it also includes the\n * script filename (e.g. index.php) if one exists.\n *\n * @return string The raw URL (i.e. not urldecoded)\n * @static\n */\n public static function getBaseUrl()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBaseUrl();\n }\n\n /**\n * Gets the request's scheme.\n *\n * @static\n */\n public static function getScheme()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScheme();\n }\n\n /**\n * Returns the port on which the request is made.\n * \n * This method can read the client port from the \"X-Forwarded-Port\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Port\" header must contain the client port.\n *\n * @return int|string|null Can be a string if fetched from the server bag\n * @static\n */\n public static function getPort()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPort();\n }\n\n /**\n * Returns the user.\n *\n * @static\n */\n public static function getUser()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUser();\n }\n\n /**\n * Returns the password.\n *\n * @static\n */\n public static function getPassword()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPassword();\n }\n\n /**\n * Gets the user info.\n *\n * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server\n * @static\n */\n public static function getUserInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserInfo();\n }\n\n /**\n * Returns the HTTP host being requested.\n * \n * The port name will be appended to the host if it's non-standard.\n *\n * @static\n */\n public static function getHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHttpHost();\n }\n\n /**\n * Returns the requested URI (path and query string).\n *\n * @return string The raw URI (i.e. not URI decoded)\n * @static\n */\n public static function getRequestUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestUri();\n }\n\n /**\n * Gets the scheme and HTTP host.\n * \n * If the URL was called with basic authentication, the user\n * and the password are not added to the generated string.\n *\n * @static\n */\n public static function getSchemeAndHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSchemeAndHttpHost();\n }\n\n /**\n * Generates a normalized URI (URL) for the Request.\n *\n * @see getQueryString()\n * @static\n */\n public static function getUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUri();\n }\n\n /**\n * Generates a normalized URI for the given path.\n *\n * @param string $path A path to use instead of the current one\n * @static\n */\n public static function getUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUriForPath($path);\n }\n\n /**\n * Returns the path as relative reference from the current Request path.\n * \n * Only the URIs path component (no schema, host etc.) is relevant and must be given.\n * Both paths must be absolute and not contain relative parts.\n * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.\n * Furthermore, they can be used to reduce the link size in documents.\n * \n * Example target paths, given a base path of \"/a/b/c/d\":\n * - \"/a/b/c/d\" -> \"\"\n * - \"/a/b/c/\" -> \"./\"\n * - \"/a/b/\" -> \"../\"\n * - \"/a/b/c/other\" -> \"other\"\n * - \"/a/x/y\" -> \"../../x/y\"\n *\n * @static\n */\n public static function getRelativeUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRelativeUriForPath($path);\n }\n\n /**\n * Generates the normalized query string for the Request.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized\n * and have consistent escaping.\n *\n * @static\n */\n public static function getQueryString()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getQueryString();\n }\n\n /**\n * Checks whether the request is secure or not.\n * \n * This method can read the client protocol from the \"X-Forwarded-Proto\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Proto\" header must contain the protocol: \"https\" or \"http\".\n *\n * @static\n */\n public static function isSecure()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isSecure();\n }\n\n /**\n * Returns the host name.\n * \n * This method can read the client host name from the \"X-Forwarded-Host\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Host\" header must contain the client host name.\n *\n * @throws SuspiciousOperationException when the host name is invalid or not trusted\n * @static\n */\n public static function getHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHost();\n }\n\n /**\n * Sets the request method.\n *\n * @static\n */\n public static function setMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setMethod($method);\n }\n\n /**\n * Gets the request \"intended\" method.\n * \n * If the X-HTTP-Method-Override header is set, and if the method is a POST,\n * then it is used to determine the \"real\" intended HTTP method.\n * \n * The _method request parameter can also be used to determine the HTTP method,\n * but only if enableHttpMethodParameterOverride() has been called.\n * \n * The method is always an uppercased string.\n *\n * @see getRealMethod()\n * @static\n */\n public static function getMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMethod();\n }\n\n /**\n * Gets the \"real\" request method.\n *\n * @see getMethod()\n * @static\n */\n public static function getRealMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRealMethod();\n }\n\n /**\n * Gets the mime type associated with the format.\n *\n * @static\n */\n public static function getMimeType($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMimeType($format);\n }\n\n /**\n * Gets the mime types associated with the format.\n *\n * @return string[]\n * @static\n */\n public static function getMimeTypes($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getMimeTypes($format);\n }\n\n /**\n * Gets the format associated with the mime type.\n * \n * Resolution order:\n * 1) Exact match on the full MIME type (e.g. \"application/json\").\n * 2) Match on the canonical MIME type (i.e. before the first \";\" parameter).\n * 3) If the type is \"application/*+suffix\", use the structured syntax suffix\n * mapping (e.g. \"application/foo+json\" → \"json\"), when available.\n * 4) If $subtypeFallback is true and no match was found:\n * - return the MIME subtype (without \"x-\" prefix), provided it does not\n * contain a \"+\" (e.g. \"application/x-yaml\" → \"yaml\", \"text/csv\" → \"csv\").\n *\n * @param string|null $mimeType The mime type to check\n * @param bool $subtypeFallback Whether to fall back to the subtype if no exact match is found\n * @static\n */\n public static function getFormat($mimeType)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getFormat($mimeType);\n }\n\n /**\n * Associates a format with mime types.\n *\n * @param string $format The format to set\n * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)\n * @static\n */\n public static function setFormat($format, $mimeTypes)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setFormat($format, $mimeTypes);\n }\n\n /**\n * Gets the request format.\n * \n * Here is the process to determine the format:\n * \n * * format defined by the user (with setRequestFormat())\n * * _format request attribute\n * * $default\n *\n * @see getPreferredFormat\n * @static\n */\n public static function getRequestFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestFormat($default);\n }\n\n /**\n * Sets the request format.\n *\n * @static\n */\n public static function setRequestFormat($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRequestFormat($format);\n }\n\n /**\n * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header).\n *\n * @see Request::$formats\n * @static\n */\n public static function getContentTypeFormat()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContentTypeFormat();\n }\n\n /**\n * Sets the default locale.\n *\n * @static\n */\n public static function setDefaultLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setDefaultLocale($locale);\n }\n\n /**\n * Get the default locale.\n *\n * @static\n */\n public static function getDefaultLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getDefaultLocale();\n }\n\n /**\n * Sets the locale.\n *\n * @static\n */\n public static function setLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setLocale($locale);\n }\n\n /**\n * Get the locale.\n *\n * @static\n */\n public static function getLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLocale();\n }\n\n /**\n * Checks if the request method is of specified type.\n *\n * @param string $method Uppercase request method (GET, POST etc)\n * @static\n */\n public static function isMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethod($method);\n }\n\n /**\n * Checks whether or not the method is safe.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.1\n * @static\n */\n public static function isMethodSafe()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodSafe();\n }\n\n /**\n * Checks whether or not the method is idempotent.\n *\n * @static\n */\n public static function isMethodIdempotent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodIdempotent();\n }\n\n /**\n * Checks whether the method is cacheable or not.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.3\n * @static\n */\n public static function isMethodCacheable()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodCacheable();\n }\n\n /**\n * Returns the protocol version.\n * \n * If the application is behind a proxy, the protocol version used in the\n * requests between the client and the proxy and between the proxy and the\n * server might be different. This returns the former (from the \"Via\" header)\n * if the proxy is trusted (see \"setTrustedProxies()\"), otherwise it returns\n * the latter (from the \"SERVER_PROTOCOL\" server parameter).\n *\n * @static\n */\n public static function getProtocolVersion()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getProtocolVersion();\n }\n\n /**\n * Returns the request body content.\n *\n * @param bool $asResource If true, a resource will be returned\n * @return string|resource\n * @psalm-return ($asResource is true ? resource : string)\n * @static\n */\n public static function getContent($asResource = false)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContent($asResource);\n }\n\n /**\n * Gets the decoded form or json request body.\n *\n * @throws JsonException When the body cannot be decoded to an array\n * @static\n */\n public static function getPayload()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPayload();\n }\n\n /**\n * Gets the Etags.\n *\n * @static\n */\n public static function getETags()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getETags();\n }\n\n /**\n * @static\n */\n public static function isNoCache()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNoCache();\n }\n\n /**\n * Gets the preferred format for the response by inspecting, in the following order:\n * * the request format set using setRequestFormat;\n * * the values of the Accept HTTP header.\n * \n * Note that if you use this method, you should send the \"Vary: Accept\" header\n * in the response to prevent any issues with intermediary HTTP caches.\n *\n * @static\n */\n public static function getPreferredFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredFormat($default);\n }\n\n /**\n * Returns the preferred language.\n *\n * @param string[] $locales An array of ordered available locales\n * @static\n */\n public static function getPreferredLanguage($locales = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredLanguage($locales);\n }\n\n /**\n * Gets a list of languages acceptable by the client browser ordered in the user browser preferences.\n *\n * @return string[]\n * @static\n */\n public static function getLanguages()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLanguages();\n }\n\n /**\n * Gets a list of charsets acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getCharsets()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getCharsets();\n }\n\n /**\n * Gets a list of encodings acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getEncodings()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getEncodings();\n }\n\n /**\n * Gets a list of content types acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getAcceptableContentTypes()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getAcceptableContentTypes();\n }\n\n /**\n * Returns true if the request is an XMLHttpRequest.\n * \n * It works if your JavaScript library sets an X-Requested-With HTTP header.\n * It is known to work with common JavaScript frameworks:\n *\n * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript\n * @static\n */\n public static function isXmlHttpRequest()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isXmlHttpRequest();\n }\n\n /**\n * Checks whether the client browser prefers safe content or not according to RFC8674.\n *\n * @see https://tools.ietf.org/html/rfc8674\n * @static\n */\n public static function preferSafeContent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->preferSafeContent();\n }\n\n /**\n * Indicates whether this request originated from a trusted proxy.\n * \n * This can be useful to determine whether or not to trust the\n * contents of a proxy-specific header.\n *\n * @static\n */\n public static function isFromTrustedProxy()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isFromTrustedProxy();\n }\n\n /**\n * Filter the given array of rules into an array of rules that are included in precognitive headers.\n *\n * @param array $rules\n * @return array\n * @static\n */\n public static function filterPrecognitiveRules($rules)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filterPrecognitiveRules($rules);\n }\n\n /**\n * Determine if the request is attempting to be precognitive.\n *\n * @return bool\n * @static\n */\n public static function isAttemptingPrecognition()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isAttemptingPrecognition();\n }\n\n /**\n * Determine if the request is precognitive.\n *\n * @return bool\n * @static\n */\n public static function isPrecognitive()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isPrecognitive();\n }\n\n /**\n * Determine if the request is sending JSON.\n *\n * @return bool\n * @static\n */\n public static function isJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isJson();\n }\n\n /**\n * Determine if the current request probably expects a JSON response.\n *\n * @return bool\n * @static\n */\n public static function expectsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->expectsJson();\n }\n\n /**\n * Determine if the current request is asking for JSON.\n *\n * @return bool\n * @static\n */\n public static function wantsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->wantsJson();\n }\n\n /**\n * Determines whether the current requests accepts a given content type.\n *\n * @param string|array $contentTypes\n * @return bool\n * @static\n */\n public static function accepts($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->accepts($contentTypes);\n }\n\n /**\n * Return the most suitable content type from the given array based on content negotiation.\n *\n * @param string|array $contentTypes\n * @return string|null\n * @static\n */\n public static function prefers($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefers($contentTypes);\n }\n\n /**\n * Determine if the current request accepts any content type.\n *\n * @return bool\n * @static\n */\n public static function acceptsAnyContentType()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsAnyContentType();\n }\n\n /**\n * Determines whether a request accepts JSON.\n *\n * @return bool\n * @static\n */\n public static function acceptsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsJson();\n }\n\n /**\n * Determines whether a request accepts HTML.\n *\n * @return bool\n * @static\n */\n public static function acceptsHtml()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsHtml();\n }\n\n /**\n * Determine if the given content types match.\n *\n * @param string $actual\n * @param string $type\n * @return bool\n * @static\n */\n public static function matchesType($actual, $type)\n {\n return \\Illuminate\\Http\\Request::matchesType($actual, $type);\n }\n\n /**\n * Get the data format expected in the response.\n *\n * @param string $default\n * @return string\n * @static\n */\n public static function format($default = 'html')\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->format($default);\n }\n\n /**\n * Retrieve an old input item.\n *\n * @param string|null $key\n * @param \\Illuminate\\Database\\Eloquent\\Model|string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function old($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->old($key, $default);\n }\n\n /**\n * Flash the input for the current request to the session.\n *\n * @return void\n * @static\n */\n public static function flash()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flash();\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashOnly($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashOnly($keys);\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashExcept($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashExcept($keys);\n }\n\n /**\n * Flush all of the old input from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flush();\n }\n\n /**\n * Retrieve a server variable from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function server($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->server($key, $default);\n }\n\n /**\n * Determine if a header is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHeader($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasHeader($key);\n }\n\n /**\n * Retrieve a header from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function header($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->header($key, $default);\n }\n\n /**\n * Get the bearer token from the request headers.\n *\n * @return string|null\n * @static\n */\n public static function bearerToken()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->bearerToken();\n }\n\n /**\n * Get the keys for all of the input and files.\n *\n * @return array\n * @static\n */\n public static function keys()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->keys();\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function all($keys = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->all($keys);\n }\n\n /**\n * Retrieve an input item from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function input($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Retrieve input from the request as a Fluent object instance.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Fluent\n * @static\n */\n public static function fluent($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fluent($key);\n }\n\n /**\n * Retrieve a query string item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function query($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->query($key, $default);\n }\n\n /**\n * Retrieve a request payload item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function post($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->post($key, $default);\n }\n\n /**\n * Determine if a cookie is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasCookie($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasCookie($key);\n }\n\n /**\n * Retrieve a cookie from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function cookie($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->cookie($key, $default);\n }\n\n /**\n * Get an array of all of the files on the request.\n *\n * @return array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]>\n * @static\n */\n public static function allFiles()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->allFiles();\n }\n\n /**\n * Determine if the uploaded data contains a file.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasFile($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasFile($key);\n }\n\n /**\n * Retrieve a file from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]> : \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]|null)\n * @static\n */\n public static function file($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->file($key, $default);\n }\n\n /**\n * Dump the items.\n *\n * @param mixed $keys\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function dump($keys = [])\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dump($keys);\n }\n\n /**\n * Dump the given arguments and terminate execution.\n *\n * @param mixed $args\n * @return never\n * @static\n */\n public static function dd(...$args)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dd(...$args);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the instance contains any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function hasAny($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasAny($keys);\n }\n\n /**\n * Apply the callback if the instance contains the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenHas($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenHas($key, $callback, $default);\n }\n\n /**\n * Determine if the instance contains a non-empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function filled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filled($key);\n }\n\n /**\n * Determine if the instance contains an empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function isNotFilled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNotFilled($key);\n }\n\n /**\n * Determine if the instance contains a non-empty value for any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function anyFilled($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->anyFilled($keys);\n }\n\n /**\n * Apply the callback if the instance contains a non-empty value for the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenFilled($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenFilled($key, $callback, $default);\n }\n\n /**\n * Determine if the instance is missing a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->missing($key);\n }\n\n /**\n * Apply the callback if the instance is missing the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenMissing($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenMissing($key, $callback, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function str($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->str($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Retrieve data as a boolean value.\n * \n * Returns true when value is \"1\", \"true\", \"on\", and \"yes\". Otherwise, returns false.\n *\n * @param string|null $key\n * @param bool $default\n * @return bool\n * @static\n */\n public static function boolean($key = null, $default = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Retrieve data as an integer value.\n *\n * @param string $key\n * @param int $default\n * @return int\n * @static\n */\n public static function integer($key, $default = 0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Retrieve data as a float value.\n *\n * @param string $key\n * @param float $default\n * @return float\n * @static\n */\n public static function float($key, $default = 0.0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Carbon instance.\n *\n * @param string $key\n * @param string|null $format\n * @param \\UnitEnum|string|null $tz\n * @return \\Illuminate\\Support\\Carbon|null\n * @throws \\Carbon\\Exceptions\\InvalidFormatException\n * @static\n */\n public static function date($key, $format = null, $tz = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->date($key, $format, $tz);\n }\n\n /**\n * Retrieve data from the instance as an enum.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @param TEnum|null $default\n * @return TEnum|null\n * @static\n */\n public static function enum($key, $enumClass, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enum($key, $enumClass, $default);\n }\n\n /**\n * Retrieve data from the instance as an array of enums.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @return TEnum[]\n * @static\n */\n public static function enums($key, $enumClass)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enums($key, $enumClass);\n }\n\n /**\n * Retrieve data from the instance as an array.\n *\n * @param array|string|null $key\n * @return array\n * @static\n */\n public static function array($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->array($key);\n }\n\n /**\n * Retrieve data from the instance as a collection.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function collect($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->collect($key);\n }\n\n /**\n * Get a subset containing the provided keys with values from the instance data.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all of the data except for a specified array of items.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->except($keys);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Request::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Request::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Request::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Request::flushMacros();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\ResponseFactory\n */\n class Response {\n /**\n * Create a new response instance.\n *\n * @param mixed $content\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function make($content = '', $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->make($content, $status, $headers);\n }\n\n /**\n * Create a new \"no content\" response.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function noContent($status = 204, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->noContent($status, $headers);\n }\n\n /**\n * Create a new response for a given view.\n *\n * @param string|array $view\n * @param array $data\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function view($view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->view($view, $data, $status, $headers);\n }\n\n /**\n * Create a new JSON response instance.\n *\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function json($data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->json($data, $status, $headers, $options);\n }\n\n /**\n * Create a new JSONP response instance.\n *\n * @param string $callback\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->jsonp($callback, $data, $status, $headers, $options);\n }\n\n /**\n * Create a new event stream response.\n *\n * @param \\Closure $callback\n * @param array $headers\n * @param \\Illuminate\\Http\\StreamedEvent|string|null $endStreamWith\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function eventStream($callback, $headers = [], $endStreamWith = '</stream>')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->eventStream($callback, $headers, $endStreamWith);\n }\n\n /**\n * Create a new streamed response instance.\n *\n * @param callable|null $callback\n * @param int $status\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function stream($callback, $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->stream($callback, $status, $headers);\n }\n\n /**\n * Create a new streamed JSON response instance.\n *\n * @param array $data\n * @param int $status\n * @param array $headers\n * @param int $encodingOptions\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedJsonResponse\n * @static\n */\n public static function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamJson($data, $status, $headers, $encodingOptions);\n }\n\n /**\n * Create a new streamed response instance as a file download.\n *\n * @param callable $callback\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @throws \\Illuminate\\Routing\\Exceptions\\StreamedResponseException\n * @static\n */\n public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamDownload($callback, $name, $headers, $disposition);\n }\n\n /**\n * Create a new file download response.\n *\n * @param \\SplFileInfo|string $file\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function download($file, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->download($file, $name, $headers, $disposition);\n }\n\n /**\n * Return the raw contents of a binary file.\n *\n * @param \\SplFileInfo|string $file\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function file($file, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->file($file, $headers);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectTo($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectTo($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToRoute($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param array|string $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToAction($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToAction($action, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectGuest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectGuest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param string $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToIntended($default, $status, $headers, $secure);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\ResponseFactory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\ResponseFactory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\ResponseFactory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\ResponseFactory::flushMacros();\n }\n\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n /**\n * @method static \\Illuminate\\Routing\\RouteRegistrar attribute(string $key, mixed $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlpha(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlphaNumeric(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereNumber(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUlid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUuid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereIn(array|string $parameters, array $values)\n * @method static \\Illuminate\\Routing\\RouteRegistrar as(string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar can(\\UnitEnum|string $ability, array|string $models = [])\n * @method static \\Illuminate\\Routing\\RouteRegistrar controller(string $controller)\n * @method static \\Illuminate\\Routing\\RouteRegistrar domain(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar middleware(array|string|null $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar missing(\\Closure $missing)\n * @method static \\Illuminate\\Routing\\RouteRegistrar name(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar namespace(string|null $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar prefix(string $prefix)\n * @method static \\Illuminate\\Routing\\RouteRegistrar scopeBindings()\n * @method static \\Illuminate\\Routing\\RouteRegistrar where(array $where)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutMiddleware(array|string $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutScopedBindings()\n * @see \\Illuminate\\Routing\\Router\n */\n class Route {\n /**\n * Register a new GET route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function get($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->get($uri, $action);\n }\n\n /**\n * Register a new POST route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function post($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->post($uri, $action);\n }\n\n /**\n * Register a new PUT route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function put($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->put($uri, $action);\n }\n\n /**\n * Register a new PATCH route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function patch($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->patch($uri, $action);\n }\n\n /**\n * Register a new DELETE route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function delete($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->delete($uri, $action);\n }\n\n /**\n * Register a new OPTIONS route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function options($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->options($uri, $action);\n }\n\n /**\n * Register a new route responding to all verbs.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function any($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->any($uri, $action);\n }\n\n /**\n * Register a new fallback route with the router.\n *\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function fallback($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->fallback($action);\n }\n\n /**\n * Create a redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @param int $status\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function redirect($uri, $destination, $status = 302)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->redirect($uri, $destination, $status);\n }\n\n /**\n * Create a permanent redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function permanentRedirect($uri, $destination)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->permanentRedirect($uri, $destination);\n }\n\n /**\n * Register a new route that returns a view.\n *\n * @param string $uri\n * @param string $view\n * @param array $data\n * @param int|array $status\n * @param array $headers\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function view($uri, $view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->view($uri, $view, $data, $status, $headers);\n }\n\n /**\n * Register a new route with the given verbs.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function match($methods, $uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->match($methods, $uri, $action);\n }\n\n /**\n * Register an array of resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function resources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resources($resources, $options);\n }\n\n /**\n * Register an array of resource controllers that can be soft deleted.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function softDeletableResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->softDeletableResources($resources, $options);\n }\n\n /**\n * Route a resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function resource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resource($name, $controller, $options);\n }\n\n /**\n * Register an array of API resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function apiResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiResources($resources, $options);\n }\n\n /**\n * Route an API resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function apiResource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiResource($name, $controller, $options);\n }\n\n /**\n * Register an array of singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function singletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singletons($singletons, $options);\n }\n\n /**\n * Route a singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function singleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->singleton($name, $controller, $options);\n }\n\n /**\n * Register an array of API singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function apiSingletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiSingletons($singletons, $options);\n }\n\n /**\n * Route an API singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function apiSingleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiSingleton($name, $controller, $options);\n }\n\n /**\n * Create a route group with shared attributes.\n *\n * @param array $attributes\n * @param \\Closure|array|string $routes\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function group($attributes, $routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->group($attributes, $routes);\n }\n\n /**\n * Merge the given array with the last group stack.\n *\n * @param array $new\n * @param bool $prependExistingPrefix\n * @return array\n * @static\n */\n public static function mergeWithLastGroup($new, $prependExistingPrefix = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->mergeWithLastGroup($new, $prependExistingPrefix);\n }\n\n /**\n * Get the prefix from the last group on the stack.\n *\n * @return string\n * @static\n */\n public static function getLastGroupPrefix()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getLastGroupPrefix();\n }\n\n /**\n * Add a route to the underlying route collection.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function addRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->addRoute($methods, $uri, $action);\n }\n\n /**\n * Create a new Route object.\n *\n * @param array|string $methods\n * @param string $uri\n * @param mixed $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function newRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->newRoute($methods, $uri, $action);\n }\n\n /**\n * Return the response returned by the given route.\n *\n * @param string $name\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function respondWithRoute($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->respondWithRoute($name);\n }\n\n /**\n * Dispatch the request to the application.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatch($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatch($request);\n }\n\n /**\n * Dispatch the request to a route and return the response.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatchToRoute($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatchToRoute($request);\n }\n\n /**\n * Gather the middleware for the given route with resolved class names.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return array\n * @static\n */\n public static function gatherRouteMiddleware($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->gatherRouteMiddleware($route);\n }\n\n /**\n * Resolve a flat array of middleware classes from the provided array.\n *\n * @param array $middleware\n * @param array $excluded\n * @return array\n * @static\n */\n public static function resolveMiddleware($middleware, $excluded = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resolveMiddleware($middleware, $excluded);\n }\n\n /**\n * Create a response instance from the given value.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function prepareResponse($request, $response)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prepareResponse($request, $response);\n }\n\n /**\n * Static version of prepareResponse.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function toResponse($request, $response)\n {\n return \\Illuminate\\Routing\\Router::toResponse($request, $response);\n }\n\n /**\n * Substitute the route bindings onto the route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return \\Illuminate\\Routing\\Route\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteBindings($route);\n }\n\n /**\n * Substitute the implicit route bindings for the given route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return void\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteImplicitBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->substituteImplicitBindings($route);\n }\n\n /**\n * Register a callback to run after implicit bindings are substituted.\n *\n * @param callable $callback\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function substituteImplicitBindingsUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteImplicitBindingsUsing($callback);\n }\n\n /**\n * Register a route matched event listener.\n *\n * @param string|callable $callback\n * @return void\n * @static\n */\n public static function matched($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->matched($callback);\n }\n\n /**\n * Get all of the defined middleware short-hand names.\n *\n * @return array\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * Register a short-hand name for a middleware.\n *\n * @param string $name\n * @param string $class\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function aliasMiddleware($name, $class)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->aliasMiddleware($name, $class);\n }\n\n /**\n * Check if a middlewareGroup with the given name exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMiddlewareGroup($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasMiddlewareGroup($name);\n }\n\n /**\n * Get all of the defined middleware groups.\n *\n * @return array\n * @static\n */\n public static function getMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddlewareGroups();\n }\n\n /**\n * Register a group of middleware.\n *\n * @param string $name\n * @param array $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function middlewareGroup($name, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->middlewareGroup($name, $middleware);\n }\n\n /**\n * Add a middleware to the beginning of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function prependMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prependMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Add a middleware to the end of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function pushMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->pushMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Remove the given middleware from the specified group.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function removeMiddlewareFromGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->removeMiddlewareFromGroup($group, $middleware);\n }\n\n /**\n * Flush the router's middleware groups.\n *\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function flushMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->flushMiddlewareGroups();\n }\n\n /**\n * Add a new route parameter binder.\n *\n * @param string $key\n * @param string|callable $binder\n * @return void\n * @static\n */\n public static function bind($key, $binder)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->bind($key, $binder);\n }\n\n /**\n * Register a model binder for a wildcard.\n *\n * @param string $key\n * @param string $class\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function model($key, $class, $callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->model($key, $class, $callback);\n }\n\n /**\n * Get the binding callback for a given binding.\n *\n * @param string $key\n * @return \\Closure|null\n * @static\n */\n public static function getBindingCallback($key)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getBindingCallback($key);\n }\n\n /**\n * Get the global \"where\" patterns.\n *\n * @return array\n * @static\n */\n public static function getPatterns()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getPatterns();\n }\n\n /**\n * Set a global where pattern on all routes.\n *\n * @param string $key\n * @param string $pattern\n * @return void\n * @static\n */\n public static function pattern($key, $pattern)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->pattern($key, $pattern);\n }\n\n /**\n * Set a group of global where patterns on all routes.\n *\n * @param array $patterns\n * @return void\n * @static\n */\n public static function patterns($patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->patterns($patterns);\n }\n\n /**\n * Determine if the router currently has a group stack.\n *\n * @return bool\n * @static\n */\n public static function hasGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasGroupStack();\n }\n\n /**\n * Get the current group stack for the router.\n *\n * @return array\n * @static\n */\n public static function getGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getGroupStack();\n }\n\n /**\n * Get a route parameter for the current route.\n *\n * @param string $key\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function input($key, $default = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Get the request currently being dispatched.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getCurrentRequest()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRequest();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function getCurrentRoute()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRoute();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->current();\n }\n\n /**\n * Check if a route with the given name exists.\n *\n * @param string|array $name\n * @return bool\n * @static\n */\n public static function has($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->has($name);\n }\n\n /**\n * Get the current route name.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteName()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteName();\n }\n\n /**\n * Alias for the \"currentRouteNamed\" method.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the current route matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function currentRouteNamed(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteNamed(...$patterns);\n }\n\n /**\n * Get the current route action.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteAction()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteAction();\n }\n\n /**\n * Alias for the \"currentRouteUses\" method.\n *\n * @param array|string $patterns\n * @return bool\n * @static\n */\n public static function uses(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->uses(...$patterns);\n }\n\n /**\n * Determine if the current route action matches a given action.\n *\n * @param string $action\n * @return bool\n * @static\n */\n public static function currentRouteUses($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteUses($action);\n }\n\n /**\n * Set the unmapped global resource parameters to singular.\n *\n * @param bool $singular\n * @return void\n * @static\n */\n public static function singularResourceParameters($singular = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singularResourceParameters($singular);\n }\n\n /**\n * Set the global resource parameter mapping.\n *\n * @param array $parameters\n * @return void\n * @static\n */\n public static function resourceParameters($parameters = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resourceParameters($parameters);\n }\n\n /**\n * Get or set the verbs used in the resource URIs.\n *\n * @param array $verbs\n * @return array|null\n * @static\n */\n public static function resourceVerbs($verbs = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resourceVerbs($verbs);\n }\n\n /**\n * Get the underlying route collection.\n *\n * @return \\Illuminate\\Routing\\RouteCollectionInterface\n * @static\n */\n public static function getRoutes()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getRoutes();\n }\n\n /**\n * Set the route collection instance.\n *\n * @param \\Illuminate\\Routing\\RouteCollection $routes\n * @return void\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setRoutes($routes);\n }\n\n /**\n * Set the compiled route collection instance.\n *\n * @param array $routes\n * @return void\n * @static\n */\n public static function setCompiledRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setCompiledRoutes($routes);\n }\n\n /**\n * Remove any duplicate middleware from the given array.\n *\n * @param array $middleware\n * @return array\n * @static\n */\n public static function uniqueMiddleware($middleware)\n {\n return \\Illuminate\\Routing\\Router::uniqueMiddleware($middleware);\n }\n\n /**\n * Set the container instance used by the router.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Router::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Router::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Router::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Router::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Call the given Closure with this instance then return the instance.\n *\n * @param (callable($this): mixed)|null $callback\n * @return ($callback is null ? \\Illuminate\\Support\\HigherOrderTapProxy : $this)\n * @static\n */\n public static function tap($callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->tap($callback);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes withoutOverlapping(int $expiresAt = 1440)\n * @method static void mergeAttributes(\\Illuminate\\Console\\Scheduling\\Event $event)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes user(string $user)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes environments(mixed $environments)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes evenInMaintenanceMode()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes onOneServer()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes runInBackground()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes when(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes skip(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes name(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes description(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes cron(string $expression)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes between(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes unlessBetween(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySecond()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwentySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyMinute()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtyMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourlyAt(array|string|int|int[] $offset)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyOddHour(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySixHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes daily()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes at(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes dailyAt(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDaily(int $first = 1, int $second = 13)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDailyAt(int $first = 1, int $second = 13, int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekends()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes mondays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes tuesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes wednesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes thursdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes fridays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes saturdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes sundays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weeklyOn(mixed $dayOfWeek, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthlyOn(int $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceMonthly(int $first = 1, int $second = 16, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes lastDayOfMonth(string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterlyOn(int $dayOfQuarter = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearlyOn(int $month = 1, int|string $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes days(mixed $days)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes timezone(\\UnitEnum|\\DateTimeZone|string $timezone)\n * @see \\Illuminate\\Console\\Scheduling\\Schedule\n */\n class Schedule {\n /**\n * Add a new callback event to the schedule.\n *\n * @param string|callable $callback\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function call($callback, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->call($callback, $parameters);\n }\n\n /**\n * Add a new Artisan command event to the schedule.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function command($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->command($command, $parameters);\n }\n\n /**\n * Add a new job callback event to the schedule.\n *\n * @param object|string $job\n * @param \\UnitEnum|string|null $queue\n * @param \\UnitEnum|string|null $connection\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function job($job, $queue = null, $connection = null)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->job($job, $queue, $connection);\n }\n\n /**\n * Add a new command event to the schedule.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function exec($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->exec($command, $parameters);\n }\n\n /**\n * Create new schedule group.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function group($events)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n $instance->group($events);\n }\n\n /**\n * Compile array input for a command.\n *\n * @param string|int $key\n * @param array $value\n * @return string\n * @static\n */\n public static function compileArrayInput($key, $value)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->compileArrayInput($key, $value);\n }\n\n /**\n * Determine if the server is allowed to run this event.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @param \\DateTimeInterface $time\n * @return bool\n * @static\n */\n public static function serverShouldRun($event, $time)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->serverShouldRun($event, $time);\n }\n\n /**\n * Get all of the events on the schedule that are due.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dueEvents($app)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->dueEvents($app);\n }\n\n /**\n * Get all of the events on the schedule.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Event[]\n * @static\n */\n public static function events()\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->events();\n }\n\n /**\n * Specify the cache store that should be used to store mutexes.\n *\n * @param string $store\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function useCache($store)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->useCache($store);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Console\\Scheduling\\Schedule::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\Schema\\Builder\n */\n class Schema {\n /**\n * Drop all tables from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllTables()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTables();\n }\n\n /**\n * Drop all views from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllViews()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllViews();\n }\n\n /**\n * Get the names of current schemas for the connection.\n *\n * @return string[]|null\n * @static\n */\n public static function getCurrentSchemaListing()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaListing();\n }\n\n /**\n * Set the default string length for migrations.\n *\n * @param int $length\n * @return void\n * @static\n */\n public static function defaultStringLength($length)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultStringLength($length);\n }\n\n /**\n * Set the default time precision for migrations.\n *\n * @static\n */\n public static function defaultTimePrecision($precision)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultTimePrecision($precision);\n }\n\n /**\n * Set the default morph key type for migrations.\n *\n * @param string $type\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function defaultMorphKeyType($type)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultMorphKeyType($type);\n }\n\n /**\n * Set the default morph key type for migrations to UUIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUuids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUuids();\n }\n\n /**\n * Set the default morph key type for migrations to ULIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUlids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUlids();\n }\n\n /**\n * Create a database in the schema.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function createDatabase($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->createDatabase($name);\n }\n\n /**\n * Drop a database from the schema if the database exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function dropDatabaseIfExists($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->dropDatabaseIfExists($name);\n }\n\n /**\n * Get the schemas that belong to the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, path: string|null, default: bool}>\n * @static\n */\n public static function getSchemas()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getSchemas();\n }\n\n /**\n * Determine if the given table exists.\n *\n * @param string $table\n * @return bool\n * @static\n */\n public static function hasTable($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasTable($table);\n }\n\n /**\n * Determine if the given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function hasView($view)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasView($view);\n }\n\n /**\n * Get the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, size: int|null, comment: string|null, collation: string|null, engine: string|null}>\n * @static\n */\n public static function getTables($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTables($schema);\n }\n\n /**\n * Get the names of the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @param bool $schemaQualified\n * @return list<string>\n * @static\n */\n public static function getTableListing($schema = null, $schemaQualified = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTableListing($schema, $schemaQualified);\n }\n\n /**\n * Get the views that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, definition: string}>\n * @static\n */\n public static function getViews($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getViews($schema);\n }\n\n /**\n * Get the user-defined types that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string, type: string, type: string, category: string, implicit: bool}>\n * @static\n */\n public static function getTypes($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTypes($schema);\n }\n\n /**\n * Determine if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @return bool\n * @static\n */\n public static function hasColumn($table, $column)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumn($table, $column);\n }\n\n /**\n * Determine if the given table has given columns.\n *\n * @param string $table\n * @param array<string> $columns\n * @return bool\n * @static\n */\n public static function hasColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumns($table, $columns);\n }\n\n /**\n * Execute a table builder callback if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableHasColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableHasColumn($table, $column, $callback);\n }\n\n /**\n * Execute a table builder callback if the given table doesn't have a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableDoesntHaveColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableDoesntHaveColumn($table, $column, $callback);\n }\n\n /**\n * Get the data type for the given column name.\n *\n * @param string $table\n * @param string $column\n * @param bool $fullDefinition\n * @return string\n * @static\n */\n public static function getColumnType($table, $column, $fullDefinition = false)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnType($table, $column, $fullDefinition);\n }\n\n /**\n * Get the column listing for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getColumnListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnListing($table);\n }\n\n /**\n * Get the columns for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, type: string, type_name: string, nullable: bool, default: mixed, auto_increment: bool, comment: string|null, generation: array{type: string, expression: string|null}|null}>\n * @static\n */\n public static function getColumns($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumns($table);\n }\n\n /**\n * Get the indexes for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, columns: list<string>, type: string, unique: bool, primary: bool}>\n * @static\n */\n public static function getIndexes($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexes($table);\n }\n\n /**\n * Get the names of the indexes for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getIndexListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexListing($table);\n }\n\n /**\n * Determine if the given table has a given index.\n *\n * @param string $table\n * @param string|array $index\n * @param string|null $type\n * @return bool\n * @static\n */\n public static function hasIndex($table, $index, $type = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasIndex($table, $index, $type);\n }\n\n /**\n * Get the foreign keys for a given table.\n *\n * @param string $table\n * @return array\n * @static\n */\n public static function getForeignKeys($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getForeignKeys($table);\n }\n\n /**\n * Modify a table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function table($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->table($table, $callback);\n }\n\n /**\n * Create a new table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function create($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->create($table, $callback);\n }\n\n /**\n * Drop a table from the schema.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function drop($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->drop($table);\n }\n\n /**\n * Drop a table from the schema if it exists.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function dropIfExists($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropIfExists($table);\n }\n\n /**\n * Drop columns from a table schema.\n *\n * @param string $table\n * @param string|array<string> $columns\n * @return void\n * @static\n */\n public static function dropColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropColumns($table, $columns);\n }\n\n /**\n * Drop all types from the database.\n *\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function dropAllTypes()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTypes();\n }\n\n /**\n * Rename a table on the schema.\n *\n * @param string $from\n * @param string $to\n * @return void\n * @static\n */\n public static function rename($from, $to)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->rename($from, $to);\n }\n\n /**\n * Enable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function enableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->enableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function disableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->disableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints during the execution of a callback.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutForeignKeyConstraints($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->withoutForeignKeyConstraints($callback);\n }\n\n /**\n * Get the default schema name for the connection.\n *\n * @return string|null\n * @static\n */\n public static function getCurrentSchemaName()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaName();\n }\n\n /**\n * Parse the given database object reference and extract the schema and table.\n *\n * @param string $reference\n * @param string|bool|null $withDefaultSchema\n * @return array\n * @static\n */\n public static function parseSchemaAndTable($reference, $withDefaultSchema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->parseSchemaAndTable($reference, $withDefaultSchema);\n }\n\n /**\n * Get the database connection instance.\n *\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function getConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getConnection();\n }\n\n /**\n * Set the Schema Blueprint resolver callback.\n *\n * @param \\Closure(\\Illuminate\\Database\\Connection, string, \\Closure|null): \\Illuminate\\Database\\Schema\\Blueprint $resolver\n * @return void\n * @static\n */\n public static function blueprintResolver($resolver)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->blueprintResolver($resolver);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Session\\SessionManager\n */\n class Session {\n /**\n * Determine if requests for the same session should wait for each to finish before executing.\n *\n * @return bool\n * @static\n */\n public static function shouldBlock()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->shouldBlock();\n }\n\n /**\n * Get the name of the cache store / driver that should be used to acquire session locks.\n *\n * @return string|null\n * @static\n */\n public static function blockDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->blockDriver();\n }\n\n /**\n * Get the maximum number of seconds the session lock should be held for.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockLockSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockLockSeconds();\n }\n\n /**\n * Get the maximum number of seconds to wait while attempting to acquire a route block session lock.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockWaitSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockWaitSeconds();\n }\n\n /**\n * Get the session configuration.\n *\n * @return array\n * @static\n */\n public static function getSessionConfig()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getSessionConfig();\n }\n\n /**\n * Get the default session driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default session driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Start the session, reading the data from a handler.\n *\n * @return bool\n * @static\n */\n public static function start()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->start();\n }\n\n /**\n * Save the session data to storage.\n *\n * @return void\n * @static\n */\n public static function save()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->save();\n }\n\n /**\n * Age the flash data for the session.\n *\n * @return void\n * @static\n */\n public static function ageFlashData()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->ageFlashData();\n }\n\n /**\n * Get all of the session data.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->all();\n }\n\n /**\n * Get a subset of the session data.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all the session data except for a specified array of items.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->except($keys);\n }\n\n /**\n * Checks if a key exists.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the given key is missing from the session data.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if a key is present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if any of the given keys are present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function hasAny($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasAny($key);\n }\n\n /**\n * Get an item from the session.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the value of a given key and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Determine if the session contains old input.\n *\n * @param string|null $key\n * @return bool\n * @static\n */\n public static function hasOldInput($key = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasOldInput($key);\n }\n\n /**\n * Get the requested item from the flashed input array.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getOldInput($key = null, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getOldInput($key, $default);\n }\n\n /**\n * Replace the given session attributes entirely.\n *\n * @param array $attributes\n * @return void\n * @static\n */\n public static function replace($attributes)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->replace($attributes);\n }\n\n /**\n * Put a key / value pair or array of key / value pairs in the session.\n *\n * @param string|array $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function put($key, $value = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->put($key, $value);\n }\n\n /**\n * Get an item from the session, or store the default value.\n *\n * @param string $key\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function remember($key, $callback)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remember($key, $callback);\n }\n\n /**\n * Push a value onto a session array.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Increment the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return mixed\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Flash a key / value pair to the session.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function flash($key, $value = true)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flash($key, $value);\n }\n\n /**\n * Flash a key / value pair to the session for immediate use.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function now($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->now($key, $value);\n }\n\n /**\n * Reflash all of the session flash data.\n *\n * @return void\n * @static\n */\n public static function reflash()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->reflash();\n }\n\n /**\n * Reflash a subset of the current flash data.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function keep($keys = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->keep($keys);\n }\n\n /**\n * Flash an input array to the session.\n *\n * @param array $value\n * @return void\n * @static\n */\n public static function flashInput($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flashInput($value);\n }\n\n /**\n * Get the session cache instance.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function cache()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->cache();\n }\n\n /**\n * Remove an item from the session, returning its value.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function remove($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remove($key);\n }\n\n /**\n * Remove one or many items from the session.\n *\n * @param string|array $keys\n * @return void\n * @static\n */\n public static function forget($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->forget($keys);\n }\n\n /**\n * Remove all of the items from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flush();\n }\n\n /**\n * Flush the session data and regenerate the ID.\n *\n * @return bool\n * @static\n */\n public static function invalidate()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->invalidate();\n }\n\n /**\n * Generate a new session identifier.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function regenerate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->regenerate($destroy);\n }\n\n /**\n * Generate a new session ID for the session.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function migrate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->migrate($destroy);\n }\n\n /**\n * Determine if the session has been started.\n *\n * @return bool\n * @static\n */\n public static function isStarted()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isStarted();\n }\n\n /**\n * Get the name of the session.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getName();\n }\n\n /**\n * Set the name of the session.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setName($name)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setName($name);\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->id();\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function getId()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getId();\n }\n\n /**\n * Set the session ID.\n *\n * @param string|null $id\n * @return void\n * @static\n */\n public static function setId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setId($id);\n }\n\n /**\n * Determine if this is a valid session ID.\n *\n * @param string|null $id\n * @return bool\n * @static\n */\n public static function isValidId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isValidId($id);\n }\n\n /**\n * Set the existence of the session on the handler if applicable.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function setExists($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setExists($value);\n }\n\n /**\n * Get the CSRF token value.\n *\n * @return string\n * @static\n */\n public static function token()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->token();\n }\n\n /**\n * Regenerate the CSRF token value.\n *\n * @return void\n * @static\n */\n public static function regenerateToken()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->regenerateToken();\n }\n\n /**\n * Determine if the previous URI is available.\n *\n * @return bool\n * @static\n */\n public static function hasPreviousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasPreviousUri();\n }\n\n /**\n * Get the previous URL from the session as a URI instance.\n *\n * @return \\Illuminate\\Support\\Uri\n * @throws \\RuntimeException\n * @static\n */\n public static function previousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUri();\n }\n\n /**\n * Get the previous URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function previousUrl()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUrl();\n }\n\n /**\n * Set the \"previous\" URL in the session.\n *\n * @param string $url\n * @return void\n * @static\n */\n public static function setPreviousUrl($url)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setPreviousUrl($url);\n }\n\n /**\n * Specify that the user has confirmed their password.\n *\n * @return void\n * @static\n */\n public static function passwordConfirmed()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->passwordConfirmed();\n }\n\n /**\n * Get the underlying session handler implementation.\n *\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function getHandler()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getHandler();\n }\n\n /**\n * Set the underlying session handler implementation.\n *\n * @param \\SessionHandlerInterface $handler\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function setHandler($handler)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->setHandler($handler);\n }\n\n /**\n * Determine if the session handler needs a request.\n *\n * @return bool\n * @static\n */\n public static function handlerNeedsRequest()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->handlerNeedsRequest();\n }\n\n /**\n * Set the request on the handler instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequestOnHandler($request)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setRequestOnHandler($request);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Session\\Store::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Session\\Store::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Session\\Store::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Session\\Store::flushMacros();\n }\n\n }\n /**\n * @method static bool has(string $location)\n * @method static string read(string $location)\n * @method static \\League\\Flysystem\\DirectoryListing listContents(string $location, bool $deep = false)\n * @method static int fileSize(string $path)\n * @method static string visibility(string $path)\n * @method static void write(string $location, string $contents, array $config = [])\n * @method static void createDirectory(string $location, array $config = [])\n * @see \\Illuminate\\Filesystem\\FilesystemManager\n */\n class Storage {\n /**\n * Get a filesystem instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function drive($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->drive($name);\n }\n\n /**\n * Get a filesystem instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function disk($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->disk($name);\n }\n\n /**\n * Get a default cloud filesystem instance.\n *\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function cloud()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->cloud();\n }\n\n /**\n * Build an on-demand disk.\n *\n * @param string|array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create an instance of the local driver.\n *\n * @param array $config\n * @param string $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createLocalDriver($config, $name = 'local')\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createLocalDriver($config, $name);\n }\n\n /**\n * Create an instance of the ftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createFtpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createFtpDriver($config);\n }\n\n /**\n * Create an instance of the sftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createSftpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createSftpDriver($config);\n }\n\n /**\n * Create an instance of the Amazon S3 driver.\n *\n * @param array $config\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function createS3Driver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createS3Driver($config);\n }\n\n /**\n * Create a scoped driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createScopedDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createScopedDriver($config);\n }\n\n /**\n * Set the given disk instance.\n *\n * @param string $name\n * @param mixed $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function set($name, $disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->set($name, $disk);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default cloud driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultCloudDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultCloudDriver();\n }\n\n /**\n * Unset the given disk instances.\n *\n * @param array|string $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function forgetDisk($disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->forgetDisk($disk);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if temporary URLs can be generated.\n *\n * @return bool\n * @static\n */\n public static function providesTemporaryUrls()\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->providesTemporaryUrls();\n }\n\n /**\n * Get a temporary URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return string\n * @static\n */\n public static function temporaryUrl($path, $expiration, $options = [])\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUrl($path, $expiration, $options);\n }\n\n /**\n * Specify the name of the disk the adapter is managing.\n *\n * @param string $disk\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function diskName($disk)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->diskName($disk);\n }\n\n /**\n * Indicate that signed URLs should serve the corresponding files.\n *\n * @param bool $serve\n * @param \\Closure|null $urlGeneratorResolver\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function shouldServeSignedUrls($serve = true, $urlGeneratorResolver = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->shouldServeSignedUrls($serve, $urlGeneratorResolver);\n }\n\n /**\n * Assert that the given file or directory exists.\n *\n * @param string|array $path\n * @param string|null $content\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertExists($path, $content = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertExists($path, $content);\n }\n\n /**\n * Assert that the number of files in path equals the expected count.\n *\n * @param string $path\n * @param int $count\n * @param bool $recursive\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertCount($path, $count, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertCount($path, $count, $recursive);\n }\n\n /**\n * Assert that the given file or directory does not exist.\n *\n * @param string|array $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertMissing($path);\n }\n\n /**\n * Assert that the given directory is empty.\n *\n * @param string $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertDirectoryEmpty($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertDirectoryEmpty($path);\n }\n\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->missing($path);\n }\n\n /**\n * Determine if a file exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileExists($path);\n }\n\n /**\n * Determine if a file is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileMissing($path);\n }\n\n /**\n * Determine if a directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryExists($path);\n }\n\n /**\n * Determine if a directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryMissing($path);\n }\n\n /**\n * Get the full path to the file that exists at the given relative path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->path($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @return string|null\n * @static\n */\n public static function get($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->get($path);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @return array|null\n * @static\n */\n public static function json($path, $flags = 0)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->json($path, $flags);\n }\n\n /**\n * Create a streamed response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function response($path, $name = null, $headers = [], $disposition = 'inline')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->response($path, $name, $headers, $disposition);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function serve($request, $path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->serve($request, $path, $name, $headers);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function download($path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->download($path, $name, $headers);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param \\Psr\\Http\\Message\\StreamInterface|\\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|resource $contents\n * @param mixed $options\n * @return string|bool\n * @static\n */\n public static function put($path, $contents, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->put($path, $contents, $options);\n }\n\n /**\n * Store the uploaded file on the disk.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFile($path, $file = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFile($path, $file, $options);\n }\n\n /**\n * Store the uploaded file on the disk with a given name.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param string|array|null $name\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFileAs($path, $file, $name = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFileAs($path, $file, $name, $options);\n }\n\n /**\n * Get the visibility for the given path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getVisibility($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getVisibility($path);\n }\n\n /**\n * Set the visibility for the given path.\n *\n * @param string $path\n * @param string $visibility\n * @return bool\n * @static\n */\n public static function setVisibility($path, $visibility)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->setVisibility($path, $visibility);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function prepend($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->prepend($path, $data, $separator);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function append($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->append($path, $data, $separator);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function copy($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->copy($from, $to);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function move($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->move($from, $to);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the checksum for a file.\n *\n * @return string|false\n * @throws UnableToProvideChecksum\n * @static\n */\n public static function checksum($path, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->checksum($path, $options);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Get a resource to read the file.\n *\n * @param string $path\n * @return resource|null The path resource or null on failure.\n * @static\n */\n public static function readStream($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->readStream($path);\n }\n\n /**\n * Write a new file using a stream.\n *\n * @param string $path\n * @param resource $resource\n * @param array $options\n * @return bool\n * @static\n */\n public static function writeStream($path, $resource, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->writeStream($path, $resource, $options);\n }\n\n /**\n * Get the URL for the file at the given path.\n *\n * @param string $path\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function url($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->url($path);\n }\n\n /**\n * Get a temporary upload URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return array\n * @throws \\RuntimeException\n * @static\n */\n public static function temporaryUploadUrl($path, $expiration, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUploadUrl($path, $expiration, $options);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function files($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->files($directory, $recursive);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allFiles($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allFiles($directory);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function directories($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directories($directory, $recursive);\n }\n\n /**\n * Get all the directories within a given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allDirectories($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allDirectories($directory);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function makeDirectory($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->makeDirectory($path);\n }\n\n /**\n * Recursively delete a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->deleteDirectory($directory);\n }\n\n /**\n * Get the Flysystem driver.\n *\n * @return \\League\\Flysystem\\FilesystemOperator\n * @static\n */\n public static function getDriver()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getDriver();\n }\n\n /**\n * Get the Flysystem adapter.\n *\n * @return \\League\\Flysystem\\FilesystemAdapter\n * @static\n */\n public static function getAdapter()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getAdapter();\n }\n\n /**\n * Get the configuration values.\n *\n * @return array\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getConfig();\n }\n\n /**\n * Define a custom callback that generates file download responses.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function serveUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->serveUsing($callback);\n }\n\n /**\n * Define a custom temporary URL builder callback.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function buildTemporaryUrlsUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->buildTemporaryUrlsUsing($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n return \\Illuminate\\Filesystem\\LocalFilesystemAdapter::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\UrlGenerator\n */\n class URL {\n /**\n * Get the full URL for the current request.\n *\n * @return string\n * @static\n */\n public static function full()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->full();\n }\n\n /**\n * Get the current URL for the request.\n *\n * @return string\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->current();\n }\n\n /**\n * Get the URL for the previous request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previous($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previous($fallback);\n }\n\n /**\n * Get the previous path info for the request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previousPath($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previousPath($fallback);\n }\n\n /**\n * Generate an absolute URL to the given path.\n *\n * @param string $path\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function to($path, $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->to($path, $extra, $secure);\n }\n\n /**\n * Generate an absolute URL with the given query parameters.\n *\n * @param string $path\n * @param array $query\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function query($path, $query = [], $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->query($path, $query, $extra, $secure);\n }\n\n /**\n * Generate a secure, absolute URL to the given path.\n *\n * @param string $path\n * @param array $parameters\n * @return string\n * @static\n */\n public static function secure($path, $parameters = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secure($path, $parameters);\n }\n\n /**\n * Generate the URL to an application asset.\n *\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function asset($path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->asset($path, $secure);\n }\n\n /**\n * Generate the URL to a secure asset.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function secureAsset($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secureAsset($path);\n }\n\n /**\n * Generate the URL to an asset from a custom root domain such as CDN, etc.\n *\n * @param string $root\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function assetFrom($root, $path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->assetFrom($root, $path, $secure);\n }\n\n /**\n * Get the default scheme for a raw URL.\n *\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function formatScheme($secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatScheme($secure);\n }\n\n /**\n * Create a signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signedRoute($name, $parameters, $expiration, $absolute);\n }\n\n /**\n * Create a temporary signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param \\DateTimeInterface|\\DateInterval|int $expiration\n * @param array $parameters\n * @param bool $absolute\n * @return string\n * @static\n */\n public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute);\n }\n\n /**\n * Determine if the given request has a valid signature.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the given request has a valid signature for a relative URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidRelativeSignature($request, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidRelativeSignature($request, $ignoreQuery);\n }\n\n /**\n * Determine if the signature from the given request matches the URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the expires timestamp from the given request is not from the past.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return bool\n * @static\n */\n public static function signatureHasNotExpired($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signatureHasNotExpired($request);\n }\n\n /**\n * Get the URL to a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Symfony\\Component\\Routing\\Exception\\RouteNotFoundException|\\InvalidArgumentException\n * @static\n */\n public static function route($name, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->route($name, $parameters, $absolute);\n }\n\n /**\n * Get the URL for a given route instance.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Illuminate\\Routing\\Exceptions\\UrlGenerationException\n * @static\n */\n public static function toRoute($route, $parameters, $absolute)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->toRoute($route, $parameters, $absolute);\n }\n\n /**\n * Get the URL to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function action($action, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->action($action, $parameters, $absolute);\n }\n\n /**\n * Format the array of URL parameters.\n *\n * @param mixed $parameters\n * @return array\n * @static\n */\n public static function formatParameters($parameters)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatParameters($parameters);\n }\n\n /**\n * Get the base URL for the request.\n *\n * @param string $scheme\n * @param string|null $root\n * @return string\n * @static\n */\n public static function formatRoot($scheme, $root = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatRoot($scheme, $root);\n }\n\n /**\n * Format the given URL segments into a single URL.\n *\n * @param string $root\n * @param string $path\n * @param \\Illuminate\\Routing\\Route|null $route\n * @return string\n * @static\n */\n public static function format($root, $path, $route = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->format($root, $path, $route);\n }\n\n /**\n * Determine if the given path is a valid URL.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isValidUrl($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->isValidUrl($path);\n }\n\n /**\n * Set the default named parameters used by the URL generator.\n *\n * @param array $defaults\n * @return void\n * @static\n */\n public static function defaults($defaults)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->defaults($defaults);\n }\n\n /**\n * Get the default named parameters used by the URL generator.\n *\n * @return array\n * @static\n */\n public static function getDefaultParameters()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getDefaultParameters();\n }\n\n /**\n * Force the scheme for URLs.\n *\n * @param string|null $scheme\n * @return void\n * @static\n */\n public static function forceScheme($scheme)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceScheme($scheme);\n }\n\n /**\n * Force the use of the HTTPS scheme for all generated URLs.\n *\n * @param bool $force\n * @return void\n * @static\n */\n public static function forceHttps($force = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceHttps($force);\n }\n\n /**\n * Set the URL origin for all generated URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useOrigin($root);\n }\n\n /**\n * Set the forced root URL.\n *\n * @param string|null $root\n * @return void\n * @deprecated Use useOrigin\n * @static\n */\n public static function forceRootUrl($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceRootUrl($root);\n }\n\n /**\n * Set the URL origin for all generated asset URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useAssetOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useAssetOrigin($root);\n }\n\n /**\n * Set a callback to be used to format the host of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatHostUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatHostUsing($callback);\n }\n\n /**\n * Set a callback to be used to format the path of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatPathUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatPathUsing($callback);\n }\n\n /**\n * Get the path formatter being used by the URL generator.\n *\n * @return \\Closure\n * @static\n */\n public static function pathFormatter()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->pathFormatter();\n }\n\n /**\n * Get the request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->setRequest($request);\n }\n\n /**\n * Set the route collection.\n *\n * @param \\Illuminate\\Routing\\RouteCollectionInterface $routes\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRoutes($routes);\n }\n\n /**\n * Set the session resolver for the generator.\n *\n * @param callable $sessionResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setSessionResolver($sessionResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setSessionResolver($sessionResolver);\n }\n\n /**\n * Set the encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setKeyResolver($keyResolver);\n }\n\n /**\n * Clone a new instance of the URL generator with a different encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function withKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->withKeyResolver($keyResolver);\n }\n\n /**\n * Set the callback that should be used to attempt to resolve missing named routes.\n *\n * @param callable $missingNamedRouteResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver);\n }\n\n /**\n * Get the root controller namespace.\n *\n * @return string\n * @static\n */\n public static function getRootControllerNamespace()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRootControllerNamespace();\n }\n\n /**\n * Set the root controller namespace.\n *\n * @param string $rootNamespace\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRootControllerNamespace($rootNamespace)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRootControllerNamespace($rootNamespace);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\UrlGenerator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\UrlGenerator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\UrlGenerator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\UrlGenerator::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Validation\\Factory\n */\n class Validator {\n /**\n * Create a new Validator instance.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return \\Illuminate\\Validation\\Validator\n * @static\n */\n public static function make($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->make($data, $rules, $messages, $attributes);\n }\n\n /**\n * Validate the given data against the provided rules.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return array\n * @throws \\Illuminate\\Validation\\ValidationException\n * @static\n */\n public static function validate($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->validate($data, $rules, $messages, $attributes);\n }\n\n /**\n * Register a custom validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extend($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extend($rule, $extension, $message);\n }\n\n /**\n * Register a custom implicit validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendImplicit($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendImplicit($rule, $extension, $message);\n }\n\n /**\n * Register a custom dependent validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendDependent($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendDependent($rule, $extension, $message);\n }\n\n /**\n * Register a custom validator message replacer.\n *\n * @param string $rule\n * @param \\Closure|string $replacer\n * @return void\n * @static\n */\n public static function replacer($rule, $replacer)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->replacer($rule, $replacer);\n }\n\n /**\n * Indicate that unvalidated array keys should be included in validated data when the parent array is validated.\n *\n * @return void\n * @static\n */\n public static function includeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->includeUnvalidatedArrayKeys();\n }\n\n /**\n * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated.\n *\n * @return void\n * @static\n */\n public static function excludeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->excludeUnvalidatedArrayKeys();\n }\n\n /**\n * Set the Validator instance resolver.\n *\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function resolver($resolver)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->resolver($resolver);\n }\n\n /**\n * Get the Translator implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Translator\n * @static\n */\n public static function getTranslator()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getTranslator();\n }\n\n /**\n * Get the Presence Verifier implementation.\n *\n * @return \\Illuminate\\Validation\\PresenceVerifierInterface\n * @static\n */\n public static function getPresenceVerifier()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getPresenceVerifier();\n }\n\n /**\n * Set the Presence Verifier implementation.\n *\n * @param \\Illuminate\\Validation\\PresenceVerifierInterface $presenceVerifier\n * @return void\n * @static\n */\n public static function setPresenceVerifier($presenceVerifier)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->setPresenceVerifier($presenceVerifier);\n }\n\n /**\n * Get the container instance used by the validation factory.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container|null\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the validation factory.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Validation\\Factory\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Factory\n */\n class View {\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $path\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function file($path, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->file($path, $data, $mergeData);\n }\n\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function make($view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->make($view, $data, $mergeData);\n }\n\n /**\n * Get the first view that actually exists from the given list.\n *\n * @param array $views\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function first($views, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->first($views, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderWhen($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderWhen($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on the negation of a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderUnless($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderUnless($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered contents of a partial from a loop.\n *\n * @param string $view\n * @param array $data\n * @param string $iterator\n * @param string $empty\n * @return string\n * @static\n */\n public static function renderEach($view, $data, $iterator, $empty = 'raw|')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderEach($view, $data, $iterator, $empty);\n }\n\n /**\n * Determine if a given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function exists($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->exists($view);\n }\n\n /**\n * Get the appropriate view engine for the given path.\n *\n * @param string $path\n * @return \\Illuminate\\Contracts\\View\\Engine\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function getEngineFromPath($path)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineFromPath($path);\n }\n\n /**\n * Add a piece of shared data to the environment.\n *\n * @param array|string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function share($key, $value = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->share($key, $value);\n }\n\n /**\n * Increment the rendering counter.\n *\n * @return void\n * @static\n */\n public static function incrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementRender();\n }\n\n /**\n * Decrement the rendering counter.\n *\n * @return void\n * @static\n */\n public static function decrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->decrementRender();\n }\n\n /**\n * Check if there are no active render operations.\n *\n * @return bool\n * @static\n */\n public static function doneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->doneRendering();\n }\n\n /**\n * Determine if the given once token has been rendered.\n *\n * @param string $id\n * @return bool\n * @static\n */\n public static function hasRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasRenderedOnce($id);\n }\n\n /**\n * Mark the given once token as having been rendered.\n *\n * @param string $id\n * @return void\n * @static\n */\n public static function markAsRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->markAsRenderedOnce($id);\n }\n\n /**\n * Add a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function addLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLocation($location);\n }\n\n /**\n * Prepend a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function prependLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->prependLocation($location);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function addNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->addNamespace($namespace, $hints);\n }\n\n /**\n * Prepend a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function prependNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->prependNamespace($namespace, $hints);\n }\n\n /**\n * Replace the namespace hints for the given namespace.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function replaceNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->replaceNamespace($namespace, $hints);\n }\n\n /**\n * Register a valid view extension and its engine.\n *\n * @param string $extension\n * @param string $engine\n * @param \\Closure|null $resolver\n * @return void\n * @static\n */\n public static function addExtension($extension, $engine, $resolver = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addExtension($extension, $engine, $resolver);\n }\n\n /**\n * Flush all of the factory state like sections and stacks.\n *\n * @return void\n * @static\n */\n public static function flushState()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushState();\n }\n\n /**\n * Flush all of the section contents if done rendering.\n *\n * @return void\n * @static\n */\n public static function flushStateIfDoneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStateIfDoneRendering();\n }\n\n /**\n * Get the extension to engine bindings.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Get the engine resolver instance.\n *\n * @return \\Illuminate\\View\\Engines\\EngineResolver\n * @static\n */\n public static function getEngineResolver()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineResolver();\n }\n\n /**\n * Get the view finder instance.\n *\n * @return \\Illuminate\\View\\ViewFinderInterface\n * @static\n */\n public static function getFinder()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFinder();\n }\n\n /**\n * Set the view finder instance.\n *\n * @param \\Illuminate\\View\\ViewFinderInterface $finder\n * @return void\n * @static\n */\n public static function setFinder($finder)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setFinder($finder);\n }\n\n /**\n * Flush the cache of views located by the finder.\n *\n * @return void\n * @static\n */\n public static function flushFinderCache()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFinderCache();\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the IoC container instance.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setContainer($container);\n }\n\n /**\n * Get an item from the shared data.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function shared($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->shared($key, $default);\n }\n\n /**\n * Get all of the shared data for the environment.\n *\n * @return array\n * @static\n */\n public static function getShared()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getShared();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\View\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\View\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\View\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\View\\Factory::flushMacros();\n }\n\n /**\n * Start a component rendering process.\n *\n * @param \\Illuminate\\Contracts\\View\\View|\\Illuminate\\Contracts\\Support\\Htmlable|\\Closure|string $view\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponent($view, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponent($view, $data);\n }\n\n /**\n * Get the first view that actually exists from the given list, and start a component.\n *\n * @param array $names\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponentFirst($names, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponentFirst($names, $data);\n }\n\n /**\n * Render the current component.\n *\n * @return string\n * @static\n */\n public static function renderComponent()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderComponent();\n }\n\n /**\n * Get an item from the component data that exists above the current component.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getConsumableComponentData($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getConsumableComponentData($key, $default);\n }\n\n /**\n * Start the slot rendering process.\n *\n * @param string $name\n * @param string|null $content\n * @param array $attributes\n * @return void\n * @static\n */\n public static function slot($name, $content = null, $attributes = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->slot($name, $content, $attributes);\n }\n\n /**\n * Save the slot content for rendering.\n *\n * @return void\n * @static\n */\n public static function endSlot()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->endSlot();\n }\n\n /**\n * Register a view creator event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function creator($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->creator($views, $callback);\n }\n\n /**\n * Register multiple view composers via an array.\n *\n * @param array $composers\n * @return array\n * @static\n */\n public static function composers($composers)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composers($composers);\n }\n\n /**\n * Register a view composer event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function composer($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composer($views, $callback);\n }\n\n /**\n * Call the composer for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callComposer($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callComposer($view);\n }\n\n /**\n * Call the creator for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callCreator($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callCreator($view);\n }\n\n /**\n * Start injecting content into a fragment.\n *\n * @param string $fragment\n * @return void\n * @static\n */\n public static function startFragment($fragment)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startFragment($fragment);\n }\n\n /**\n * Stop injecting content into a fragment.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopFragment()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopFragment();\n }\n\n /**\n * Get the contents of a fragment.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getFragment($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragment($name, $default);\n }\n\n /**\n * Get the entire array of rendered fragments.\n *\n * @return array\n * @static\n */\n public static function getFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragments();\n }\n\n /**\n * Flush all of the fragments.\n *\n * @return void\n * @static\n */\n public static function flushFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFragments();\n }\n\n /**\n * Start injecting content into a section.\n *\n * @param string $section\n * @param string|null $content\n * @return void\n * @static\n */\n public static function startSection($section, $content = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startSection($section, $content);\n }\n\n /**\n * Inject inline content into a section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function inject($section, $content)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->inject($section, $content);\n }\n\n /**\n * Stop injecting content into a section and return its contents.\n *\n * @return string\n * @static\n */\n public static function yieldSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldSection();\n }\n\n /**\n * Stop injecting content into a section.\n *\n * @param bool $overwrite\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopSection($overwrite = false)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopSection($overwrite);\n }\n\n /**\n * Stop injecting content into a section and append it.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function appendSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->appendSection();\n }\n\n /**\n * Get the string contents of a section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldContent($section, $default);\n }\n\n /**\n * Get the parent placeholder for the current request.\n *\n * @param string $section\n * @return string\n * @static\n */\n public static function parentPlaceholder($section = '')\n {\n return \\Illuminate\\View\\Factory::parentPlaceholder($section);\n }\n\n /**\n * Check if section exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasSection($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasSection($name);\n }\n\n /**\n * Check if section does not exist.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function sectionMissing($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->sectionMissing($name);\n }\n\n /**\n * Get the contents of a section.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getSection($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSection($name, $default);\n }\n\n /**\n * Get the entire array of sections.\n *\n * @return array\n * @static\n */\n public static function getSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSections();\n }\n\n /**\n * Flush all of the sections.\n *\n * @return void\n * @static\n */\n public static function flushSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushSections();\n }\n\n /**\n * Add new loop to the stack.\n *\n * @param \\Countable|array $data\n * @return void\n * @static\n */\n public static function addLoop($data)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLoop($data);\n }\n\n /**\n * Increment the top loop's indices.\n *\n * @return void\n * @static\n */\n public static function incrementLoopIndices()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementLoopIndices();\n }\n\n /**\n * Pop a loop from the top of the loop stack.\n *\n * @return void\n * @static\n */\n public static function popLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->popLoop();\n }\n\n /**\n * Get an instance of the last loop in the stack.\n *\n * @return \\stdClass|null\n * @static\n */\n public static function getLastLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLastLoop();\n }\n\n /**\n * Get the entire loop stack.\n *\n * @return array\n * @static\n */\n public static function getLoopStack()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLoopStack();\n }\n\n /**\n * Start injecting content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPush($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPush($section, $content);\n }\n\n /**\n * Stop injecting content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPush()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPush();\n }\n\n /**\n * Start prepending content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPrepend($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPrepend($section, $content);\n }\n\n /**\n * Stop prepending content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPrepend()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPrepend();\n }\n\n /**\n * Get the string contents of a push section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldPushContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldPushContent($section, $default);\n }\n\n /**\n * Flush all of the stacks.\n *\n * @return void\n * @static\n */\n public static function flushStacks()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStacks();\n }\n\n /**\n * Start a translation block.\n *\n * @param array $replacements\n * @return void\n * @static\n */\n public static function startTranslation($replacements = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startTranslation($replacements);\n }\n\n /**\n * Render the current translation.\n *\n * @return string\n * @static\n */\n public static function renderTranslation()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderTranslation();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Vite\n */\n class Vite {\n /**\n * Get the preloaded assets.\n *\n * @return array\n * @static\n */\n public static function preloadedAssets()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->preloadedAssets();\n }\n\n /**\n * Get the Content Security Policy nonce applied to all generated tags.\n *\n * @return string|null\n * @static\n */\n public static function cspNonce()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->cspNonce();\n }\n\n /**\n * Generate or set a Content Security Policy nonce to apply to all generated tags.\n *\n * @param string|null $nonce\n * @return string\n * @static\n */\n public static function useCspNonce($nonce = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useCspNonce($nonce);\n }\n\n /**\n * Use the given key to detect integrity hashes in the manifest.\n *\n * @param string|false $key\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useIntegrityKey($key)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useIntegrityKey($key);\n }\n\n /**\n * Set the Vite entry points.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function withEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->withEntryPoints($entryPoints);\n }\n\n /**\n * Merge additional Vite entry points with the current set.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function mergeEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->mergeEntryPoints($entryPoints);\n }\n\n /**\n * Set the filename for the manifest file.\n *\n * @param string $filename\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useManifestFilename($filename)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useManifestFilename($filename);\n }\n\n /**\n * Resolve asset paths using the provided resolver.\n *\n * @param callable|null $resolver\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function createAssetPathsUsing($resolver)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->createAssetPathsUsing($resolver);\n }\n\n /**\n * Get the Vite \"hot\" file path.\n *\n * @return string\n * @static\n */\n public static function hotFile()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->hotFile();\n }\n\n /**\n * Set the Vite \"hot\" file path.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useHotFile($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useHotFile($path);\n }\n\n /**\n * Set the Vite build directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useBuildDirectory($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useBuildDirectory($path);\n }\n\n /**\n * Use the given callback to resolve attributes for script tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useScriptTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useScriptTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for style tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useStyleTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useStyleTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for preload tags.\n *\n * @param (callable(string, string, ?array, ?array): (array|false))|array|false $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePreloadTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePreloadTagAttributes($attributes);\n }\n\n /**\n * Eagerly prefetch assets.\n *\n * @param int|null $concurrency\n * @param string $event\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function prefetch($concurrency = null, $event = 'load')\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->prefetch($concurrency, $event);\n }\n\n /**\n * Use the \"waterfall\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useWaterfallPrefetching($concurrency = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useWaterfallPrefetching($concurrency);\n }\n\n /**\n * Use the \"aggressive\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useAggressivePrefetching()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useAggressivePrefetching();\n }\n\n /**\n * Set the prefetching strategy.\n *\n * @param 'waterfall'|'aggressive'|null $strategy\n * @param array $config\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePrefetchStrategy($strategy, $config = [])\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePrefetchStrategy($strategy, $config);\n }\n\n /**\n * Generate React refresh runtime script.\n *\n * @return \\Illuminate\\Support\\HtmlString|void\n * @static\n */\n public static function reactRefresh()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->reactRefresh();\n }\n\n /**\n * Get the URL for an asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @static\n */\n public static function asset($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->asset($asset, $buildDirectory);\n }\n\n /**\n * Get the content of a given asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @throws \\Illuminate\\Foundation\\ViteException\n * @static\n */\n public static function content($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->content($asset, $buildDirectory);\n }\n\n /**\n * Get a unique hash representing the current manifest, or null if there is no manifest.\n *\n * @param string|null $buildDirectory\n * @return string|null\n * @static\n */\n public static function manifestHash($buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->manifestHash($buildDirectory);\n }\n\n /**\n * Determine if the HMR server is running.\n *\n * @return bool\n * @static\n */\n public static function isRunningHot()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->isRunningHot();\n }\n\n /**\n * Get the Vite tag content as a string of HTML.\n *\n * @return string\n * @static\n */\n public static function toHtml()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->toHtml();\n }\n\n /**\n * Flush state.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n $instance->flush();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Vite::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Vite::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Vite::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Vite::flushMacros();\n }\n\n }\n /**\n * @method static void createSubscription(array|string $channels, \\Closure $callback, string $method = 'subscribe')\n * @method static \\Illuminate\\Redis\\Limiters\\ConcurrencyLimiterBuilder funnel(string $name)\n * @method static \\Illuminate\\Redis\\Limiters\\DurationLimiterBuilder throttle(string $name)\n * @method static mixed client()\n * @method static void subscribe(array|string $channels, \\Closure $callback)\n * @method static void psubscribe(array|string $channels, \\Closure $callback)\n * @method static mixed command(string $method, array $parameters = [])\n * @method static void listen(\\Closure $callback)\n * @method static string|null getName()\n * @method static \\Illuminate\\Redis\\Connections\\Connection setName(string $name)\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $events)\n * @method static void unsetEventDispatcher()\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @method static mixed macroCall(string $method, array $parameters)\n * @see \\Illuminate\\Redis\\RedisManager\n */\n class Redis {\n /**\n * Get a Redis connection by name.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Resolve the given connection by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array\n * @static\n */\n public static function connections()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connections();\n }\n\n /**\n * Enable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function enableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->enableEvents();\n }\n\n /**\n * Disable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function disableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->disableEvents();\n }\n\n /**\n * Set the default driver.\n *\n * @param string $driver\n * @return void\n * @static\n */\n public static function setDriver($driver)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->setDriver($driver);\n }\n\n /**\n * Disconnect the given connection and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Redis\\RedisManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n }\n }\n\nnamespace Aws\\Laravel {\n /**\n * Facade for the AWS service\n *\n */\n class AwsFacade {\n /**\n * Get a client by name using an array of constructor options.\n *\n * @param string $name Service name or namespace (e.g., DynamoDb, s3).\n * @param array $args Arguments to configure the client.\n * @return \\Aws\\AwsClientInterface\n * @throws \\InvalidArgumentException if any required options are missing or\n * the service is not supported.\n * @see Aws\\AwsClient::__construct for a list of available options for args.\n * @static\n */\n public static function createClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createClient($name, $args);\n }\n\n /**\n * @static\n */\n public static function createMultiRegionClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createMultiRegionClient($name, $args);\n }\n\n /**\n * Clone existing SDK instance with ability to pass an associative array\n * of extra client settings.\n *\n * @param array $args\n * @return self\n * @static\n */\n public static function copy($args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->copy($args);\n }\n\n /**\n * Determine the endpoint prefix from a client namespace.\n *\n * @param string $name Namespace name\n * @return string\n * @internal\n * @deprecated Use the `\\Aws\\manifest()` function instead.\n * @static\n */\n public static function getEndpointPrefix($name)\n {\n return \\Aws\\Sdk::getEndpointPrefix($name);\n }\n\n }\n }\n\nnamespace Laravolt\\Avatar {\n /**\n */\n class Facade {\n /**\n * @static\n */\n public static function setGenerator($generator)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setGenerator($generator);\n }\n\n /**\n * @static\n */\n public static function create($name)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->create($name);\n }\n\n /**\n * @static\n */\n public static function applyTheme($config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->applyTheme($config);\n }\n\n /**\n * @static\n */\n public static function addTheme($name, $config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->addTheme($name, $config);\n }\n\n /**\n * @static\n */\n public static function toBase64()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toBase64();\n }\n\n /**\n * @static\n */\n public static function save($path, $quality = 90)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->save($path, $quality);\n }\n\n /**\n * @static\n */\n public static function toSvg()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toSvg();\n }\n\n /**\n * @static\n */\n public static function toGravatar($param = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toGravatar($param);\n }\n\n /**\n * @static\n */\n public static function getInitial()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getInitial();\n }\n\n /**\n * @static\n */\n public static function getImageObject()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getImageObject();\n }\n\n /**\n * @static\n */\n public static function buildAvatar()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->buildAvatar();\n }\n\n /**\n * @static\n */\n public static function getAttribute($key)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getAttribute($key);\n }\n\n /**\n * Get background color\n *\n * @static\n */\n public static function getBackground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getBackground();\n }\n\n /**\n * Get foreground color\n *\n * @static\n */\n public static function getForeground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getForeground();\n }\n\n /**\n * Get shape\n *\n * @static\n */\n public static function getShape()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getShape();\n }\n\n /**\n * @static\n */\n public static function setTheme($theme)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setTheme($theme);\n }\n\n /**\n * @static\n */\n public static function setBackground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBackground($hex);\n }\n\n /**\n * @static\n */\n public static function setForeground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setForeground($hex);\n }\n\n /**\n * @static\n */\n public static function setDimension($width, $height = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setDimension($width, $height);\n }\n\n /**\n * @static\n */\n public static function setResponsive($responsive)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setResponsive($responsive);\n }\n\n /**\n * @static\n */\n public static function setFontSize($size)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontSize($size);\n }\n\n /**\n * @static\n */\n public static function setFontFamily($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontFamily($font);\n }\n\n /**\n * @static\n */\n public static function setBorder($size, $color, $radius = 0)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorder($size, $color, $radius);\n }\n\n /**\n * @static\n */\n public static function setBorderRadius($radius)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorderRadius($radius);\n }\n\n /**\n * @static\n */\n public static function setShape($shape)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setShape($shape);\n }\n\n /**\n * @static\n */\n public static function setChars($chars)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setChars($chars);\n }\n\n /**\n * @static\n */\n public static function setFont($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFont($font);\n }\n\n }\n }\n\nnamespace Spatie\\Fractal\\Facades {\n /**\n * @see \\Spatie\\Fractal\\Fractal\n */\n class Fractal extends \\Spatie\\Fractalistic\\Fractal {\n /**\n * @param null|mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return static\n * @static\n */\n public static function create($data = null, $transformer = null, $serializer = null)\n {\n return \\Spatie\\Fractal\\Fractal::create($data, $transformer, $serializer);\n }\n\n /**\n * @static\n */\n public static function respond($statusCode = 200, $headers = [], $options = 0)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->respond($statusCode, $headers, $options);\n }\n\n /**\n * Set the collection data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function collection($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->collection($data, $transformer, $resourceName);\n }\n\n /**\n * Set the item data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function item($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->item($data, $transformer, $resourceName);\n }\n\n /**\n * Set the primitive data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function primitive($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->primitive($data, $transformer, $resourceName);\n }\n\n /**\n * Set the data that must be transformed.\n *\n * @param string $dataType\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function data($dataType, $data, $transformer = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->data($dataType, $data, $transformer);\n }\n\n /**\n * Set the class or function that will perform the transform.\n *\n * @param string|callable|\\League\\Fractal\\TransformerAbstract|null $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function transformWith($transformer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->transformWith($transformer);\n }\n\n /**\n * Set the serializer to be used.\n *\n * @param string|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function serializeWith($serializer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->serializeWith($serializer);\n }\n\n /**\n * Set a Fractal paginator for the data.\n *\n * @param \\League\\Fractal\\Pagination\\PaginatorInterface $paginator\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function paginateWith($paginator)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->paginateWith($paginator);\n }\n\n /**\n * Set a Fractal cursor for the data.\n *\n * @param \\League\\Fractal\\Pagination\\CursorInterface $cursor\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withCursor($cursor)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withCursor($cursor);\n }\n\n /**\n * Specify the includes.\n *\n * @param array|string $includes Array or string of resources to include.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseIncludes($includes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseIncludes($includes);\n }\n\n /**\n * Specify the excludes.\n *\n * @param array|string $excludes Array or string of resources to exclude.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseExcludes($excludes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseExcludes($excludes);\n }\n\n /**\n * Specify the fieldsets to include in the response.\n *\n * @param array $fieldsets array with key = resourceName and value = fields to include\n * (array or comma separated string with field names)\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseFieldsets($fieldsets)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseFieldsets($fieldsets);\n }\n\n /**\n * Set the meta data.\n *\n * @param $array,...\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function addMeta()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->addMeta();\n }\n\n /**\n * Set the resource name, to replace 'data' as the root of the collection or item.\n *\n * @param string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withResourceName($resourceName)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withResourceName($resourceName);\n }\n\n /**\n * Upper limit to how many levels of included data are allowed.\n *\n * @param int $recursionLimit\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function limitRecursion($recursionLimit)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->limitRecursion($recursionLimit);\n }\n\n /**\n * Perform the transformation to json.\n *\n * @param int $options\n * @return string\n * @static\n */\n public static function toJson($options = 0)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toJson($options);\n }\n\n /**\n * Perform the transformation to array.\n *\n * @return array|null\n * @static\n */\n public static function toArray()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toArray();\n }\n\n /**\n * Create fractal data.\n *\n * @return \\League\\Fractal\\Scope\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @throws \\Spatie\\Fractalistic\\Exceptions\\NoTransformerSpecified\n * @static\n */\n public static function createData()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->createData();\n }\n\n /**\n * Get the resource class.\n *\n * @return string\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResourceClass()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceClass();\n }\n\n /**\n * Get the resource.\n *\n * @return \\League\\Fractal\\Resource\\ResourceInterface\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResource()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResource();\n }\n\n /**\n * Return the name of the resource.\n *\n * @return string|null\n * @static\n */\n public static function getResourceName()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceName();\n }\n\n /**\n * Convert the object into something JSON serializable.\n *\n * @return array|null\n * @static\n */\n public static function jsonSerialize()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->jsonSerialize();\n }\n\n /**\n * Get the transformer.\n *\n * @return string|callable|\\League\\Fractal\\TransformerAbstract|null\n * @static\n */\n public static function getTransformer()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getTransformer();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Spatie\\Fractal\\Fractal::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Spatie\\Fractal\\Fractal::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Spatie\\Fractal\\Fractal::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Spatie\\Fractal\\Fractal::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n }\n\nnamespace Laratrust {\n /**\n */\n class LaratrustFacade {\n /**\n * Checks if the current user has a role by its name.\n *\n * @static\n */\n public static function hasRole($role, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasRole($role, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n *\n * @static\n */\n public static function hasPermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasPermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n *\n * @static\n */\n public static function doesntHavePermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->doesntHavePermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n * \n * Alias to hasPermission.\n *\n * @static\n */\n public static function isAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n * \n * Alias to doesntHavePermission.\n *\n * @static\n */\n public static function isNotAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isNotAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a role or permission by its name.\n *\n * @param array|string $roles The role(s) needed.\n * @param array|string $permissions The permission(s) needed.\n * @param array $options The Options.\n * @return bool\n * @static\n */\n public static function ability($roles, $permissions, $team = null, $options = [])\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->ability($roles, $permissions, $team, $options);\n }\n\n }\n }\n\nnamespace Sentry\\Laravel {\n /**\n * @see \\Sentry\\State\\HubInterface\n */\n class Facade {\n /**\n * Gets the client bound to the top of the stack.\n *\n * @static\n */\n public static function getClient()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getClient();\n }\n\n /**\n * Gets the ID of the last captured event.\n *\n * @static\n */\n public static function getLastEventId()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getLastEventId();\n }\n\n /**\n * Creates a new scope to store context information that will be layered on\n * top of the current one. It is isolated, i.e. all breadcrumbs and context\n * information added to this scope will be removed once the scope ends. Be\n * sure to always remove this scope with {@see Hub::popScope} when the\n * operation finishes or throws.\n *\n * @static\n */\n public static function pushScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->pushScope();\n }\n\n /**\n * Removes a previously pushed scope from the stack. This restores the state\n * before the scope was pushed. All breadcrumbs and context information added\n * since the last call to {@see Hub::pushScope} are discarded.\n *\n * @static\n */\n public static function popScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->popScope();\n }\n\n /**\n * Creates a new scope with and executes the given operation within. The scope\n * is automatically removed once the operation finishes or throws.\n *\n * @param callable $callback The callback to be executed\n * @return mixed|void The callback's return value, upon successful execution\n * @psalm-template T\n * @psalm-param callable(Scope): T $callback\n * @psalm-return T\n * @static\n */\n public static function withScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->withScope($callback);\n }\n\n /**\n * Calls the given callback passing to it the current scope so that any\n * operation can be run within its context.\n *\n * @static\n */\n public static function configureScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->configureScope($callback);\n }\n\n /**\n * Binds the given client to the current scope.\n *\n * @static\n */\n public static function bindClient($client)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->bindClient($client);\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * @static\n */\n public static function captureMessage($message, $level = null, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureMessage($message, $level, $hint);\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * @static\n */\n public static function captureException($exception, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureException($exception, $hint);\n }\n\n /**\n * Captures a new event using the provided data.\n *\n * @static\n */\n public static function captureEvent($event, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureEvent($event, $hint);\n }\n\n /**\n * Captures an event that logs the last occurred error.\n *\n * @static\n */\n public static function captureLastError($hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureLastError($hint);\n }\n\n /**\n * Captures a check-in.\n *\n * @param int|float|null $duration\n * @param int|float|null $duration\n * @static\n */\n public static function captureCheckIn($slug, $status, $duration = null, $monitorConfig = null, $checkInId = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureCheckIn($slug, $status, $duration, $monitorConfig, $checkInId);\n }\n\n /**\n * Records a new breadcrumb which will be attached to future events. They\n * will be added to subsequent events to provide more context on user's\n * actions prior to an error or crash.\n *\n * @static\n */\n public static function addBreadcrumb($breadcrumb)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->addBreadcrumb($breadcrumb);\n }\n\n /**\n * Gets the integration whose FQCN matches the given one if it's available on the current client.\n *\n * @param string $className The FQCN of the integration\n * @psalm-template T of IntegrationInterface\n * @psalm-param class-string<T> $className\n * @psalm-return T|null\n * @static\n */\n public static function getIntegration($className)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getIntegration($className);\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual\n * tracing instrumentation.\n * \n * A tree structure can be built by adding child spans to the transaction, and\n * child spans to other spans. To start a new child span within the transaction\n * or any span, call the respective `startChild()` method.\n * \n * Every child span must be finished before the transaction is finished,\n * otherwise the unfinished spans are discarded.\n * \n * The transaction must be finished with a call to its `finish()` method, at\n * which point the transaction with all its finished child spans will be sent to\n * Sentry.\n *\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @static\n */\n public static function startTransaction($context, $customSamplingContext = [])\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->startTransaction($context, $customSamplingContext);\n }\n\n /**\n * Returns the transaction that is on the Hub.\n *\n * @static\n */\n public static function getTransaction()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getTransaction();\n }\n\n /**\n * Sets the span on the Hub.\n *\n * @static\n */\n public static function setSpan($span)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->setSpan($span);\n }\n\n /**\n * Returns the span that is on the Hub.\n *\n * @static\n */\n public static function getSpan()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getSpan();\n }\n\n }\n }\n\nnamespace League\\StatsD\\Laravel5\\Facade {\n /**\n * Facade for Statsd Package\n *\n * @author Aran Wilkinson <aran@aranw.net>\n * @package League\\StatsD\\Laravel5\\Facade\n */\n class StatsdFacade {\n /**\n * Singleton Reference\n *\n * @static\n */\n public static function instance($name = 'default')\n {\n return \\League\\StatsD\\Client::instance($name);\n }\n\n /**\n * Initialize Connection Details\n *\n * @param array $options Configuration options\n * @return \\League\\StatsD\\Client This instance\n * @throws ConfigurationException If port is invalid\n * @static\n */\n public static function configure($options = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->configure($options);\n }\n\n /**\n * @static\n */\n public static function getHost()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getHost();\n }\n\n /**\n * @static\n */\n public static function getPort()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getPort();\n }\n\n /**\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Get Last message sent to server\n *\n * @static\n */\n public static function getLastMessage()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getLastMessage();\n }\n\n /**\n * Increment a metric\n *\n * @param string|array $metrics Metric(s) to increment\n * @param int $delta Value to decrement the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function increment($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->increment($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Decrement a metric\n *\n * @param string|array $metrics Metric(s) to decrement\n * @param int $delta Value to increment the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function decrement($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->decrement($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Start timing the given metric\n *\n * @param string $metric Metric to time\n * @static\n */\n public static function startTiming($metric)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->startTiming($metric);\n }\n\n /**\n * End timing the given metric and record\n *\n * @param string $metric Metric to time\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function endTiming($metric, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->endTiming($metric, $tags);\n }\n\n /**\n * Timing\n *\n * @param string $metric Metric to track\n * @param float $time Time in milliseconds\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function timing($metric, $time, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timing($metric, $time, $tags);\n }\n\n /**\n * Send multiple timing metrics at once\n *\n * @param array $metrics key value map of metric name -> timing value\n * @throws ConnectionException\n * @static\n */\n public static function timings($metrics)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timings($metrics);\n }\n\n /**\n * Time a function\n *\n * @param string $metric Metric to time\n * @param callable $func Function to record\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function time($metric, $func, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->time($metric, $func, $tags);\n }\n\n /**\n * Gauges\n *\n * @param string $metric Metric to gauge\n * @param int|float $value Set the value of the gauge\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function gauge($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->gauge($metric, $value, $tags);\n }\n\n /**\n * Sets - count the number of unique values passed to a key\n *\n * @param string $metric\n * @param mixed $value\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function set($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->set($metric, $value, $tags);\n }\n\n }\n }\n\nnamespace Barryvdh\\Debugbar\\Facades {\n /**\n * @method static void alert(mixed $message)\n * @method static void critical(mixed $message)\n * @method static void debug(mixed $message)\n * @method static void emergency(mixed $message)\n * @method static void error(mixed $message)\n * @method static void info(mixed $message)\n * @method static void log(mixed $message)\n * @method static void notice(mixed $message)\n * @method static void warning(mixed $message)\n * @see \\Barryvdh\\Debugbar\\LaravelDebugbar\n */\n class Debugbar extends \\DebugBar\\DebugBar {\n /**\n * Returns the HTTP driver\n * \n * If no http driver where defined, a PhpHttpDriver is automatically created\n *\n * @return \\DebugBar\\HttpDriverInterface\n * @static\n */\n public static function getHttpDriver()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getHttpDriver();\n }\n\n /**\n * Enable the Debugbar and boot, if not already booted.\n *\n * @static\n */\n public static function enable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->enable();\n }\n\n /**\n * Boot the debugbar (add collectors, renderer and listener)\n *\n * @static\n */\n public static function boot()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->boot();\n }\n\n /**\n * @static\n */\n public static function shouldCollect($name, $default = false)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->shouldCollect($name, $default);\n }\n\n /**\n * Adds a data collector\n *\n * @param \\DebugBar\\DataCollector\\DataCollectorInterface $collector\n * @throws DebugBarException\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function addCollector($collector)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addCollector($collector);\n }\n\n /**\n * Handle silenced errors\n *\n * @param $level\n * @param $message\n * @param string $file\n * @param int $line\n * @param array $context\n * @throws \\ErrorException\n * @static\n */\n public static function handleError($level, $message, $file = '', $line = 0, $context = [])\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->handleError($level, $message, $file, $line, $context);\n }\n\n /**\n * Starts a measure\n *\n * @param string $name Internal name, used to stop the measure\n * @param string $label Public name\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function startMeasure($name, $label = null, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->startMeasure($name, $label, $collector, $group);\n }\n\n /**\n * Stops a measure\n *\n * @param string $name\n * @static\n */\n public static function stopMeasure($name)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stopMeasure($name);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Exception $e\n * @deprecated in favor of addThrowable\n * @static\n */\n public static function addException($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addException($e);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Throwable $e\n * @static\n */\n public static function addThrowable($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addThrowable($e);\n }\n\n /**\n * Returns a JavascriptRenderer for this instance\n *\n * @param string $baseUrl\n * @param string $basePath\n * @return \\Barryvdh\\Debugbar\\JavascriptRenderer\n * @static\n */\n public static function getJavascriptRenderer($baseUrl = null, $basePath = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getJavascriptRenderer($baseUrl, $basePath);\n }\n\n /**\n * Modify the response and inject the debugbar (or data in headers)\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function modifyResponse($request, $response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->modifyResponse($request, $response);\n }\n\n /**\n * Check if the Debugbar is enabled\n *\n * @return boolean\n * @static\n */\n public static function isEnabled()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isEnabled();\n }\n\n /**\n * Collects the data from the collectors\n *\n * @return array\n * @static\n */\n public static function collect()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collect();\n }\n\n /**\n * Injects the web debug toolbar into the given Response.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response A Response instance\n * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php\n * @static\n */\n public static function injectDebugbar($response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->injectDebugbar($response);\n }\n\n /**\n * Checks if there is stacked data in the session\n *\n * @return boolean\n * @static\n */\n public static function hasStackedData()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasStackedData();\n }\n\n /**\n * Returns the data stacked in the session\n *\n * @param boolean $delete Whether to delete the data in the session\n * @return array\n * @static\n */\n public static function getStackedData($delete = true)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackedData($delete);\n }\n\n /**\n * Disable the Debugbar\n *\n * @static\n */\n public static function disable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->disable();\n }\n\n /**\n * Adds a measure\n *\n * @param string $label\n * @param float $start\n * @param float $end\n * @param array|null $params\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function addMeasure($label, $start, $end, $params = [], $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMeasure($label, $start, $end, $params, $collector, $group);\n }\n\n /**\n * Utility function to measure the execution of a Closure\n *\n * @param string $label\n * @param \\Closure $closure\n * @param string|null $collector\n * @param string|null $group\n * @return mixed\n * @static\n */\n public static function measure($label, $closure, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->measure($label, $closure, $collector, $group);\n }\n\n /**\n * Collect data in a CLI request\n *\n * @return array\n * @static\n */\n public static function collectConsole()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collectConsole();\n }\n\n /**\n * Adds a message to the MessagesCollector\n * \n * A message can be anything from an object to a string\n *\n * @param mixed $message\n * @param string $label\n * @static\n */\n public static function addMessage($message, $label = 'info')\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMessage($message, $label);\n }\n\n /**\n * Checks if a data collector has been added\n *\n * @param string $name\n * @return boolean\n * @static\n */\n public static function hasCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasCollector($name);\n }\n\n /**\n * Returns a data collector\n *\n * @param string $name\n * @return \\DebugBar\\DataCollector\\DataCollectorInterface\n * @throws DebugBarException\n * @static\n */\n public static function getCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollector($name);\n }\n\n /**\n * Returns an array of all data collectors\n *\n * @return array[DataCollectorInterface]\n * @static\n */\n public static function getCollectors()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollectors();\n }\n\n /**\n * Sets the request id generator\n *\n * @param \\DebugBar\\RequestIdGeneratorInterface $generator\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setRequestIdGenerator($generator)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setRequestIdGenerator($generator);\n }\n\n /**\n * @return \\DebugBar\\RequestIdGeneratorInterface\n * @static\n */\n public static function getRequestIdGenerator()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getRequestIdGenerator();\n }\n\n /**\n * Returns the id of the current request\n *\n * @return string\n * @static\n */\n public static function getCurrentRequestId()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCurrentRequestId();\n }\n\n /**\n * Sets the storage backend to use to store the collected data\n *\n * @param \\DebugBar\\StorageInterface $storage\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStorage($storage = null)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStorage($storage);\n }\n\n /**\n * @return \\DebugBar\\StorageInterface\n * @static\n */\n public static function getStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStorage();\n }\n\n /**\n * Checks if the data will be persisted\n *\n * @return boolean\n * @static\n */\n public static function isDataPersisted()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isDataPersisted();\n }\n\n /**\n * Sets the HTTP driver\n *\n * @param \\DebugBar\\HttpDriverInterface $driver\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setHttpDriver($driver)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setHttpDriver($driver);\n }\n\n /**\n * Returns collected data\n * \n * Will collect the data if none have been collected yet\n *\n * @return array\n * @static\n */\n public static function getData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getData();\n }\n\n /**\n * Returns an array of HTTP headers containing the data\n *\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return array\n * @static\n */\n public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);\n }\n\n /**\n * Sends the data through the HTTP headers\n *\n * @param bool $useOpenHandler\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);\n }\n\n /**\n * Stacks the data in the session for later rendering\n *\n * @static\n */\n public static function stackData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stackData();\n }\n\n /**\n * Sets the key to use in the $_SESSION array\n *\n * @param string $ns\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackDataSessionNamespace($ns)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackDataSessionNamespace($ns);\n }\n\n /**\n * Returns the key used in the $_SESSION array\n *\n * @return string\n * @static\n */\n public static function getStackDataSessionNamespace()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackDataSessionNamespace();\n }\n\n /**\n * Sets whether to only use the session to store stacked data even\n * if a storage is enabled\n *\n * @param boolean $enabled\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackAlwaysUseSessionStorage($enabled = true)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackAlwaysUseSessionStorage($enabled);\n }\n\n /**\n * Checks if the session is always used to store stacked data\n * even if a storage is enabled\n *\n * @return boolean\n * @static\n */\n public static function isStackAlwaysUseSessionStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isStackAlwaysUseSessionStorage();\n }\n\n /**\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetSet($key, $value);\n }\n\n /**\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetUnset($key);\n }\n\n }\n }\n\nnamespace Barryvdh\\DomPDF\\Facade {\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n }\n\nnamespace ChaseConey\\LaravelDatadogHelper {\n /**\n * @see LaravelDatadogHelper\n * @see \\Datadog\\DogStatsd\n */\n class Datadog extends \\DataDog\\DogStatsd {\n /**\n * @static\n */\n public static function send($data, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->send($data, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Log timing information\n *\n * @param string $stat The metric to in log timing info for.\n * @param float $time The elapsed time (ms) to log\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function timing($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->timing($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * A convenient alias for the timing function when used with micro-timing\n *\n * @param string $stat The metric name\n * @param float $time The elapsed time to log, IN SECONDS\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function microtiming($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->microtiming($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Gauge\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function gauge($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->gauge($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Histogram\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function histogram($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->histogram($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Distribution\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function distribution($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->distribution($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Set\n *\n * @param string $stat The metric\n * @param string|float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function set($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->set($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Increments one or more stats counters\n *\n * @param string|array $stats The metric(s) to increment.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to increment by (default 1)\n * @return void\n * @static\n */\n public static function increment($stats, $sampleRate = 1.0, $tags = null, $value = 1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->increment($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Decrements one or more stats counters.\n *\n * @param string|array $stats The metric(s) to decrement.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to decrement by (default -1)\n * @return void\n * @static\n */\n public static function decrement($stats, $sampleRate = 1.0, $tags = null, $value = -1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->decrement($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Updates one or more stats counters by arbitrary amounts.\n *\n * @param string|array $stats The metric(s) to update. Should be either a string or array of metrics.\n * @param int $delta The amount to increment/decrement each metric by.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function updateStats($stats, $delta = 1, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->updateStats($stats, $delta, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * @deprecated service_check will be removed in future versions in favor of serviceCheck\n * \n * Send a custom service check status over UDP\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function service_check($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->service_check($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * Send a custom service check status over UDP\n *\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function serviceCheck($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->serviceCheck($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * @static\n */\n public static function report($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->report($message);\n }\n\n /**\n * @throws \\Exception|\\Throwable\n * @static\n */\n public static function flush($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->flush($message);\n }\n\n /**\n * Formats $vals array into event for submission to Datadog via UDP\n *\n * @param array $vals Optional values of the event. See\n * https://docs.datadoghq.com/api/?lang=bash#post-an-event for the valid keys\n * @return bool\n * @static\n */\n public static function event($title, $vals = [])\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->event($title, $vals);\n }\n\n /**\n * @static\n */\n public static function setMetricsPrefix($metricsPrefix)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->setMetricsPrefix($metricsPrefix);\n }\n\n }\n }\n\nnamespace Spatie\\LaravelIgnition\\Facades {\n /**\n * @see \\Spatie\\FlareClient\\Flare\n */\n class Flare {\n /**\n * @static\n */\n public static function make($apiKey = null, $contextDetector = null)\n {\n return \\Spatie\\FlareClient\\Flare::make($apiKey, $contextDetector);\n }\n\n /**\n * @static\n */\n public static function setApiToken($apiToken)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setApiToken($apiToken);\n }\n\n /**\n * @static\n */\n public static function apiTokenSet()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->apiTokenSet();\n }\n\n /**\n * @static\n */\n public static function setBaseUrl($baseUrl)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setBaseUrl($baseUrl);\n }\n\n /**\n * @static\n */\n public static function setStage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setStage($stage);\n }\n\n /**\n * @static\n */\n public static function sendReportsImmediately()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendReportsImmediately();\n }\n\n /**\n * @static\n */\n public static function determineVersionUsing($determineVersionCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->determineVersionUsing($determineVersionCallable);\n }\n\n /**\n * @static\n */\n public static function reportErrorLevels($reportErrorLevels)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportErrorLevels($reportErrorLevels);\n }\n\n /**\n * @static\n */\n public static function filterExceptionsUsing($filterExceptionsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterExceptionsUsing($filterExceptionsCallable);\n }\n\n /**\n * @static\n */\n public static function filterReportsUsing($filterReportsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterReportsUsing($filterReportsCallable);\n }\n\n /**\n * @param array<class-string<ArgumentReducer>|ArgumentReducer>|\\Spatie\\Backtrace\\Arguments\\ArgumentReducers|null $argumentReducers\n * @static\n */\n public static function argumentReducers($argumentReducers)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->argumentReducers($argumentReducers);\n }\n\n /**\n * @static\n */\n public static function withStackFrameArguments($withStackFrameArguments = true, $forcePHPIniSetting = false)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->withStackFrameArguments($withStackFrameArguments, $forcePHPIniSetting);\n }\n\n /**\n * @param class-string $exceptionClass\n * @static\n */\n public static function overrideGrouping($exceptionClass, $type = 'exception_message_and_class')\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->overrideGrouping($exceptionClass, $type);\n }\n\n /**\n * @static\n */\n public static function version()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->version();\n }\n\n /**\n * @return array<int, FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * @static\n */\n public static function setContextProviderDetector($contextDetector)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContextProviderDetector($contextDetector);\n }\n\n /**\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * @static\n */\n public static function registerFlareHandlers()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerFlareHandlers();\n }\n\n /**\n * @static\n */\n public static function registerExceptionHandler()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerExceptionHandler();\n }\n\n /**\n * @static\n */\n public static function registerErrorHandler($errorLevels = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerErrorHandler($errorLevels);\n }\n\n /**\n * @param \\Spatie\\FlareClient\\FlareMiddleware\\FlareMiddleware|array<FlareMiddleware>|class-string<FlareMiddleware>|callable $middleware\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function registerMiddleware($middleware)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerMiddleware($middleware);\n }\n\n /**\n * @return array<int,FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddlewares()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddlewares();\n }\n\n /**\n * @param string $name\n * @param string $messageLevel\n * @param array<int, mixed> $metaData\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function glow($name, $messageLevel = 'info', $metaData = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->glow($name, $messageLevel, $metaData);\n }\n\n /**\n * @static\n */\n public static function handleException($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleException($throwable);\n }\n\n /**\n * @return mixed\n * @static\n */\n public static function handleError($code, $message, $file = '', $line = 0)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleError($code, $message, $file, $line);\n }\n\n /**\n * @static\n */\n public static function applicationPath($applicationPath)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->applicationPath($applicationPath);\n }\n\n /**\n * @static\n */\n public static function report($throwable, $callback = null, $report = null, $handled = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->report($throwable, $callback, $report, $handled);\n }\n\n /**\n * @static\n */\n public static function reportHandled($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportHandled($throwable);\n }\n\n /**\n * @static\n */\n public static function reportMessage($message, $logLevel, $callback = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportMessage($message, $logLevel, $callback);\n }\n\n /**\n * @static\n */\n public static function sendTestReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendTestReport($throwable);\n }\n\n /**\n * @static\n */\n public static function reset()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reset();\n }\n\n /**\n * @static\n */\n public static function anonymizeIp()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->anonymizeIp();\n }\n\n /**\n * @param array<int, string> $fieldNames\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function censorRequestBodyFields($fieldNames)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->censorRequestBodyFields($fieldNames);\n }\n\n /**\n * @static\n */\n public static function createReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReport($throwable);\n }\n\n /**\n * @static\n */\n public static function createReportFromMessage($message, $logLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReportFromMessage($message, $logLevel);\n }\n\n /**\n * @static\n */\n public static function stage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->stage($stage);\n }\n\n /**\n * @static\n */\n public static function messageLevel($messageLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->messageLevel($messageLevel);\n }\n\n /**\n * @param string $groupName\n * @param mixed $default\n * @return array<int, mixed>\n * @static\n */\n public static function getGroup($groupName = 'context', $default = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getGroup($groupName, $default);\n }\n\n /**\n * @static\n */\n public static function context($key, $value)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->context($key, $value);\n }\n\n /**\n * @param string $groupName\n * @param array<string, mixed> $properties\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function group($groupName, $properties)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->group($groupName, $properties);\n }\n\n }\n }\n\nnamespace Vinkla\\Hashids\\Facades {\n /**\n * @method static string encode(mixed ...$numbers)\n * @method static array decode(string $hash)\n * @method static string encodeHex(string $str)\n * @method static string decodeHex(string $hash)\n */\n class Hashids extends \\GrahamCampbell\\Manager\\AbstractManager {\n /**\n * @static\n */\n public static function getFactory()\n {\n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getFactory();\n }\n\n /**\n * Get a connection instance.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function connection($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Reconnect to the given connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function reconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Disconnect from the given connection.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Get the configuration for a connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return array\n * @static\n */\n public static function getConnectionConfig($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnectionConfig($name);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string,object>\n * @static\n */\n public static function getConnections()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Get the config instance.\n *\n * @return \\Illuminate\\Contracts\\Config\\Repository\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConfig();\n }\n\n }\n }\n\nnamespace Illuminate\\Support {\n /**\n * @template TKey of array-key\n * @template-covariant TValue\n * @implements \\ArrayAccess<TKey, TValue>\n * @implements \\Illuminate\\Support\\Enumerable<TKey, TValue>\n */\n class Collection {\n /**\n * @see \\Barryvdh\\Debugbar\\ServiceProvider::register()\n * @static\n */\n public static function debug()\n {\n return \\Illuminate\\Support\\Collection::debug();\n }\n\n /**\n * @see \\Spatie\\Fractal\\FractalServiceProvider::packageBooted()\n * @param mixed $transformer\n * @static\n */\n public static function transformWith($transformer)\n {\n return \\Illuminate\\Support\\Collection::transformWith($transformer);\n }\n\n }\n }\n\nnamespace Illuminate\\Http {\n /**\n */\n class Request extends \\Symfony\\Component\\HttpFoundation\\Request {\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n }\n\nnamespace Illuminate\\Testing {\n /**\n * @template TResponse of \\Symfony\\Component\\HttpFoundation\\Response\n * @mixin \\Illuminate\\Http\\Response\n */\n class TestResponse {\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param array $structure\n * @static\n */\n public static function assertJsonTypedStructure($structure)\n {\n return \\Illuminate\\Testing\\TestResponse::assertJsonTypedStructure($structure);\n }\n\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param string $key\n * @static\n */\n public static function assertViewHasNull($key)\n {\n return \\Illuminate\\Testing\\TestResponse::assertViewHasNull($key);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Schema {\n /**\n */\n class Blueprint {\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function nestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::nestedSet();\n }\n\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function dropNestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::dropNestedSet();\n }\n\n }\n }\n\nnamespace Illuminate\\Validation {\n /**\n */\n class Rule {\n /**\n * @see \\Propaganistas\\LaravelPhone\\PhoneServiceProvider::registerValidator()\n * @static\n */\n public static function phone()\n {\n return \\Illuminate\\Validation\\Rule::phone();\n }\n\n }\n }\n\nnamespace Illuminate\\Console\\Scheduling {\n /**\n */\n class Event {\n /**\n * @see \\Sentry\\Laravel\\Features\\ConsoleSchedulingIntegration::register()\n * @param string|null $monitorSlug\n * @param int|null $checkInMargin\n * @param int|null $maxRuntime\n * @param bool $updateMonitorConfig\n * @param int|null $failureIssueThreshold\n * @param int|null $recoveryThreshold\n * @static\n */\n public static function sentryMonitor($monitorSlug = null, $checkInMargin = null, $maxRuntime = null, $updateMonitorConfig = true, $failureIssueThreshold = null, $recoveryThreshold = null)\n {\n return \\Illuminate\\Console\\Scheduling\\Event::sentryMonitor($monitorSlug, $checkInMargin, $maxRuntime, $updateMonitorConfig, $failureIssueThreshold, $recoveryThreshold);\n }\n\n }\n }\n\nnamespace Illuminate\\Http\\Client {\n /**\n * @mixin \\Illuminate\\Http\\Client\\PendingRequest\n */\n class Factory {\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n }\n\nnamespace Illuminate\\Routing {\n /**\n * @mixin \\Illuminate\\Routing\\RouteRegistrar\n */\n class Router {\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n */\n class ResponseFactory {\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Eloquent {\n /**\n * @template TKey of array-key\n * @template TModel of \\Illuminate\\Database\\Eloquent\\Model\n * @extends \\Illuminate\\Support\\Collection<TKey, TModel>\n */\n class Collection extends \\Illuminate\\Support\\Collection {\n }\n }\n\n\nnamespace {\n class App extends \\Illuminate\\Support\\Facades\\App {}\n class Arr extends \\Illuminate\\Support\\Arr {}\n class Artisan extends \\Illuminate\\Support\\Facades\\Artisan {}\n class Auth extends \\Illuminate\\Support\\Facades\\Auth {}\n class Benchmark extends \\Illuminate\\Support\\Benchmark {}\n class Blade extends \\Illuminate\\Support\\Facades\\Blade {}\n class Broadcast extends \\Illuminate\\Support\\Facades\\Broadcast {}\n class Bus extends \\Illuminate\\Support\\Facades\\Bus {}\n class Cache extends \\Illuminate\\Support\\Facades\\Cache {}\n class Concurrency extends \\Illuminate\\Support\\Facades\\Concurrency {}\n class Config extends \\Illuminate\\Support\\Facades\\Config {}\n class Context extends \\Illuminate\\Support\\Facades\\Context {}\n class Cookie extends \\Illuminate\\Support\\Facades\\Cookie {}\n class Crypt extends \\Illuminate\\Support\\Facades\\Crypt {}\n class DB extends \\Illuminate\\Support\\Facades\\DB {}\n\n /**\n * @template TCollection of static\n * @template TModel of static\n * @template TValue of static\n * @template TValue of static\n */\n class Eloquent extends \\Illuminate\\Database\\Eloquent\\Model { /**\n * Create and return an un-saved model instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function make($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->make($attributes);\n }\n\n /**\n * Register a new global scope.\n *\n * @param string $identifier\n * @param \\Illuminate\\Database\\Eloquent\\Scope|\\Closure $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withGlobalScope($identifier, $scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withGlobalScope($identifier, $scope);\n }\n\n /**\n * Remove a registered global scope.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Scope|string $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScope($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScope($scope);\n }\n\n /**\n * Remove all or passed registered global scopes.\n *\n * @param array|null $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopes($scopes = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopes($scopes);\n }\n\n /**\n * Remove all global scopes except the given scopes.\n *\n * @param array $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopesExcept($scopes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopesExcept($scopes);\n }\n\n /**\n * Get an array of global scopes that were removed from the query.\n *\n * @return array\n * @static\n */\n public static function removedScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->removedScopes();\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKey($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKey($id);\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKeyNot($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKeyNot($id);\n }\n\n /**\n * Add a basic where clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function where($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->where($column, $operator, $value, $boolean);\n }\n\n /**\n * Add a basic where clause to the query, and return the first result.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return TModel|null\n * @static\n */\n public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstWhere($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhere($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhere($column, $operator, $value);\n }\n\n /**\n * Add a basic \"where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNot($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNot($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNot($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNot($column, $operator, $value);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function latest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->latest($column);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function oldest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->oldest($column);\n }\n\n /**\n * Create a collection of models from plain arrays.\n *\n * @param array $items\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function hydrate($items)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hydrate($items);\n }\n\n /**\n * Insert into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return bool\n * @static\n */\n public static function fillAndInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsert($values);\n }\n\n /**\n * Insert (ignoring errors) into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return int\n * @static\n */\n public static function fillAndInsertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertOrIgnore($values);\n }\n\n /**\n * Insert a record into the database and get its ID after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<string, mixed> $values\n * @return int\n * @static\n */\n public static function fillAndInsertGetId($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertGetId($values);\n }\n\n /**\n * Enrich the given values by merging in the model's default attributes, adding timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return array<int, array<string, mixed>>\n * @static\n */\n public static function fillForInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillForInsert($values);\n }\n\n /**\n * Create a collection of models from a raw query.\n *\n * @param string $query\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function fromQuery($query, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fromQuery($query, $bindings);\n }\n\n /**\n * Find a model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel|null)\n * @static\n */\n public static function find($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->find($id, $columns);\n }\n\n /**\n * Find a sole model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function findSole($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findSole($id, $columns);\n }\n\n /**\n * Find multiple models by their primary keys.\n *\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $ids\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function findMany($ids, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findMany($ids, $columns);\n }\n\n /**\n * Find a model by its primary key or throw an exception.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function findOrFail($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrFail($id, $columns);\n }\n\n /**\n * Find a model by its primary key or return fresh model instance.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @static\n */\n public static function findOrNew($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrNew($id, $columns);\n }\n\n /**\n * Find a model by its primary key or call a callback.\n *\n * @template TValue\n * @param mixed $id\n * @param (\\Closure(): TValue)|list<string>|string $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return ( $id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>)\n * ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * : TModel|TValue\n * )\n * @static\n */\n public static function findOr($id, $columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOr($id, $columns, $callback);\n }\n\n /**\n * Get the first record matching the attributes or instantiate it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrNew($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrNew($attributes, $values);\n }\n\n /**\n * Get the first record matching the attributes. If the record is not found, create it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrCreate($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrCreate($attributes, $values);\n }\n\n /**\n * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function createOrFirst($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createOrFirst($attributes, $values);\n }\n\n /**\n * Create or update a record matching the attributes, and fill it with values.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function updateOrCreate($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->updateOrCreate($attributes, $values);\n }\n\n /**\n * Create a record matching the attributes, or increment the existing record.\n *\n * @param array $attributes\n * @param string $column\n * @param int|float $default\n * @param int|float $step\n * @param array $extra\n * @return TModel\n * @static\n */\n public static function incrementOrCreate($attributes, $column = 'count', $default = 1, $step = 1, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->incrementOrCreate($attributes, $column, $default, $step, $extra);\n }\n\n /**\n * Execute the query and get the first result or throw an exception.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function firstOrFail($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrFail($columns);\n }\n\n /**\n * Execute the query and get the first result or call a callback.\n *\n * @template TValue\n * @param (\\Closure(): TValue)|list<string> $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return TModel|TValue\n * @static\n */\n public static function firstOr($columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOr($columns, $callback);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function sole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->sole($columns);\n }\n\n /**\n * Get a single column's value from the first result of a query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @static\n */\n public static function value($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->value($column);\n }\n\n /**\n * Get a single column's value from the first result of a query if it's the sole matching record.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function soleValue($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->soleValue($column);\n }\n\n /**\n * Get a single column's value from the first result of the query or throw an exception.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function valueOrFail($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->valueOrFail($column);\n }\n\n /**\n * Execute the query as a \"select\" statement.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function get($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->get($columns);\n }\n\n /**\n * Get the hydrated models without eager loading.\n *\n * @param array|string $columns\n * @return array<int, TModel>\n * @static\n */\n public static function getModels($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModels($columns);\n }\n\n /**\n * Eager load the relationships for the models.\n *\n * @param array<int, TModel> $models\n * @return array<int, TModel>\n * @static\n */\n public static function eagerLoadRelations($models)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eagerLoadRelations($models);\n }\n\n /**\n * Register a closure to be invoked after the query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function afterQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->afterQuery($callback);\n }\n\n /**\n * Invoke the \"after query\" modification callbacks.\n *\n * @param mixed $result\n * @return mixed\n * @static\n */\n public static function applyAfterQueryCallbacks($result)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyAfterQueryCallbacks($result);\n }\n\n /**\n * Get a lazy collection for the given query.\n *\n * @return \\Illuminate\\Support\\LazyCollection<int, TModel>\n * @static\n */\n public static function cursor()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursor();\n }\n\n /**\n * Get a collection with the values of a given column.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param string|null $key\n * @return \\Illuminate\\Support\\Collection<array-key, mixed>\n * @static\n */\n public static function pluck($column, $key = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pluck($column, $key);\n }\n\n /**\n * Paginate the given query.\n *\n * @param int|null|\\Closure $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @param \\Closure|int|null $total\n * @return \\Illuminate\\Pagination\\LengthAwarePaginator\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null, $total = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->paginate($perPage, $columns, $pageName, $page, $total);\n }\n\n /**\n * Paginate the given query into a simple paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @return \\Illuminate\\Contracts\\Pagination\\Paginator\n * @static\n */\n public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->simplePaginate($perPage, $columns, $pageName, $page);\n }\n\n /**\n * Paginate the given query into a cursor paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $cursorName\n * @param \\Illuminate\\Pagination\\Cursor|string|null $cursor\n * @return \\Illuminate\\Contracts\\Pagination\\CursorPaginator\n * @static\n */\n public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor);\n }\n\n /**\n * Save a new model and return the instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function create($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->create($attributes);\n }\n\n /**\n * Save a new model and return the instance without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function createQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createQuietly($attributes);\n }\n\n /**\n * Save a new model and return the instance. Allow mass-assignment.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreate($attributes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreate($attributes);\n }\n\n /**\n * Save a new model instance with mass assignment without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreateQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreateQuietly($attributes);\n }\n\n /**\n * Insert new records or update the existing ones.\n *\n * @param array $values\n * @param array|string $uniqueBy\n * @param array|null $update\n * @return int\n * @static\n */\n public static function upsert($values, $uniqueBy, $update = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->upsert($values, $uniqueBy, $update);\n }\n\n /**\n * Register a replacement for the default delete function.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function onDelete($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n $instance->onDelete($callback);\n }\n\n /**\n * Call the given local model scopes.\n *\n * @param array|string $scopes\n * @return static|mixed\n * @static\n */\n public static function scopes($scopes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->scopes($scopes);\n }\n\n /**\n * Apply the scopes to the Eloquent builder instance and return it.\n *\n * @return static\n * @static\n */\n public static function applyScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyScopes();\n }\n\n /**\n * Prevent the specified relations from being eager loaded.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function without($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->without($relations);\n }\n\n /**\n * Set the relationships that should be eager loaded while removing any previously added eager loading specifications.\n *\n * @param array<array-key, array|(\\Closure(\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*,*,*>): mixed)|string>|string $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withOnly($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withOnly($relations);\n }\n\n /**\n * Create a new instance of the model being queried.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function newModelInstance($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->newModelInstance($attributes);\n }\n\n /**\n * Specify attributes that should be added to any new models created by this builder.\n * \n * The given key / value pairs will also be added as where conditions to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|array|string $attributes\n * @param mixed $value\n * @param bool $asConditions\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAttributes($attributes, $value = null, $asConditions = true)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAttributes($attributes, $value, $asConditions);\n }\n\n /**\n * Apply query-time casts to the model instance.\n *\n * @param array $casts\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCasts($casts)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCasts($casts);\n }\n\n /**\n * Execute the given Closure within a transaction savepoint if needed.\n *\n * @template TModelValue\n * @param \\Closure(): TModelValue $scope\n * @return TModelValue\n * @static\n */\n public static function withSavepointIfNeeded($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSavepointIfNeeded($scope);\n }\n\n /**\n * Get the underlying query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function getQuery()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getQuery();\n }\n\n /**\n * Set the underlying query builder instance.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setQuery($query)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setQuery($query);\n }\n\n /**\n * Get a base query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function toBase()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->toBase();\n }\n\n /**\n * Get the relationships being eagerly loaded.\n *\n * @return array\n * @static\n */\n public static function getEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getEagerLoads();\n }\n\n /**\n * Set the relationships being eagerly loaded.\n *\n * @param array $eagerLoad\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setEagerLoads($eagerLoad)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setEagerLoads($eagerLoad);\n }\n\n /**\n * Indicate that the given relationships should not be eagerly loaded.\n *\n * @param array $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoad($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoad($relations);\n }\n\n /**\n * Flush the relationships being eagerly loaded.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoads();\n }\n\n /**\n * Get the \"limit\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getLimit()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getLimit();\n }\n\n /**\n * Get the \"offset\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getOffset()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getOffset();\n }\n\n /**\n * Get the model instance being queried.\n *\n * @return TModel\n * @static\n */\n public static function getModel()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModel();\n }\n\n /**\n * Set a model instance for the model being queried.\n *\n * @template TModelNew of \\Illuminate\\Database\\Eloquent\\Model\n * @param TModelNew $model\n * @return static<TModelNew>\n * @static\n */\n public static function setModel($model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setModel($model);\n }\n\n /**\n * Get the given macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getMacro($name);\n }\n\n /**\n * Checks if a macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMacro($name);\n }\n\n /**\n * Get the given global macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::getGlobalMacro($name);\n }\n\n /**\n * Checks if a global macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::hasGlobalMacro($name);\n }\n\n /**\n * Clone the Eloquent query builder.\n *\n * @return static\n * @static\n */\n public static function clone()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->clone();\n }\n\n /**\n * Register a closure to be invoked on a clone.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function onClone($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->onClone($callback);\n }\n\n /**\n * Chunk the results of the query.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @return bool\n * @static\n */\n public static function chunk($count, $callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunk($count, $callback);\n }\n\n /**\n * Run a map over each item while chunking.\n *\n * @template TReturn\n * @param callable(TValue): TReturn $callback\n * @param int $count\n * @return \\Illuminate\\Support\\Collection<int, TReturn>\n * @static\n */\n public static function chunkMap($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkMap($callback, $count);\n }\n\n /**\n * Execute a callback over each item while chunking.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function each($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->each($callback, $count);\n }\n\n /**\n * Chunk the results of a query by comparing IDs.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkById($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkById($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in descending order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkByIdDesc($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkByIdDesc($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in a given order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @param bool $descending\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function orderedChunkById($count, $callback, $column = null, $alias = null, $descending = false)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orderedChunkById($count, $callback, $column, $alias, $descending);\n }\n\n /**\n * Execute a callback over each item while chunking by ID.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function eachById($callback, $count = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eachById($callback, $count, $column, $alias);\n }\n\n /**\n * Query lazily, by chunks of the given size.\n *\n * @param int $chunkSize\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazy($chunkSize = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazy($chunkSize);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyById($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyById($chunkSize, $column, $alias);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs in descending order.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyByIdDesc($chunkSize, $column, $alias);\n }\n\n /**\n * Execute the query and get the first result.\n *\n * @param array|string $columns\n * @return TValue|null\n * @static\n */\n public static function first($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->first($columns);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TValue\n * @throws \\Illuminate\\Database\\RecordsNotFoundException\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function baseSole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->baseSole($columns);\n }\n\n /**\n * Pass the query to a given callback and then return it.\n *\n * @param callable($this): mixed $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function tap($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->tap($callback);\n }\n\n /**\n * Pass the query to a given callback and return the result.\n *\n * @template TReturn\n * @param (callable($this): TReturn) $callback\n * @return (TReturn is null|void ? $this : TReturn)\n * @static\n */\n public static function pipe($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pipe($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->has($relation, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHas($relation, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHas($relation, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHave($relation, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHave($relation, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHave($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHave($relation);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n * \n * Also load the relationship with the same condition.\n *\n * @param string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHasMorph($relation, $types, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHasMorph($relation, $types, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHaveMorph($relation, $types, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHaveMorph($relation, $types)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHaveMorph($relation, $types);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a basic where clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic where clause to a relationship query and eager-load the relationship with the same conditions.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param \\Closure|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic count / exists condition to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a where clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or where\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a doesn't have clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or doesn't have\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a not morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNotMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphedTo($relation, $model);\n }\n\n /**\n * Add a not morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNotMorphedTo($relation, $model);\n }\n\n /**\n * Add a \"belongs to\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereBelongsTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"BelongsTo\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereBelongsTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereBelongsTo($related, $relationshipName);\n }\n\n /**\n * Add a \"belongs to many\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereAttachedTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereAttachedTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"belongs to many\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereAttachedTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereAttachedTo($related, $relationshipName);\n }\n\n /**\n * Add subselect queries to include an aggregate value for a relationship.\n *\n * @param mixed $relations\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string|null $function\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAggregate($relations, $column, $function = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAggregate($relations, $column, $function);\n }\n\n /**\n * Add subselect queries to count the relations.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCount($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCount($relations);\n }\n\n /**\n * Add subselect queries to include the max of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMax($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMax($relation, $column);\n }\n\n /**\n * Add subselect queries to include the min of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMin($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMin($relation, $column);\n }\n\n /**\n * Add subselect queries to include the sum of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withSum($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSum($relation, $column);\n }\n\n /**\n * Add subselect queries to include the average of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAvg($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAvg($relation, $column);\n }\n\n /**\n * Add subselect queries to include the existence of related models.\n *\n * @param string|array $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withExists($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withExists($relation);\n }\n\n /**\n * Merge the where constraints from another query to the current query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Builder<*> $from\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeConstraintsFrom($from)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->mergeConstraintsFrom($from);\n }\n\n /**\n * Set the columns to be selected.\n *\n * @param mixed $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function select($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->select($columns);\n }\n\n /**\n * Add a subselect expression to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function selectSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectSub($query, $as);\n }\n\n /**\n * Add a new \"raw\" select expression to the query.\n *\n * @param string $expression\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function selectRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectRaw($expression, $bindings);\n }\n\n /**\n * Makes \"from\" fetch from a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function fromSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromSub($query, $as);\n }\n\n /**\n * Add a raw from clause to the query.\n *\n * @param string $expression\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function fromRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromRaw($expression, $bindings);\n }\n\n /**\n * Add a new select column to the query.\n *\n * @param mixed $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addSelect($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addSelect($column);\n }\n\n /**\n * Force the query to only return distinct results.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function distinct()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->distinct();\n }\n\n /**\n * Set the table which the query is targeting.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function from($table, $as = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->from($table, $as);\n }\n\n /**\n * Add an index hint to suggest a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useIndex($index);\n }\n\n /**\n * Add an index hint to force a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forceIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forceIndex($index);\n }\n\n /**\n * Add an index hint to ignore a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function ignoreIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ignoreIndex($index);\n }\n\n /**\n * Add a join clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->join($table, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @param string $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinWhere($table, $first, $operator, $second, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinWhere($table, $first, $operator, $second, $type);\n }\n\n /**\n * Add a subquery join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a lateral join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinLateral($query, $as, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinLateral($query, $as, $type);\n }\n\n /**\n * Add a lateral left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinLateral($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinLateral($query, $as);\n }\n\n /**\n * Add a left join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a right join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"right join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery right join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a \"cross join\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoin($table, $first = null, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery cross join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoinSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoinSub($query, $as);\n }\n\n /**\n * Merge an array of where clauses and bindings.\n *\n * @param array $wheres\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeWheres($wheres, $bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeWheres($wheres, $bindings);\n }\n\n /**\n * Prepare the value and operator for a where clause.\n *\n * @param string $value\n * @param string $operator\n * @param bool $useDefault\n * @return array\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function prepareValueAndOperator($value, $operator, $useDefault = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->prepareValueAndOperator($value, $operator, $useDefault);\n }\n\n /**\n * Add a \"where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @param string|null $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereColumn($first, $operator, $second, $boolean);\n }\n\n /**\n * Add an \"or where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereColumn($first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereColumn($first, $operator, $second);\n }\n\n /**\n * Add a raw where clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $sql\n * @param mixed $bindings\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or where clause to the query.\n *\n * @param string $sql\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRaw($sql, $bindings);\n }\n\n /**\n * Add a \"where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereLike($column, $value, $caseSensitive = false, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereLike($column, $value, $caseSensitive, $boolean, $not);\n }\n\n /**\n * Add an \"or where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotLike($column, $value, $caseSensitive = false, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotLike($column, $value, $caseSensitive, $boolean);\n }\n\n /**\n * Add an \"or where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIn($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIn($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIn($column, $values);\n }\n\n /**\n * Add a \"where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotIn($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotIn($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotIn($column, $values);\n }\n\n /**\n * Add a \"where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerInRaw($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerInRaw($column, $values);\n }\n\n /**\n * Add a \"where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerNotInRaw($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerNotInRaw($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerNotInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerNotInRaw($column, $values);\n }\n\n /**\n * Add a \"where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNull($column);\n }\n\n /**\n * Add a \"where not null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotNull($columns, $boolean);\n }\n\n /**\n * Add a where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetweenColumns($column, $values, $boolean, $not);\n }\n\n /**\n * Add an or where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetween($column, $values);\n }\n\n /**\n * Add an or where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetweenColumns($column, $values);\n }\n\n /**\n * Add a where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetween($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetween($column, $values, $boolean);\n }\n\n /**\n * Add a where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetweenColumns($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetweenColumns($column, $values, $boolean);\n }\n\n /**\n * Add an or where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetween($column, $values);\n }\n\n /**\n * Add an or where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetweenColumns($column, $values);\n }\n\n /**\n * Add a where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueBetween($value, $columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueBetween($value, $columns, $boolean, $not);\n }\n\n /**\n * Add an or where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueBetween($value, $columns);\n }\n\n /**\n * Add a where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueNotBetween($value, $columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueNotBetween($value, $columns, $boolean);\n }\n\n /**\n * Add an or where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueNotBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueNotBetween($value, $columns);\n }\n\n /**\n * Add an \"or where not null\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotNull($column);\n }\n\n /**\n * Add a \"where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDate($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDate($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDate($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDate($column, $operator, $value);\n }\n\n /**\n * Add a \"where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTime($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTime($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTime($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTime($column, $operator, $value);\n }\n\n /**\n * Add a \"where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDay($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDay($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDay($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDay($column, $operator, $value);\n }\n\n /**\n * Add a \"where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMonth($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereMonth($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMonth($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereMonth($column, $operator, $value);\n }\n\n /**\n * Add a \"where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereYear($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereYear($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereYear($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereYear($column, $operator, $value);\n }\n\n /**\n * Add a nested where statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNested($callback, $boolean);\n }\n\n /**\n * Create a new query instance for nested where condition.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function forNestedWhere()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forNestedWhere();\n }\n\n /**\n * Add another query builder as a nested where to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedWhereQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedWhereQuery($query, $boolean);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereExists($callback, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereExists($callback, $boolean, $not);\n }\n\n /**\n * Add an or exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereExists($callback, $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereExists($callback, $not);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotExists($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotExists($callback, $boolean);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotExists($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotExists($callback);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addWhereExistsQuery($query, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addWhereExistsQuery($query, $boolean, $not);\n }\n\n /**\n * Adds a where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function whereRowValues($columns, $operator, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRowValues($columns, $operator, $values, $boolean);\n }\n\n /**\n * Adds an or where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRowValues($columns, $operator, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRowValues($columns, $operator, $values);\n }\n\n /**\n * Add a \"where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContains($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContains($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContains($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContains($column, $value);\n }\n\n /**\n * Add a \"where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContain($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContain($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContain($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContain($column, $value);\n }\n\n /**\n * Add a \"where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonOverlaps($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonOverlaps($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonOverlaps($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonOverlaps($column, $value);\n }\n\n /**\n * Add a \"where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntOverlap($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntOverlap($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntOverlap($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntOverlap($column, $value);\n }\n\n /**\n * Add a clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContainsKey($column, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContainsKey($column, $boolean, $not);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContainsKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContainsKey($column);\n }\n\n /**\n * Add a clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContainKey($column, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContainKey($column, $boolean);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContainKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContainKey($column);\n }\n\n /**\n * Add a \"where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonLength($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonLength($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonLength($column, $operator, $value);\n }\n\n /**\n * Handles dynamic \"where\" clauses to the query.\n *\n * @param string $method\n * @param array $parameters\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dynamicWhere($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dynamicWhere($method, $parameters);\n }\n\n /**\n * Add a \"where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFullText($columns, $value, $options = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFullText($columns, $value, $options, $boolean);\n }\n\n /**\n * Add a \"or where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFullText($columns, $value, $options = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFullText($columns, $value, $options);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAll($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAll($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAll($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAll($columns, $operator, $value);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAny($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAny($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAny($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAny($columns, $operator, $value);\n }\n\n /**\n * Add a \"where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNone($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNone($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNone($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNone($columns, $operator, $value);\n }\n\n /**\n * Add a \"group by\" clause to the query.\n *\n * @param array|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $groups\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupBy(...$groups)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupBy(...$groups);\n }\n\n /**\n * Add a raw groupBy clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupByRaw($sql, $bindings);\n }\n\n /**\n * Add a \"having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function having($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->having($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHaving($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHaving($column, $operator, $value);\n }\n\n /**\n * Add a nested having statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNested($callback, $boolean);\n }\n\n /**\n * Add another query builder as a nested having to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedHavingQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedHavingQuery($query, $boolean);\n }\n\n /**\n * Add a \"having null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or having null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNull($column);\n }\n\n /**\n * Add a \"having not null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNotNull($columns, $boolean);\n }\n\n /**\n * Add an \"or having not null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNotNull($column);\n }\n\n /**\n * Add a \"having between \" clause to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a raw having clause to the query.\n *\n * @param string $sql\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or having clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingRaw($sql, $bindings);\n }\n\n /**\n * Add an \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function orderBy($column, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderBy($column, $direction);\n }\n\n /**\n * Add a descending \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByDesc($column);\n }\n\n /**\n * Put the query's results in random order.\n *\n * @param string|int $seed\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function inRandomOrder($seed = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->inRandomOrder($seed);\n }\n\n /**\n * Add a raw \"order by\" clause to the query.\n *\n * @param string $sql\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByRaw($sql, $bindings);\n }\n\n /**\n * Alias to set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function skip($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->skip($value);\n }\n\n /**\n * Set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function offset($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->offset($value);\n }\n\n /**\n * Alias to set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function take($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->take($value);\n }\n\n /**\n * Set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function limit($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->limit($value);\n }\n\n /**\n * Add a \"group limit\" clause to the query.\n *\n * @param int $value\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupLimit($value, $column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupLimit($value, $column);\n }\n\n /**\n * Set the limit and offset for a given page.\n *\n * @param int $page\n * @param int $perPage\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPage($page, $perPage = 15)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPage($page, $perPage);\n }\n\n /**\n * Constrain the query to the previous \"page\" of results before a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageBeforeId($perPage, $lastId, $column);\n }\n\n /**\n * Constrain the query to the next \"page\" of results after a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageAfterId($perPage, $lastId, $column);\n }\n\n /**\n * Remove all existing orders and optionally add a new order.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorder($column = null, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorder($column, $direction);\n }\n\n /**\n * Add descending \"reorder\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorderDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorderDesc($column);\n }\n\n /**\n * Add a union statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @param bool $all\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function union($query, $all = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->union($query, $all);\n }\n\n /**\n * Add a union all statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function unionAll($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->unionAll($query);\n }\n\n /**\n * Lock the selected rows in the table.\n *\n * @param string|bool $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lock($value = true)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lock($value);\n }\n\n /**\n * Lock the selected rows in the table for updating.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lockForUpdate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lockForUpdate();\n }\n\n /**\n * Share lock the selected rows in the table.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function sharedLock()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sharedLock();\n }\n\n /**\n * Register a closure to be invoked before the query is executed.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function beforeQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->beforeQuery($callback);\n }\n\n /**\n * Invoke the \"before query\" modification callbacks.\n *\n * @return void\n * @static\n */\n public static function applyBeforeQueryCallbacks()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->applyBeforeQueryCallbacks();\n }\n\n /**\n * Get the SQL representation of the query.\n *\n * @return string\n * @static\n */\n public static function toSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toSql();\n }\n\n /**\n * Get the raw SQL representation of the query with embedded bindings.\n *\n * @return string\n * @static\n */\n public static function toRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toRawSql();\n }\n\n /**\n * Get a single expression value from the first result of a query.\n *\n * @return mixed\n * @static\n */\n public static function rawValue($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rawValue($expression, $bindings);\n }\n\n /**\n * Get the count of the total records for the paginator.\n *\n * @param array<string|\\Illuminate\\Contracts\\Database\\Query\\Expression> $columns\n * @return int<0, max>\n * @static\n */\n public static function getCountForPagination($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getCountForPagination($columns);\n }\n\n /**\n * Concatenate values of a given column as a string.\n *\n * @param string $column\n * @param string $glue\n * @return string\n * @static\n */\n public static function implode($column, $glue = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->implode($column, $glue);\n }\n\n /**\n * Determine if any rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function exists()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->exists();\n }\n\n /**\n * Determine if no rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function doesntExist()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExist();\n }\n\n /**\n * Execute the given callback if no rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function existsOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->existsOr($callback);\n }\n\n /**\n * Execute the given callback if rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function doesntExistOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExistOr($callback);\n }\n\n /**\n * Retrieve the \"count\" result of the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $columns\n * @return int<0, max>\n * @static\n */\n public static function count($columns = '*')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->count($columns);\n }\n\n /**\n * Retrieve the minimum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function min($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->min($column);\n }\n\n /**\n * Retrieve the maximum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function max($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->max($column);\n }\n\n /**\n * Retrieve the sum of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function sum($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sum($column);\n }\n\n /**\n * Retrieve the average of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function avg($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->avg($column);\n }\n\n /**\n * Alias for the \"avg\" method.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function average($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->average($column);\n }\n\n /**\n * Execute an aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return mixed\n * @static\n */\n public static function aggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->aggregate($function, $columns);\n }\n\n /**\n * Execute a numeric aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return float|int\n * @static\n */\n public static function numericAggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->numericAggregate($function, $columns);\n }\n\n /**\n * Insert new records into the database.\n *\n * @return bool\n * @static\n */\n public static function insert($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insert($values);\n }\n\n /**\n * Insert new records into the database while ignoring errors.\n *\n * @return int<0, max>\n * @static\n */\n public static function insertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnore($values);\n }\n\n /**\n * Insert a new record and get the value of the primary key.\n *\n * @param string|null $sequence\n * @return int\n * @static\n */\n public static function insertGetId($values, $sequence = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertGetId($values, $sequence);\n }\n\n /**\n * Insert new records into the table using a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertUsing($columns, $query);\n }\n\n /**\n * Insert new records into the table using a subquery while ignoring errors.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertOrIgnoreUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnoreUsing($columns, $query);\n }\n\n /**\n * Update records in a PostgreSQL database using the update from syntax.\n *\n * @return int\n * @static\n */\n public static function updateFrom($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateFrom($values);\n }\n\n /**\n * Insert or update a record matching the attributes, and fill it with values.\n *\n * @return bool\n * @static\n */\n public static function updateOrInsert($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateOrInsert($attributes, $values);\n }\n\n /**\n * Increment the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function incrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->incrementEach($columns, $extra);\n }\n\n /**\n * Decrement the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function decrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->decrementEach($columns, $extra);\n }\n\n /**\n * Run a truncate statement on the table.\n *\n * @return void\n * @static\n */\n public static function truncate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->truncate();\n }\n\n /**\n * Get all of the query builder's columns in a text-only array with all expressions evaluated.\n *\n * @return list<string>\n * @static\n */\n public static function getColumns()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getColumns();\n }\n\n /**\n * Create a raw database expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->raw($value);\n }\n\n /**\n * Get the current query value bindings in a flattened array.\n *\n * @return list<mixed>\n * @static\n */\n public static function getBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the raw array of bindings.\n *\n * @return \\Illuminate\\Database\\Query\\array{ select: list<mixed>,\n * from: list<mixed>,\n * join: list<mixed>,\n * where: list<mixed>,\n * groupBy: list<mixed>,\n * having: list<mixed>,\n * order: list<mixed>,\n * union: list<mixed>,\n * unionOrder: list<mixed>,\n * }\n * @static\n */\n public static function getRawBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getRawBindings();\n }\n\n /**\n * Set the bindings on the query builder.\n *\n * @param list<mixed> $bindings\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setBindings($bindings, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->setBindings($bindings, $type);\n }\n\n /**\n * Add a binding to the query.\n *\n * @param mixed $value\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function addBinding($value, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addBinding($value, $type);\n }\n\n /**\n * Cast the given binding value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function castBinding($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->castBinding($value);\n }\n\n /**\n * Merge an array of bindings into our bindings.\n *\n * @param self $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeBindings($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeBindings($query);\n }\n\n /**\n * Remove all of the expressions from a list of bindings.\n *\n * @param array<mixed> $bindings\n * @return list<mixed>\n * @static\n */\n public static function cleanBindings($bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cleanBindings($bindings);\n }\n\n /**\n * Get the database query processor instance.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getProcessor()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getProcessor();\n }\n\n /**\n * Get the query grammar instance.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getGrammar()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getGrammar();\n }\n\n /**\n * Use the \"write\" PDO connection when executing the query.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useWritePdo()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useWritePdo();\n }\n\n /**\n * Clone the query without the given properties.\n *\n * @return static\n * @static\n */\n public static function cloneWithout($properties)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithout($properties);\n }\n\n /**\n * Clone the query without the given bindings.\n *\n * @return static\n * @static\n */\n public static function cloneWithoutBindings($except)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithoutBindings($except);\n }\n\n /**\n * Dump the current SQL and bindings.\n *\n * @param mixed $args\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dump(...$args)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dump(...$args);\n }\n\n /**\n * Dump the raw current SQL with embedded bindings.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dumpRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dumpRawSql();\n }\n\n /**\n * Die and dump the current SQL and bindings.\n *\n * @return never\n * @static\n */\n public static function dd()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dd();\n }\n\n /**\n * Die and dump the current SQL with embedded bindings.\n *\n * @return never\n * @static\n */\n public static function ddRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ddRawSql();\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function wherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->wherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrPast($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrPast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFuture($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrFuture($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereToday($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereToday($columns, $boolean);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBeforeToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrBefore($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAfterToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrAfter($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBeforeToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrBefore($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAfterToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrAfter($columns);\n }\n\n /**\n * Explains the query.\n *\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function explain()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->explain();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\Query\\Builder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\Query\\Builder::mixin($mixin, $replace);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\Query\\Builder::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n}\n class Event extends \\Illuminate\\Support\\Facades\\Event {}\n class File extends \\Illuminate\\Support\\Facades\\File {}\n class Gate extends \\Illuminate\\Support\\Facades\\Gate {}\n class Hash extends \\Illuminate\\Support\\Facades\\Hash {}\n class Http extends \\Illuminate\\Support\\Facades\\Http {}\n class Js extends \\Illuminate\\Support\\Js {}\n class Lang extends \\Illuminate\\Support\\Facades\\Lang {}\n class Log extends \\Illuminate\\Support\\Facades\\Log {}\n class Mail extends \\Illuminate\\Support\\Facades\\Mail {}\n class Notification extends \\Illuminate\\Support\\Facades\\Notification {}\n class Number extends \\Illuminate\\Support\\Number {}\n class Password extends \\Illuminate\\Support\\Facades\\Password {}\n class Process extends \\Illuminate\\Support\\Facades\\Process {}\n class Queue extends \\Illuminate\\Support\\Facades\\Queue {}\n class RateLimiter extends \\Illuminate\\Support\\Facades\\RateLimiter {}\n class Redirect extends \\Illuminate\\Support\\Facades\\Redirect {}\n class Request extends \\Illuminate\\Support\\Facades\\Request {}\n class Response extends \\Illuminate\\Support\\Facades\\Response {}\n class Route extends \\Illuminate\\Support\\Facades\\Route {}\n class Schedule extends \\Illuminate\\Support\\Facades\\Schedule {}\n class Schema extends \\Illuminate\\Support\\Facades\\Schema {}\n class Session extends \\Illuminate\\Support\\Facades\\Session {}\n class Storage extends \\Illuminate\\Support\\Facades\\Storage {}\n class Str extends \\Illuminate\\Support\\Str {}\n class Uri extends \\Illuminate\\Support\\Uri {}\n class URL extends \\Illuminate\\Support\\Facades\\URL {}\n class Validator extends \\Illuminate\\Support\\Facades\\Validator {}\n class View extends \\Illuminate\\Support\\Facades\\View {}\n class Vite extends \\Illuminate\\Support\\Facades\\Vite {}\n class AWS extends \\Aws\\Laravel\\AwsFacade {}\n class Avatar extends \\Laravolt\\Avatar\\Facade {}\n class Fractal extends \\Spatie\\Fractal\\Facades\\Fractal {}\n class Laratrust extends \\Laratrust\\LaratrustFacade {}\n class RedisManager extends \\Illuminate\\Support\\Facades\\Redis {}\n class Sentry extends \\Sentry\\Laravel\\Facade {}\n class Statsd extends \\League\\StatsD\\Laravel5\\Facade\\StatsdFacade {}\n class Debugbar extends \\Barryvdh\\Debugbar\\Facades\\Debugbar {}\n class PDF extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Pdf extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Datadog extends \\ChaseConey\\LaravelDatadogHelper\\Datadog {}\n class Flare extends \\Spatie\\LaravelIgnition\\Facades\\Flare {}\n class Hashids extends \\Vinkla\\Hashids\\Facades\\Hashids {}\n}","depth":4,"bounds":{"left":0.12699468,"top":0.1963288,"width":0.6402925,"height":0.8036712},"on_screen":true,"value":"<?php\n/* @noinspection ALL */\n// @formatter:off\n// phpcs:ignoreFile\n\n/**\n * A helper file for Laravel, to provide autocomplete information to your IDE\n * Generated for Laravel 12.33.0.\n *\n * This file should not be included in your code, only analyzed by your IDE!\n *\n * @author Barry vd. Heuvel <barryvdh@gmail.com>\n * @see https://github.com/barryvdh/laravel-ide-helper\n */\nnamespace Illuminate\\Support\\Facades {\n /**\n * @see \\Illuminate\\Foundation\\Application\n */\n class App {\n /**\n * Begin configuring a new Laravel application instance.\n *\n * @param string|null $basePath\n * @return \\Illuminate\\Foundation\\Configuration\\ApplicationBuilder\n * @static\n */\n public static function configure($basePath = null)\n {\n return \\Illuminate\\Foundation\\Application::configure($basePath);\n }\n\n /**\n * Infer the application's base directory from the environment.\n *\n * @return string\n * @static\n */\n public static function inferBasePath()\n {\n return \\Illuminate\\Foundation\\Application::inferBasePath();\n }\n\n /**\n * Get the version number of the application.\n *\n * @return string\n * @static\n */\n public static function version()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->version();\n }\n\n /**\n * Run the given array of bootstrap classes.\n *\n * @param string[] $bootstrappers\n * @return void\n * @static\n */\n public static function bootstrapWith($bootstrappers)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bootstrapWith($bootstrappers);\n }\n\n /**\n * Register a callback to run after loading the environment.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterLoadingEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterLoadingEnvironment($callback);\n }\n\n /**\n * Register a callback to run before a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function beforeBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Register a callback to run after a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Determine if the application has been bootstrapped before.\n *\n * @return bool\n * @static\n */\n public static function hasBeenBootstrapped()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasBeenBootstrapped();\n }\n\n /**\n * Set the base path for the application.\n *\n * @param string $basePath\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function setBasePath($basePath)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->setBasePath($basePath);\n }\n\n /**\n * Get the path to the application \"app\" directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->path($path);\n }\n\n /**\n * Set the application directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useAppPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useAppPath($path);\n }\n\n /**\n * Get the base path of the Laravel installation.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->basePath($path);\n }\n\n /**\n * Get the path to the bootstrap directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function bootstrapPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bootstrapPath($path);\n }\n\n /**\n * Get the path to the service provider list in the bootstrap directory.\n *\n * @return string\n * @static\n */\n public static function getBootstrapProvidersPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBootstrapProvidersPath();\n }\n\n /**\n * Set the bootstrap file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useBootstrapPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useBootstrapPath($path);\n }\n\n /**\n * Get the path to the application configuration files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function configPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configPath($path);\n }\n\n /**\n * Set the configuration directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useConfigPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useConfigPath($path);\n }\n\n /**\n * Get the path to the database directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function databasePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->databasePath($path);\n }\n\n /**\n * Set the database directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useDatabasePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useDatabasePath($path);\n }\n\n /**\n * Get the path to the language files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function langPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->langPath($path);\n }\n\n /**\n * Set the language file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useLangPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useLangPath($path);\n }\n\n /**\n * Get the path to the public / web directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function publicPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->publicPath($path);\n }\n\n /**\n * Set the public / web directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function usePublicPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->usePublicPath($path);\n }\n\n /**\n * Get the path to the storage directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function storagePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->storagePath($path);\n }\n\n /**\n * Set the storage directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useStoragePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useStoragePath($path);\n }\n\n /**\n * Get the path to the resources directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function resourcePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resourcePath($path);\n }\n\n /**\n * Get the path to the views directory.\n * \n * This method returns the first configured path in the array of view paths.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function viewPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->viewPath($path);\n }\n\n /**\n * Join the given paths together.\n *\n * @param string $basePath\n * @param string $path\n * @return string\n * @static\n */\n public static function joinPaths($basePath, $path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->joinPaths($basePath, $path);\n }\n\n /**\n * Get the path to the environment file directory.\n *\n * @return string\n * @static\n */\n public static function environmentPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentPath();\n }\n\n /**\n * Set the directory for the environment file.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useEnvironmentPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useEnvironmentPath($path);\n }\n\n /**\n * Set the environment file to be loaded during bootstrapping.\n *\n * @param string $file\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function loadEnvironmentFrom($file)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->loadEnvironmentFrom($file);\n }\n\n /**\n * Get the environment file the application is using.\n *\n * @return string\n * @static\n */\n public static function environmentFile()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFile();\n }\n\n /**\n * Get the fully qualified path to the environment file.\n *\n * @return string\n * @static\n */\n public static function environmentFilePath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFilePath();\n }\n\n /**\n * Get or check the current application environment.\n *\n * @param string|array $environments\n * @return string|bool\n * @static\n */\n public static function environment(...$environments)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environment(...$environments);\n }\n\n /**\n * Determine if the application is in the local environment.\n *\n * @return bool\n * @static\n */\n public static function isLocal()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocal();\n }\n\n /**\n * Determine if the application is in the production environment.\n *\n * @return bool\n * @static\n */\n public static function isProduction()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isProduction();\n }\n\n /**\n * Detect the application's current environment.\n *\n * @param \\Closure $callback\n * @return string\n * @static\n */\n public static function detectEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->detectEnvironment($callback);\n }\n\n /**\n * Determine if the application is running in the console.\n *\n * @return bool\n * @static\n */\n public static function runningInConsole()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningInConsole();\n }\n\n /**\n * Determine if the application is running any of the given console commands.\n *\n * @param string|array $commands\n * @return bool\n * @static\n */\n public static function runningConsoleCommand(...$commands)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningConsoleCommand(...$commands);\n }\n\n /**\n * Determine if the application is running unit tests.\n *\n * @return bool\n * @static\n */\n public static function runningUnitTests()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningUnitTests();\n }\n\n /**\n * Determine if the application is running with debug mode enabled.\n *\n * @return bool\n * @static\n */\n public static function hasDebugModeEnabled()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasDebugModeEnabled();\n }\n\n /**\n * Register a new registered listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function registered($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registered($callback);\n }\n\n /**\n * Register all of the configured providers.\n *\n * @return void\n * @static\n */\n public static function registerConfiguredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerConfiguredProviders();\n }\n\n /**\n * Register a service provider with the application.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @param bool $force\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function register($provider, $force = false)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->register($provider, $force);\n }\n\n /**\n * Get the registered service provider instance if it exists.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return \\Illuminate\\Support\\ServiceProvider|null\n * @static\n */\n public static function getProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProvider($provider);\n }\n\n /**\n * Get the registered service provider instances if any exist.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return array\n * @static\n */\n public static function getProviders($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProviders($provider);\n }\n\n /**\n * Resolve a service provider instance from the class name.\n *\n * @param string $provider\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function resolveProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveProvider($provider);\n }\n\n /**\n * Load and boot all of the remaining deferred providers.\n *\n * @return void\n * @static\n */\n public static function loadDeferredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProviders();\n }\n\n /**\n * Load the provider for a deferred service.\n *\n * @param string $service\n * @return void\n * @static\n */\n public static function loadDeferredProvider($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProvider($service);\n }\n\n /**\n * Register a deferred provider and service.\n *\n * @param string $provider\n * @param string|null $service\n * @return void\n * @static\n */\n public static function registerDeferredProvider($provider, $service = null)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerDeferredProvider($provider, $service);\n }\n\n /**\n * Resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function make($abstract, $parameters = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->make($abstract, $parameters);\n }\n\n /**\n * Determine if the given abstract type has been bound.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function bound($abstract)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bound($abstract);\n }\n\n /**\n * Determine if the application has booted.\n *\n * @return bool\n * @static\n */\n public static function isBooted()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isBooted();\n }\n\n /**\n * Boot the application's service providers.\n *\n * @return void\n * @static\n */\n public static function boot()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->boot();\n }\n\n /**\n * Register a new boot listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booting($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booting($callback);\n }\n\n /**\n * Register a new \"booted\" listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booted($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booted($callback);\n }\n\n /**\n * {@inheritdoc}\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function handle($request, $type = 1, $catch = true)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handle($request, $type, $catch);\n }\n\n /**\n * Handle the incoming HTTP request and send the response to the browser.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function handleRequest($request)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->handleRequest($request);\n }\n\n /**\n * Handle the incoming Artisan command.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @return int\n * @static\n */\n public static function handleCommand($input)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handleCommand($input);\n }\n\n /**\n * Determine if the framework's base configuration should be merged.\n *\n * @return bool\n * @static\n */\n public static function shouldMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldMergeFrameworkConfiguration();\n }\n\n /**\n * Indicate that the framework's base configuration should not be merged.\n *\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function dontMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->dontMergeFrameworkConfiguration();\n }\n\n /**\n * Determine if middleware has been disabled for the application.\n *\n * @return bool\n * @static\n */\n public static function shouldSkipMiddleware()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldSkipMiddleware();\n }\n\n /**\n * Get the path to the cached services.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedServicesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedServicesPath();\n }\n\n /**\n * Get the path to the cached packages.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedPackagesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedPackagesPath();\n }\n\n /**\n * Determine if the application configuration is cached.\n *\n * @return bool\n * @static\n */\n public static function configurationIsCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configurationIsCached();\n }\n\n /**\n * Get the path to the configuration cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedConfigPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedConfigPath();\n }\n\n /**\n * Determine if the application routes are cached.\n *\n * @return bool\n * @static\n */\n public static function routesAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->routesAreCached();\n }\n\n /**\n * Get the path to the routes cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedRoutesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedRoutesPath();\n }\n\n /**\n * Determine if the application events are cached.\n *\n * @return bool\n * @static\n */\n public static function eventsAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->eventsAreCached();\n }\n\n /**\n * Get the path to the events cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedEventsPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedEventsPath();\n }\n\n /**\n * Add new prefix to list of absolute path prefixes.\n *\n * @param string $prefix\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function addAbsoluteCachePathPrefix($prefix)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->addAbsoluteCachePathPrefix($prefix);\n }\n\n /**\n * Get an instance of the maintenance mode manager implementation.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\MaintenanceMode\n * @static\n */\n public static function maintenanceMode()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->maintenanceMode();\n }\n\n /**\n * Determine if the application is currently down for maintenance.\n *\n * @return bool\n * @static\n */\n public static function isDownForMaintenance()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDownForMaintenance();\n }\n\n /**\n * Throw an HttpException with the given data.\n *\n * @param int $code\n * @param string $message\n * @param array $headers\n * @return never\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\HttpException\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException\n * @static\n */\n public static function abort($code, $message = '', $headers = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->abort($code, $message, $headers);\n }\n\n /**\n * Register a terminating callback with the application.\n *\n * @param callable|string $callback\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function terminating($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->terminating($callback);\n }\n\n /**\n * Terminate the application.\n *\n * @return void\n * @static\n */\n public static function terminate()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->terminate();\n }\n\n /**\n * Get the service providers that have been loaded.\n *\n * @return array<string, bool>\n * @static\n */\n public static function getLoadedProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLoadedProviders();\n }\n\n /**\n * Determine if the given service provider is loaded.\n *\n * @param string $provider\n * @return bool\n * @static\n */\n public static function providerIsLoaded($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->providerIsLoaded($provider);\n }\n\n /**\n * Get the application's deferred services.\n *\n * @return array\n * @static\n */\n public static function getDeferredServices()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getDeferredServices();\n }\n\n /**\n * Set the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function setDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setDeferredServices($services);\n }\n\n /**\n * Determine if the given service is a deferred service.\n *\n * @param string $service\n * @return bool\n * @static\n */\n public static function isDeferredService($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDeferredService($service);\n }\n\n /**\n * Add an array of services to the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function addDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addDeferredServices($services);\n }\n\n /**\n * Remove an array of services from the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function removeDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->removeDeferredServices($services);\n }\n\n /**\n * Configure the real-time facade namespace.\n *\n * @param string $namespace\n * @return void\n * @static\n */\n public static function provideFacades($namespace)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->provideFacades($namespace);\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLocale();\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function currentLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentLocale();\n }\n\n /**\n * Get the current application fallback locale.\n *\n * @return string\n * @static\n */\n public static function getFallbackLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getFallbackLocale();\n }\n\n /**\n * Set the current application locale.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Set the current application fallback locale.\n *\n * @param string $fallbackLocale\n * @return void\n * @static\n */\n public static function setFallbackLocale($fallbackLocale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setFallbackLocale($fallbackLocale);\n }\n\n /**\n * Determine if the application locale is the given locale.\n *\n * @param string $locale\n * @return bool\n * @static\n */\n public static function isLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocale($locale);\n }\n\n /**\n * Register the core class aliases in the container.\n *\n * @return void\n * @static\n */\n public static function registerCoreContainerAliases()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerCoreContainerAliases();\n }\n\n /**\n * Flush the container of all bindings and resolved instances.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->flush();\n }\n\n /**\n * Get the application namespace.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Define a contextual binding.\n *\n * @param array|string $concrete\n * @return \\Illuminate\\Contracts\\Container\\ContextualBindingBuilder\n * @static\n */\n public static function when($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->when($concrete);\n }\n\n /**\n * Define a contextual binding based on an attribute.\n *\n * @param string $attribute\n * @param \\Closure $handler\n * @return void\n * @static\n */\n public static function whenHasAttribute($attribute, $handler)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->whenHasAttribute($attribute, $handler);\n }\n\n /**\n * Returns true if the container can return an entry for the given identifier.\n * \n * Returns false otherwise.\n * \n * `has($id)` returning true does not mean that `get($id)` will not throw an exception.\n * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.\n *\n * @return bool\n * @param string $id Identifier of the entry to look for.\n * @return bool\n * @static\n */\n public static function has($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->has($id);\n }\n\n /**\n * Determine if the given abstract type has been resolved.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function resolved($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolved($abstract);\n }\n\n /**\n * Determine if a given type is shared.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function isShared($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isShared($abstract);\n }\n\n /**\n * Determine if a given string is an alias.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function isAlias($name)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isAlias($name);\n }\n\n /**\n * Register a binding with the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @throws \\TypeError\n * @throws ReflectionException\n * @static\n */\n public static function bind($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bind($abstract, $concrete, $shared);\n }\n\n /**\n * Determine if the container has a method binding.\n *\n * @param string $method\n * @return bool\n * @static\n */\n public static function hasMethodBinding($method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasMethodBinding($method);\n }\n\n /**\n * Bind a callback to resolve with Container::call.\n *\n * @param array|string $method\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function bindMethod($method, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindMethod($method, $callback);\n }\n\n /**\n * Get the method binding for the given method.\n *\n * @param string $method\n * @param mixed $instance\n * @return mixed\n * @static\n */\n public static function callMethodBinding($method, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->callMethodBinding($method, $instance);\n }\n\n /**\n * Add a contextual binding to the container.\n *\n * @param string $concrete\n * @param \\Closure|string $abstract\n * @param \\Closure|string $implementation\n * @return void\n * @static\n */\n public static function addContextualBinding($concrete, $abstract, $implementation)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addContextualBinding($concrete, $abstract, $implementation);\n }\n\n /**\n * Register a binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @static\n */\n public static function bindIf($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindIf($abstract, $concrete, $shared);\n }\n\n /**\n * Register a shared binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singleton($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singleton($abstract, $concrete);\n }\n\n /**\n * Register a shared binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singletonIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singletonIf($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scoped($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scoped($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scopedIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scopedIf($abstract, $concrete);\n }\n\n /**\n * \"Extend\" an abstract type in the container.\n *\n * @param string $abstract\n * @param \\Closure $closure\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function extend($abstract, $closure)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->extend($abstract, $closure);\n }\n\n /**\n * Register an existing instance as shared in the container.\n *\n * @template TInstance of mixed\n * @param string $abstract\n * @param TInstance $instance\n * @return TInstance\n * @static\n */\n public static function instance($abstract, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->instance($abstract, $instance);\n }\n\n /**\n * Assign a set of tags to a given binding.\n *\n * @param array|string $abstracts\n * @param mixed $tags\n * @return void\n * @static\n */\n public static function tag($abstracts, $tags)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->tag($abstracts, $tags);\n }\n\n /**\n * Resolve all of the bindings for a given tag.\n *\n * @param string $tag\n * @return iterable\n * @static\n */\n public static function tagged($tag)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->tagged($tag);\n }\n\n /**\n * Alias a type to a different name.\n *\n * @param string $abstract\n * @param string $alias\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function alias($abstract, $alias)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->alias($abstract, $alias);\n }\n\n /**\n * Bind a new callback to an abstract's rebind event.\n *\n * @param string $abstract\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function rebinding($abstract, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->rebinding($abstract, $callback);\n }\n\n /**\n * Refresh an instance on the given target and method.\n *\n * @param string $abstract\n * @param mixed $target\n * @param string $method\n * @return mixed\n * @static\n */\n public static function refresh($abstract, $target, $method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->refresh($abstract, $target, $method);\n }\n\n /**\n * Wrap the given closure such that its dependencies will be injected when executed.\n *\n * @param \\Closure $callback\n * @param array $parameters\n * @return \\Closure\n * @static\n */\n public static function wrap($callback, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->wrap($callback, $parameters);\n }\n\n /**\n * Call the given Closure / class@method and inject its dependencies.\n *\n * @param callable|string $callback\n * @param array<string, mixed> $parameters\n * @param string|null $defaultMethod\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function call($callback, $parameters = [], $defaultMethod = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->call($callback, $parameters, $defaultMethod);\n }\n\n /**\n * Get a closure to resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @return ($abstract is class-string<TClass> ? \\Closure(): TClass : \\Closure(): mixed)\n * @static\n */\n public static function factory($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->factory($abstract);\n }\n\n /**\n * An alias function name for make().\n *\n * @template TClass of object\n * @param string|class-string<TClass>|callable $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function makeWith($abstract, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->makeWith($abstract, $parameters);\n }\n\n /**\n * {@inheritdoc}\n *\n * @template TClass of object\n * @param string|class-string<TClass> $id\n * @return ($id is class-string<TClass> ? TClass : mixed)\n * @static\n */\n public static function get($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->get($id);\n }\n\n /**\n * Instantiate a concrete instance of the given type.\n *\n * @template TClass of object\n * @param \\Closure(static, array): TClass|class-string<TClass> $concrete\n * @return TClass\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @throws \\Illuminate\\Contracts\\Container\\CircularDependencyException\n * @static\n */\n public static function build($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->build($concrete);\n }\n\n /**\n * Resolve a dependency based on an attribute.\n *\n * @param \\ReflectionAttribute $attribute\n * @return mixed\n * @static\n */\n public static function resolveFromAttribute($attribute)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveFromAttribute($attribute);\n }\n\n /**\n * Register a new before resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function beforeResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeResolving($abstract, $callback);\n }\n\n /**\n * Register a new resolving callback.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function resolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function afterResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving attribute callback for all types.\n *\n * @param string $attribute\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterResolvingAttribute($attribute, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolvingAttribute($attribute, $callback);\n }\n\n /**\n * Fire all of the after resolving attribute callbacks.\n *\n * @param \\ReflectionAttribute[] $attributes\n * @param mixed $object\n * @return void\n * @static\n */\n public static function fireAfterResolvingAttributeCallbacks($attributes, $object)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->fireAfterResolvingAttributeCallbacks($attributes, $object);\n }\n\n /**\n * Get the name of the binding the container is currently resolving.\n *\n * @return class-string|string|null\n * @static\n */\n public static function currentlyResolving()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentlyResolving();\n }\n\n /**\n * Get the container's bindings.\n *\n * @return array\n * @static\n */\n public static function getBindings()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the alias for an abstract if available.\n *\n * @param string $abstract\n * @return string\n * @static\n */\n public static function getAlias($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getAlias($abstract);\n }\n\n /**\n * Remove all of the extender callbacks for a given type.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetExtenders($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetExtenders($abstract);\n }\n\n /**\n * Remove a resolved instance from the instance cache.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetInstance($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstance($abstract);\n }\n\n /**\n * Clear all of the instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstances();\n }\n\n /**\n * Clear all of the scoped instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetScopedInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetScopedInstances();\n }\n\n /**\n * Set the callback which determines the current container environment.\n *\n * @param (callable(array<int, string>|string): bool|string)|null $callback\n * @return void\n * @static\n */\n public static function resolveEnvironmentUsing($callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolveEnvironmentUsing($callback);\n }\n\n /**\n * Determine the environment for the container.\n *\n * @param array<int, string>|string $environments\n * @return bool\n * @static\n */\n public static function currentEnvironmentIs($environments)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentEnvironmentIs($environments);\n }\n\n /**\n * Get the globally available instance of the container.\n *\n * @return static\n * @static\n */\n public static function getInstance()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::getInstance();\n }\n\n /**\n * Set the shared instance of the container.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container|null $container\n * @return \\Illuminate\\Contracts\\Container\\Container|static\n * @static\n */\n public static function setInstance($container = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::setInstance($container);\n }\n\n /**\n * Determine if a given offset exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get the value at a given offset.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set the value at a given offset.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset the value at a given offset.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Application::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Application::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Application::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Application::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Console\\Kernel\n */\n class Artisan {\n /**\n * Re-route the Symfony command events to their Laravel counterparts.\n *\n * @internal\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function rerouteSymfonyCommandEvents()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->rerouteSymfonyCommandEvents();\n }\n\n /**\n * Run the console application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $output\n * @return int\n * @static\n */\n public static function handle($input, $output = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->handle($input, $output);\n }\n\n /**\n * Terminate the application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param int $status\n * @return void\n * @static\n */\n public static function terminate($input, $status)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->terminate($input, $status);\n }\n\n /**\n * Register a callback to be invoked when the command lifecycle duration exceeds a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param callable $handler\n * @return void\n * @static\n */\n public static function whenCommandLifecycleIsLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->whenCommandLifecycleIsLongerThan($threshold, $handler);\n }\n\n /**\n * When the command being handled started.\n *\n * @return \\Illuminate\\Support\\Carbon|null\n * @static\n */\n public static function commandStartedAt()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->commandStartedAt();\n }\n\n /**\n * Resolve a console schedule instance.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function resolveConsoleSchedule()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->resolveConsoleSchedule();\n }\n\n /**\n * Register a Closure based command with the application.\n *\n * @param string $signature\n * @param \\Closure $callback\n * @return \\Illuminate\\Foundation\\Console\\ClosureCommand\n * @static\n */\n public static function command($signature, $callback)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->command($signature, $callback);\n }\n\n /**\n * Register the given command with the console application.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command $command\n * @return void\n * @static\n */\n public static function registerCommand($command)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->registerCommand($command);\n }\n\n /**\n * Run an Artisan console command by name.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $outputBuffer\n * @return int\n * @throws \\Symfony\\Component\\Console\\Exception\\CommandNotFoundException\n * @static\n */\n public static function call($command, $parameters = [], $outputBuffer = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->call($command, $parameters, $outputBuffer);\n }\n\n /**\n * Queue the given console command.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Foundation\\Bus\\PendingDispatch\n * @static\n */\n public static function queue($command, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->queue($command, $parameters);\n }\n\n /**\n * Get all of the commands registered with the console.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->all();\n }\n\n /**\n * Get the output for the last run command.\n *\n * @return string\n * @static\n */\n public static function output()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->output();\n }\n\n /**\n * Bootstrap the application for artisan commands.\n *\n * @return void\n * @static\n */\n public static function bootstrap()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrap();\n }\n\n /**\n * Bootstrap the application without booting service providers.\n *\n * @return void\n * @static\n */\n public static function bootstrapWithoutBootingProviders()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrapWithoutBootingProviders();\n }\n\n /**\n * Set the Artisan application instance.\n *\n * @param \\Illuminate\\Console\\Application|null $artisan\n * @return void\n * @static\n */\n public static function setArtisan($artisan)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->setArtisan($artisan);\n }\n\n /**\n * Set the Artisan commands provided by the application.\n *\n * @param array $commands\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommands($commands)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommands($commands);\n }\n\n /**\n * Set the paths that should have their Artisan commands automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandPaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandPaths($paths);\n }\n\n /**\n * Set the paths that should have their Artisan \"routes\" automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandRoutePaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandRoutePaths($paths);\n }\n\n /**\n * Confirm before proceeding with the action.\n * \n * This method only asks for confirmation in production.\n *\n * @param string $warning\n * @param \\Closure|bool|null $callback\n * @return bool\n * @static\n */\n public static function confirmToProceed($warning = 'Application In Production', $callback = null)\n {\n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->confirmToProceed($warning, $callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\AuthManager\n * @see \\Illuminate\\Auth\\SessionGuard\n */\n class Auth {\n /**\n * Attempt to get the guard from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\Guard|\\Illuminate\\Contracts\\Auth\\StatefulGuard\n * @static\n */\n public static function guard($name = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->guard($name);\n }\n\n /**\n * Create a session based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function createSessionDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createSessionDriver($name, $config);\n }\n\n /**\n * Create a token based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\TokenGuard\n * @static\n */\n public static function createTokenDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createTokenDriver($name, $config);\n }\n\n /**\n * Get the default authentication driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default guard driver the factory should serve.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function shouldUse($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->shouldUse($name);\n }\n\n /**\n * Set the default authentication driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a new callback based request guard.\n *\n * @param string $driver\n * @param callable $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function viaRequest($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->viaRequest($driver, $callback);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function userResolver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->userResolver();\n }\n\n /**\n * Set the callback to be used to resolve users.\n *\n * @param \\Closure $userResolver\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function resolveUsersUsing($userResolver)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->resolveUsersUsing($userResolver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Register a custom provider creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function provider($name, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->provider($name, $callback);\n }\n\n /**\n * Determines if any guards have already been resolved.\n *\n * @return bool\n * @static\n */\n public static function hasResolvedGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->hasResolvedGuards();\n }\n\n /**\n * Forget all of the resolved guard instances.\n *\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function forgetGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->forgetGuards();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Create the user provider implementation for the driver.\n *\n * @param string|null $provider\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider|null\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createUserProvider($provider = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createUserProvider($provider);\n }\n\n /**\n * Get the default user provider name.\n *\n * @return string\n * @static\n */\n public static function getDefaultUserProvider()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultUserProvider();\n }\n\n /**\n * Get the currently authenticated user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function user()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->user();\n }\n\n /**\n * Get the ID for the currently authenticated user.\n *\n * @return int|string|null\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->id();\n }\n\n /**\n * Log a user into the application without sessions or cookies.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function once($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->once($credentials);\n }\n\n /**\n * Log the given user ID into the application without sessions or cookies.\n *\n * @param mixed $id\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function onceUsingId($id)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceUsingId($id);\n }\n\n /**\n * Validate a user's credentials.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function validate($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->validate($credentials);\n }\n\n /**\n * Attempt to authenticate using HTTP Basic Auth.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function basic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->basic($field, $extraConditions);\n }\n\n /**\n * Perform a stateless HTTP Basic login attempt.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function onceBasic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceBasic($field, $extraConditions);\n }\n\n /**\n * Attempt to authenticate a user using the given credentials.\n *\n * @param array $credentials\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attempt($credentials = [], $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attempt($credentials, $remember);\n }\n\n /**\n * Attempt to authenticate a user with credentials and additional callbacks.\n *\n * @param array $credentials\n * @param array|callable|null $callbacks\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attemptWhen($credentials = [], $callbacks = null, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attemptWhen($credentials, $callbacks, $remember);\n }\n\n /**\n * Log the given user ID into the application.\n *\n * @param mixed $id\n * @param bool $remember\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function loginUsingId($id, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->loginUsingId($id, $remember);\n }\n\n /**\n * Log a user into the application.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @param bool $remember\n * @return void\n * @static\n */\n public static function login($user, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->login($user, $remember);\n }\n\n /**\n * Log the user out of the application.\n *\n * @return void\n * @static\n */\n public static function logout()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logout();\n }\n\n /**\n * Log the user out of the application on their current device only.\n * \n * This method does not cycle the \"remember\" token.\n *\n * @return void\n * @static\n */\n public static function logoutCurrentDevice()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logoutCurrentDevice();\n }\n\n /**\n * Invalidate other sessions for the current user.\n * \n * The application must be using the AuthenticateSession middleware.\n *\n * @param string $password\n * @return \\Jiminny\\Models\\User|null\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function logoutOtherDevices($password)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->logoutOtherDevices($password);\n }\n\n /**\n * Register an authentication attempt event listener.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function attempting($callback)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->attempting($callback);\n }\n\n /**\n * Get the last user we attempted to authenticate.\n *\n * @return \\Jiminny\\Models\\User\n * @static\n */\n public static function getLastAttempted()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getLastAttempted();\n }\n\n /**\n * Get a unique identifier for the auth session value.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getName();\n }\n\n /**\n * Get the name of the cookie used to store the \"recaller\".\n *\n * @return string\n * @static\n */\n public static function getRecallerName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRecallerName();\n }\n\n /**\n * Determine if the user was authenticated via \"remember me\" cookie.\n *\n * @return bool\n * @static\n */\n public static function viaRemember()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->viaRemember();\n }\n\n /**\n * Set the number of minutes the remember me cookie should be valid for.\n *\n * @param int $minutes\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRememberDuration($minutes)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRememberDuration($minutes);\n }\n\n /**\n * Get the cookie creator instance used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Cookie\\QueueingFactory\n * @throws \\RuntimeException\n * @static\n */\n public static function getCookieJar()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getCookieJar();\n }\n\n /**\n * Set the cookie creator instance used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Cookie\\QueueingFactory $cookie\n * @return void\n * @static\n */\n public static function setCookieJar($cookie)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setCookieJar($cookie);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the session store used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getSession();\n }\n\n /**\n * Return the currently cached user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function getUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getUser();\n }\n\n /**\n * Set the current user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setUser($user)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setUser($user);\n }\n\n /**\n * Get the current request instance.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRequest($request);\n }\n\n /**\n * Get the timebox instance used by the guard.\n *\n * @return \\Illuminate\\Support\\Timebox\n * @static\n */\n public static function getTimebox()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getTimebox();\n }\n\n /**\n * Determine if the current user is authenticated. If not, throw an exception.\n *\n * @return \\Jiminny\\Models\\User\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function authenticate()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->authenticate();\n }\n\n /**\n * Determine if the guard has a user instance.\n *\n * @return bool\n * @static\n */\n public static function hasUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->hasUser();\n }\n\n /**\n * Determine if the current user is authenticated.\n *\n * @return bool\n * @static\n */\n public static function check()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->check();\n }\n\n /**\n * Determine if the current user is a guest.\n *\n * @return bool\n * @static\n */\n public static function guest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->guest();\n }\n\n /**\n * Forget the current user.\n *\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function forgetUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->forgetUser();\n }\n\n /**\n * Get the user provider used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider\n * @static\n */\n public static function getProvider()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getProvider();\n }\n\n /**\n * Set the user provider used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Auth\\UserProvider $provider\n * @return void\n * @static\n */\n public static function setProvider($provider)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setProvider($provider);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Auth\\SessionGuard::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Auth\\SessionGuard::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Auth\\SessionGuard::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Auth\\SessionGuard::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Compilers\\BladeCompiler\n */\n class Blade {\n /**\n * Compile the view at the given path.\n *\n * @param string|null $path\n * @return void\n * @static\n */\n public static function compile($path = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->compile($path);\n }\n\n /**\n * Get the path currently being compiled.\n *\n * @return string\n * @static\n */\n public static function getPath()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getPath();\n }\n\n /**\n * Set the path currently being compiled.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function setPath($path)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setPath($path);\n }\n\n /**\n * Compile the given Blade template contents.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileString($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileString($value);\n }\n\n /**\n * Evaluate and render a Blade string to HTML.\n *\n * @param string $string\n * @param array $data\n * @param bool $deleteCachedView\n * @return string\n * @static\n */\n public static function render($string, $data = [], $deleteCachedView = false)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::render($string, $data, $deleteCachedView);\n }\n\n /**\n * Render a component instance to HTML.\n *\n * @param \\Illuminate\\View\\Component $component\n * @return string\n * @static\n */\n public static function renderComponent($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::renderComponent($component);\n }\n\n /**\n * Strip the parentheses from the given expression.\n *\n * @param string $expression\n * @return string\n * @static\n */\n public static function stripParentheses($expression)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->stripParentheses($expression);\n }\n\n /**\n * Register a custom Blade compiler.\n *\n * @param callable $compiler\n * @return void\n * @static\n */\n public static function extend($compiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->extend($compiler);\n }\n\n /**\n * Get the extensions used by the compiler.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Register an \"if\" statement directive.\n *\n * @param string $name\n * @param callable $callback\n * @return void\n * @static\n */\n public static function if($name, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->if($name, $callback);\n }\n\n /**\n * Check the result of a condition.\n *\n * @param string $name\n * @param mixed $parameters\n * @return bool\n * @static\n */\n public static function check($name, ...$parameters)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->check($name, ...$parameters);\n }\n\n /**\n * Register a class-based component alias directive.\n *\n * @param string $class\n * @param string|null $alias\n * @param string $prefix\n * @return void\n * @static\n */\n public static function component($class, $alias = null, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->component($class, $alias, $prefix);\n }\n\n /**\n * Register an array of class-based components.\n *\n * @param array $components\n * @param string $prefix\n * @return void\n * @static\n */\n public static function components($components, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->components($components, $prefix);\n }\n\n /**\n * Get the registered class component aliases.\n *\n * @return array\n * @static\n */\n public static function getClassComponentAliases()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentAliases();\n }\n\n /**\n * Register a new anonymous component path.\n *\n * @param string $path\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentPath($path, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentPath($path, $prefix);\n }\n\n /**\n * Register an anonymous component namespace.\n *\n * @param string $directory\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentNamespace($directory, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentNamespace($directory, $prefix);\n }\n\n /**\n * Register a class-based component namespace.\n *\n * @param string $namespace\n * @param string $prefix\n * @return void\n * @static\n */\n public static function componentNamespace($namespace, $prefix)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->componentNamespace($namespace, $prefix);\n }\n\n /**\n * Get the registered anonymous component paths.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentPaths()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentPaths();\n }\n\n /**\n * Get the registered anonymous component namespaces.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentNamespaces();\n }\n\n /**\n * Get the registered class component namespaces.\n *\n * @return array\n * @static\n */\n public static function getClassComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentNamespaces();\n }\n\n /**\n * Register a component alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasComponent($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasComponent($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function include($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->include($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasInclude($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasInclude($path, $alias);\n }\n\n /**\n * Register a handler for custom directives, binding the handler to the compiler.\n *\n * @param string $name\n * @param callable $handler\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function bindDirective($name, $handler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->bindDirective($name, $handler);\n }\n\n /**\n * Register a handler for custom directives.\n *\n * @param string $name\n * @param callable $handler\n * @param bool $bind\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function directive($name, $handler, $bind = false)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->directive($name, $handler, $bind);\n }\n\n /**\n * Get the list of custom directives.\n *\n * @return array\n * @static\n */\n public static function getCustomDirectives()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCustomDirectives();\n }\n\n /**\n * Indicate that the following callable should be used to prepare strings for compilation.\n *\n * @param callable $callback\n * @return \\Illuminate\\View\\Compilers\\BladeCompiler\n * @static\n */\n public static function prepareStringsForCompilationUsing($callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->prepareStringsForCompilationUsing($callback);\n }\n\n /**\n * Register a new precompiler.\n *\n * @param callable $precompiler\n * @return void\n * @static\n */\n public static function precompiler($precompiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->precompiler($precompiler);\n }\n\n /**\n * Execute the given callback using a custom echo format.\n *\n * @param string $format\n * @param callable $callback\n * @return string\n * @static\n */\n public static function usingEchoFormat($format, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->usingEchoFormat($format, $callback);\n }\n\n /**\n * Set the echo format to be used by the compiler.\n *\n * @param string $format\n * @return void\n * @static\n */\n public static function setEchoFormat($format)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setEchoFormat($format);\n }\n\n /**\n * Set the \"echo\" format to double encode entities.\n *\n * @return void\n * @static\n */\n public static function withDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withDoubleEncoding();\n }\n\n /**\n * Set the \"echo\" format to not double encode entities.\n *\n * @return void\n * @static\n */\n public static function withoutDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutDoubleEncoding();\n }\n\n /**\n * Indicate that component tags should not be compiled.\n *\n * @return void\n * @static\n */\n public static function withoutComponentTags()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutComponentTags();\n }\n\n /**\n * Get the path to the compiled version of a view.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getCompiledPath($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCompiledPath($path);\n }\n\n /**\n * Determine if the view at the given path is expired.\n *\n * @param string $path\n * @return bool\n * @throws \\ErrorException\n * @static\n */\n public static function isExpired($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->isExpired($path);\n }\n\n /**\n * Get a new component hash for a component name.\n *\n * @param string $component\n * @return string\n * @static\n */\n public static function newComponentHash($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::newComponentHash($component);\n }\n\n /**\n * Compile a class component opening.\n *\n * @param string $component\n * @param string $alias\n * @param string $data\n * @param string $hash\n * @return string\n * @static\n */\n public static function compileClassComponentOpening($component, $alias, $data, $hash)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash);\n }\n\n /**\n * Compile the end-component statements into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndComponentClass()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndComponentClass();\n }\n\n /**\n * Sanitize the given component attribute value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function sanitizeComponentAttribute($value)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::sanitizeComponentAttribute($value);\n }\n\n /**\n * Compile an end-once block into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndOnce()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndOnce();\n }\n\n /**\n * Add a handler to be executed before echoing a given class.\n *\n * @param string|callable $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Compile Blade echos into valid PHP.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileEchos($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEchos($value);\n }\n\n /**\n * Apply the echo handler for the value if it exists.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function applyEchoHandler($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->applyEchoHandler($value);\n }\n\n }\n /**\n * @method static mixed auth(\\Illuminate\\Http\\Request $request)\n * @method static mixed validAuthenticationResponse(\\Illuminate\\Http\\Request $request, mixed $result)\n * @method static void broadcast(array $channels, string $event, array $payload = [])\n * @method static array|null resolveAuthenticatedUser(\\Illuminate\\Http\\Request $request)\n * @method static void resolveAuthenticatedUserUsing(\\Closure $callback)\n * @method static \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster channel(\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel|string $channel, callable|string $callback, array $options = [])\n * @method static \\Illuminate\\Support\\Collection getChannels()\n * @see \\Illuminate\\Broadcasting\\BroadcastManager\n * @see \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster\n */\n class Broadcast {\n /**\n * Register the routes for handling broadcast channel authentication and sockets.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function routes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->routes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast user authentication.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function userRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->userRoutes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast authentication and sockets.\n * \n * Alias of \"routes\" method.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function channelRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->channelRoutes($attributes);\n }\n\n /**\n * Get the socket ID for the given request.\n *\n * @param \\Illuminate\\Http\\Request|null $request\n * @return string|null\n * @static\n */\n public static function socket($request = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->socket($request);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given channels.\n *\n * @static\n */\n public static function on($channels)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->on($channels);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given private channels.\n *\n * @static\n */\n public static function private($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->private($channel);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given presence channels.\n *\n * @static\n */\n public static function presence($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->presence($channel);\n }\n\n /**\n * Begin broadcasting an event.\n *\n * @param mixed $event\n * @return \\Illuminate\\Broadcasting\\PendingBroadcast\n * @static\n */\n public static function event($event = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->event($event);\n }\n\n /**\n * Queue the given event for broadcast.\n *\n * @param mixed $event\n * @return void\n * @static\n */\n public static function queue($event)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->queue($event);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @static\n */\n public static function connection($driver = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->connection($driver);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Get a Pusher instance for the given configuration.\n *\n * @param array $config\n * @return \\Pusher\\Pusher\n * @static\n */\n public static function pusher($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->pusher($config);\n }\n\n /**\n * Get an Ably instance for the given configuration.\n *\n * @param array $config\n * @return \\Ably\\AblyRest\n * @static\n */\n public static function ably($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->ably($config);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function forgetDrivers()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @see \\Illuminate\\Bus\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n */\n class Bus {\n /**\n * Dispatch a command to its appropriate handler.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function dispatch($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatch($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process.\n * \n * Queueable jobs will be dispatched to the \"sync\" queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchSync($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchSync($command, $handler);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process without using the synchronous queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchNow($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchNow($command, $handler);\n }\n\n /**\n * Attempt to find the batch with the given ID.\n *\n * @param string $batchId\n * @return \\Illuminate\\Bus\\Batch|null\n * @static\n */\n public static function findBatch($batchId)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->findBatch($batchId);\n }\n\n /**\n * Create a new batch of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $jobs\n * @return \\Illuminate\\Bus\\PendingBatch\n * @static\n */\n public static function batch($jobs)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->batch($jobs);\n }\n\n /**\n * Create a new chain of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|array|null $jobs\n * @return \\Illuminate\\Foundation\\Bus\\PendingChain\n * @static\n */\n public static function chain($jobs = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->chain($jobs);\n }\n\n /**\n * Determine if the given command has a handler.\n *\n * @param mixed $command\n * @return bool\n * @static\n */\n public static function hasCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->hasCommandHandler($command);\n }\n\n /**\n * Retrieve the handler for a command.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function getCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->getCommandHandler($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler behind a queue.\n *\n * @param mixed $command\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function dispatchToQueue($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchToQueue($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler after the current process.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return void\n * @static\n */\n public static function dispatchAfterResponse($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n $instance->dispatchAfterResponse($command, $handler);\n }\n\n /**\n * Set the pipes through which commands should be piped before dispatching.\n *\n * @param array $pipes\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function pipeThrough($pipes)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->pipeThrough($pipes);\n }\n\n /**\n * Map a command to a handler.\n *\n * @param array $map\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function map($map)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->map($map);\n }\n\n /**\n * Allow dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withDispatchingAfterResponses();\n }\n\n /**\n * Disable dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withoutDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withoutDispatchingAfterResponses();\n }\n\n /**\n * Specify the jobs that should be dispatched instead of faked.\n *\n * @param array|string $jobsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function except($jobsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->except($jobsToDispatch);\n }\n\n /**\n * Assert if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatched($command, $callback);\n }\n\n /**\n * Assert if a job was pushed exactly once.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedOnce($command);\n }\n\n /**\n * Assert if a job was pushed a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatched($command, $callback);\n }\n\n /**\n * Assert that no jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Assert if a job was explicitly dispatched synchronously based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was pushed synchronously a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedSyncTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSyncTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was dispatched after the response was sent based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a job was pushed after the response was sent a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponseTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponseTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a chain of jobs was dispatched.\n *\n * @param array $expectedChain\n * @return void\n * @static\n */\n public static function assertChained($expectedChain)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertChained($expectedChain);\n }\n\n /**\n * Assert no chained jobs was dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingChained()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingChained();\n }\n\n /**\n * Assert if a job was dispatched with an empty chain based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedWithoutChain($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedWithoutChain($command, $callback);\n }\n\n /**\n * Create a new assertion about a chained batch.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Support\\Testing\\Fakes\\ChainedBatchTruthTest\n * @static\n */\n public static function chainedBatch($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->chainedBatch($callback);\n }\n\n /**\n * Assert if a batch was dispatched based on a truth-test callback.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function assertBatched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatched($callback);\n }\n\n /**\n * Assert the number of batches that have been dispatched.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertBatchCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatchCount($count);\n }\n\n /**\n * Assert that no batched jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingBatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingBatched();\n }\n\n /**\n * Assert that no jobs were dispatched, chained, or batched.\n *\n * @return void\n * @static\n */\n public static function assertNothingPlaced()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingPlaced();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatched($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched synchronously matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedSync($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched after the response was sent matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Get all of the pending batches matching a truth-test callback.\n *\n * @param callable $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function batched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->batched($callback);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatched($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatched($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedSync($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedSync($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedAfterResponse($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedAfterResponse($command);\n }\n\n /**\n * Dispatch an empty job batch for testing.\n *\n * @param string $name\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function dispatchFakeBatch($name = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchFakeBatch($name);\n }\n\n /**\n * Record the fake pending batch dispatch.\n *\n * @param \\Illuminate\\Bus\\PendingBatch $pendingBatch\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function recordPendingBatch($pendingBatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->recordPendingBatch($pendingBatch);\n }\n\n /**\n * Specify if commands should be serialized and restored when being batched.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the batches that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedBatches()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedBatches();\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\CacheManager\n * @see \\Illuminate\\Cache\\Repository\n */\n class Cache {\n /**\n * Get a cache store instance by name, wrapped in a repository.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function store($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->store($name);\n }\n\n /**\n * Get a cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Get a memoized cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function memo($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->memo($driver);\n }\n\n /**\n * Resolve the given store.\n *\n * @param string $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Build a cache repository with the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new cache repository with the given implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function repository($store, $config = [])\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->repository($store, $config);\n }\n\n /**\n * Re-set the event dispatcher on all resolved cache repositories.\n *\n * @return void\n * @static\n */\n public static function refreshEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->refreshEventDispatcher();\n }\n\n /**\n * Get the default cache driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default cache driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Unset the given driver instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function forgetDriver($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->forgetDriver($name);\n }\n\n /**\n * Disconnect the given driver and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if an item exists in the cache.\n *\n * @param array|string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if an item doesn't exist in the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve multiple items from the cache by key.\n * \n * Items not found in the cache will have a null value.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function many($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->many($keys);\n }\n\n /**\n * Obtains multiple cache items by their unique keys.\n *\n * @return iterable\n * @param iterable<string> $keys A list of keys that can be obtained in a single operation.\n * @param mixed $default Default value to return for keys that do not exist.\n * @return iterable<string, mixed> A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function getMultiple($keys, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getMultiple($keys, $default);\n }\n\n /**\n * Retrieve an item from the cache and delete it.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Store an item in the cache.\n *\n * @param array|string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function put($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->put($key, $value, $ttl);\n }\n\n /**\n * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.\n *\n * @return bool\n * @param string $key The key of the item to store.\n * @param mixed $value The value of the item to store, must be serializable.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function set($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->set($key, $value, $ttl);\n }\n\n /**\n * Store multiple items in the cache for a given number of seconds.\n *\n * @param array $values\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function putMany($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->putMany($values, $ttl);\n }\n\n /**\n * Persists a set of key => value pairs in the cache, with an optional TTL.\n *\n * @return bool\n * @param iterable $values A list of key => value pairs for a multiple-set operation.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $values is neither an array nor a Traversable,\n * or if any of the $values are not a legal value.\n * @static\n */\n public static function setMultiple($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setMultiple($values, $ttl);\n }\n\n /**\n * Store an item in the cache if the key does not exist.\n *\n * @param string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function add($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->add($key, $value, $ttl);\n }\n\n /**\n * Increment the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function increment($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->increment($key, $value);\n }\n\n /**\n * Decrement the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function decrement($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->decrement($key, $value);\n }\n\n /**\n * Store an item in the cache indefinitely.\n *\n * @param string $key\n * @param mixed $value\n * @return bool\n * @static\n */\n public static function forever($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forever($key, $value);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure|\\DateTimeInterface|\\DateInterval|int|null $ttl\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function remember($key, $ttl, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->remember($key, $ttl, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function sear($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->sear($key, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function rememberForever($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->rememberForever($key, $callback);\n }\n\n /**\n * Retrieve an item from the cache by key, refreshing it in the background if it is stale.\n *\n * @template TCacheValue\n * @param string $key\n * @param array{ 0: \\DateTimeInterface|\\DateInterval|int, 1: \\DateTimeInterface|\\DateInterval|int } $ttl\n * @param (callable(): TCacheValue) $callback\n * @param array{ seconds?: int, owner?: string }|null $lock\n * @param bool $alwaysDefer\n * @return TCacheValue\n * @static\n */\n public static function flexible($key, $ttl, $callback, $lock = null, $alwaysDefer = false)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->flexible($key, $ttl, $callback, $lock, $alwaysDefer);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Delete an item from the cache by its unique key.\n *\n * @return bool\n * @param string $key The unique cache key of the item to delete.\n * @return bool True if the item was successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function delete($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->delete($key);\n }\n\n /**\n * Deletes multiple cache items in a single operation.\n *\n * @return bool\n * @param iterable<string> $keys A list of string-based keys to be deleted.\n * @return bool True if the items were successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function deleteMultiple($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->deleteMultiple($keys);\n }\n\n /**\n * Wipes clean the entire cache's keys.\n *\n * @return bool\n * @return bool True on success and false on failure.\n * @static\n */\n public static function clear()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->clear();\n }\n\n /**\n * Begin executing a new tags operation if the store supports it.\n *\n * @param mixed $names\n * @return \\Illuminate\\Cache\\TaggedCache\n * @throws \\BadMethodCallException\n * @static\n */\n public static function tags($names)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->tags($names);\n }\n\n /**\n * Get the name of the cache store.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getName();\n }\n\n /**\n * Determine if the current store supports tags.\n *\n * @return bool\n * @static\n */\n public static function supportsTags()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->supportsTags();\n }\n\n /**\n * Get the default cache time.\n *\n * @return int|null\n * @static\n */\n public static function getDefaultCacheTime()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getDefaultCacheTime();\n }\n\n /**\n * Set the default cache time in seconds.\n *\n * @param int|null $seconds\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function setDefaultCacheTime($seconds)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setDefaultCacheTime($seconds);\n }\n\n /**\n * Get the cache store implementation.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Store\n * @static\n */\n public static function getStore()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getStore();\n }\n\n /**\n * Set the cache store implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @return static\n * @static\n */\n public static function setStore($store)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setStore($store);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setEventDispatcher($events)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->setEventDispatcher($events);\n }\n\n /**\n * Determine if a cached value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Store an item in the cache for the default time.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cache\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cache\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cache\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cache\\Repository::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a lock instance.\n *\n * @param string $name\n * @param int $seconds\n * @param string|null $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function lock($name, $seconds = 0, $owner = null)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lock($name, $seconds, $owner);\n }\n\n /**\n * Restore a lock instance using the owner identifier.\n *\n * @param string $name\n * @param string $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function restoreLock($name, $owner)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->restoreLock($name, $owner);\n }\n\n /**\n * Remove all items from the cache.\n *\n * @return bool\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->flush();\n }\n\n /**\n * Remove all expired tag set entries.\n *\n * @return void\n * @static\n */\n public static function flushStaleTags()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->flushStaleTags();\n }\n\n /**\n * Get the Redis connection instance.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->connection();\n }\n\n /**\n * Get the Redis connection instance that should be used to manage locks.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function lockConnection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lockConnection();\n }\n\n /**\n * Specify the name of the connection that should be used to store data.\n *\n * @param string $connection\n * @return void\n * @static\n */\n public static function setConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setConnection($connection);\n }\n\n /**\n * Specify the name of the connection that should be used to manage locks.\n *\n * @param string $connection\n * @return \\Illuminate\\Cache\\RedisStore\n * @static\n */\n public static function setLockConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->setLockConnection($connection);\n }\n\n /**\n * Get the Redis database instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the cache key prefix.\n *\n * @return string\n * @static\n */\n public static function getPrefix()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getPrefix();\n }\n\n /**\n * Set the cache key prefix.\n *\n * @param string $prefix\n * @return void\n * @static\n */\n public static function setPrefix($prefix)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setPrefix($prefix);\n }\n\n }\n /**\n * @method static array run(\\Closure|array $tasks)\n * @method static \\Illuminate\\Support\\Defer\\DeferredCallback defer(\\Closure|array $tasks)\n * @see \\Illuminate\\Concurrency\\ConcurrencyManager\n */\n class Concurrency {\n /**\n * Get a driver instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Create an instance of the process concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ProcessDriver\n * @static\n */\n public static function createProcessDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createProcessDriver($config);\n }\n\n /**\n * Create an instance of the fork concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ForkDriver\n * @throws \\RuntimeException\n * @static\n */\n public static function createForkDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createForkDriver($config);\n }\n\n /**\n * Create an instance of the sync concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\SyncDriver\n * @static\n */\n public static function createSyncDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createSyncDriver($config);\n }\n\n /**\n * Get the default instance name.\n *\n * @return string\n * @static\n */\n public static function getDefaultInstance()\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getDefaultInstance();\n }\n\n /**\n * Set the default instance name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultInstance($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->setDefaultInstance($name);\n }\n\n /**\n * Get the instance specific configuration.\n *\n * @param string $name\n * @return array\n * @static\n */\n public static function getInstanceConfig($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getInstanceConfig($name);\n }\n\n /**\n * Get an instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function instance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->instance($name);\n }\n\n /**\n * Unset the given instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function forgetInstance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->forgetInstance($name);\n }\n\n /**\n * Disconnect the given instance and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom instance creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function extend($name, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->extend($name, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function setApplication($app)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @see \\Illuminate\\Config\\Repository\n */\n class Config {\n /**\n * Determine if the given configuration value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Get the specified configuration value.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get many configuration values.\n *\n * @param array<string|int,mixed> $keys\n * @return array<string,mixed>\n * @static\n */\n public static function getMany($keys)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->getMany($keys);\n }\n\n /**\n * Get the specified string configuration value.\n *\n * @param string $key\n * @param (\\Closure():(string|null))|string|null $default\n * @return string\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Get the specified integer configuration value.\n *\n * @param string $key\n * @param (\\Closure():(int|null))|int|null $default\n * @return int\n * @static\n */\n public static function integer($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Get the specified float configuration value.\n *\n * @param string $key\n * @param (\\Closure():(float|null))|float|null $default\n * @return float\n * @static\n */\n public static function float($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Get the specified boolean configuration value.\n *\n * @param string $key\n * @param (\\Closure():(bool|null))|bool|null $default\n * @return bool\n * @static\n */\n public static function boolean($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Get the specified array configuration value.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return array<array-key, mixed>\n * @static\n */\n public static function array($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->array($key, $default);\n }\n\n /**\n * Get the specified array configuration value as a collection.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return Collection<array-key, mixed>\n * @static\n */\n public static function collection($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->collection($key, $default);\n }\n\n /**\n * Set a given configuration value.\n *\n * @param array|string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function set($key, $value = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->set($key, $value);\n }\n\n /**\n * Prepend a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function prepend($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->prepend($key, $value);\n }\n\n /**\n * Push a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Get all of the configuration items for the application.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Determine if the given configuration option exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get a configuration option.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set a configuration option.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset a configuration option.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Config\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Config\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Config\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Config\\Repository::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Log\\Context\\Repository\n */\n class Context {\n /**\n * Determine if the given key exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the given key is missing.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if the given key exists within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hasHidden($key);\n }\n\n /**\n * Determine if the given key is missing within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missingHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missingHidden($key);\n }\n\n /**\n * Retrieve all the context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Retrieve all the hidden context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function allHidden()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->allHidden();\n }\n\n /**\n * Retrieve the given key's value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->getHidden($key, $default);\n }\n\n /**\n * Retrieve the given key's value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pullHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pullHidden($key, $default);\n }\n\n /**\n * Retrieve only the values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->only($keys);\n }\n\n /**\n * Retrieve only the hidden values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function onlyHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->onlyHidden($keys);\n }\n\n /**\n * Retrieve all values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->except($keys);\n }\n\n /**\n * Retrieve all hidden values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function exceptHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->exceptHidden($keys);\n }\n\n /**\n * Add a context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function add($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->add($key, $value);\n }\n\n /**\n * Add a hidden context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHidden($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHidden($key, $value);\n }\n\n /**\n * Add a context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function remember($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->remember($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function rememberHidden($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->rememberHidden($key, $value);\n }\n\n /**\n * Forget the given context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Forget the given hidden context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forgetHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forgetHidden($key);\n }\n\n /**\n * Add a context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addIf($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHiddenIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHiddenIf($key, $value);\n }\n\n /**\n * Push the given values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function push($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->push($key, ...$values);\n }\n\n /**\n * Pop the latest value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function pop($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pop($key);\n }\n\n /**\n * Push the given hidden values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function pushHidden($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pushHidden($key, ...$values);\n }\n\n /**\n * Pop the latest hidden value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function popHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->popHidden($key);\n }\n\n /**\n * Increment a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Determine if the given value is in the given stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function stackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->stackContains($key, $value, $strict);\n }\n\n /**\n * Determine if the given value is in the given hidden stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function hiddenStackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hiddenStackContains($key, $value, $strict);\n }\n\n /**\n * Run the callback function with the given context values and restore the original context state when complete.\n *\n * @param callable $callback\n * @param array<string, mixed> $data\n * @param array<string, mixed> $hidden\n * @return mixed\n * @throws \\Throwable\n * @static\n */\n public static function scope($callback, $data = [], $hidden = [])\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->scope($callback, $data, $hidden);\n }\n\n /**\n * Determine if the repository is empty.\n *\n * @return bool\n * @static\n */\n public static function isEmpty()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->isEmpty();\n }\n\n /**\n * Execute the given callback when context is about to be dehydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function dehydrating($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrating($callback);\n }\n\n /**\n * Execute the given callback when context has been hydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function hydrated($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrated($callback);\n }\n\n /**\n * Handle unserialize exceptions using the given callback.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleUnserializeExceptionsUsing($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->handleUnserializeExceptionsUsing($callback);\n }\n\n /**\n * Flush all context data.\n *\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->flush();\n }\n\n /**\n * Dehydrate the context data.\n *\n * @internal\n * @return \\Illuminate\\Log\\Context\\?array\n * @static\n */\n public static function dehydrate()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrate();\n }\n\n /**\n * Hydrate the context instance.\n *\n * @internal\n * @param \\Illuminate\\Log\\Context\\?array $context\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function hydrate($context)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrate($context);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Log\\Context\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Log\\Context\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Log\\Context\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Log\\Context\\Repository::flushMacros();\n }\n\n /**\n * Restore the model from the model identifier instance.\n *\n * @param \\Illuminate\\Contracts\\Database\\ModelIdentifier $value\n * @return \\Illuminate\\Database\\Eloquent\\Model\n * @static\n */\n public static function restoreModel($value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->restoreModel($value);\n }\n\n }\n /**\n * @see \\Illuminate\\Cookie\\CookieJar\n */\n class Cookie {\n /**\n * Create a new cookie instance.\n *\n * @param string $name\n * @param string $value\n * @param int $minutes\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Create a cookie that lasts \"forever\" (400 days).\n *\n * @param string $name\n * @param string $value\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Expire the given cookie.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forget($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forget($name, $path, $domain);\n }\n\n /**\n * Determine if a cookie has been queued.\n *\n * @param string $key\n * @param string|null $path\n * @return bool\n * @static\n */\n public static function hasQueued($key, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->hasQueued($key, $path);\n }\n\n /**\n * Get a queued cookie instance.\n *\n * @param string $key\n * @param mixed $default\n * @param string|null $path\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie|null\n * @static\n */\n public static function queued($key, $default = null, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->queued($key, $default, $path);\n }\n\n /**\n * Queue a cookie to send with the next response.\n *\n * @param mixed $parameters\n * @return void\n * @static\n */\n public static function queue(...$parameters)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->queue(...$parameters);\n }\n\n /**\n * Queue a cookie to expire with the next response.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return void\n * @static\n */\n public static function expire($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->expire($name, $path, $domain);\n }\n\n /**\n * Remove a cookie from the queue.\n *\n * @param string $name\n * @param string|null $path\n * @return void\n * @static\n */\n public static function unqueue($name, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->unqueue($name, $path);\n }\n\n /**\n * Set the default path and domain for the jar.\n *\n * @param string $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param string|null $sameSite\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite);\n }\n\n /**\n * Get the cookies which have been queued for the next request.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie[]\n * @static\n */\n public static function getQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->getQueuedCookies();\n }\n\n /**\n * Flush the cookies which have been queued for the next request.\n *\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function flushQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->flushQueuedCookies();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cookie\\CookieJar::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cookie\\CookieJar::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cookie\\CookieJar::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cookie\\CookieJar::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Encryption\\Encrypter\n */\n class Crypt {\n /**\n * Determine if the given key and cipher combination is valid.\n *\n * @param string $key\n * @param string $cipher\n * @return bool\n * @static\n */\n public static function supported($key, $cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::supported($key, $cipher);\n }\n\n /**\n * Create a new encryption key for the given cipher.\n *\n * @param string $cipher\n * @return string\n * @static\n */\n public static function generateKey($cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::generateKey($cipher);\n }\n\n /**\n * Encrypt the given value.\n *\n * @param mixed $value\n * @param bool $serialize\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encrypt($value, $serialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encrypt($value, $serialize);\n }\n\n /**\n * Encrypt a string without serialization.\n *\n * @param string $value\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encryptString($value)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encryptString($value);\n }\n\n /**\n * Decrypt the given value.\n *\n * @param string $payload\n * @param bool $unserialize\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decrypt($payload, $unserialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decrypt($payload, $unserialize);\n }\n\n /**\n * Decrypt the given string without unserialization.\n *\n * @param string $payload\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decryptString($payload)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decryptString($payload);\n }\n\n /**\n * Get the encryption key that the encrypter is currently using.\n *\n * @return string\n * @static\n */\n public static function getKey()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getKey();\n }\n\n /**\n * Get the current encryption key and all previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getAllKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getAllKeys();\n }\n\n /**\n * Get the previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getPreviousKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getPreviousKeys();\n }\n\n /**\n * Set the previous / legacy encryption keys that should be utilized if decryption fails.\n *\n * @param array $keys\n * @return \\Illuminate\\Encryption\\Encrypter\n * @static\n */\n public static function previousKeys($keys)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->previousKeys($keys);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\DatabaseManager\n */\n class DB {\n /**\n * Get a database connection instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Build a database connection instance from the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Calculate the dynamic connection name for an on-demand connection based on its configuration.\n *\n * @param array $config\n * @return string\n * @static\n */\n public static function calculateDynamicConnectionName($config)\n {\n return \\Illuminate\\Database\\DatabaseManager::calculateDynamicConnectionName($config);\n }\n\n /**\n * Get a database connection instance from the given configuration.\n *\n * @param \\UnitEnum|string $name\n * @param array $config\n * @param bool $force\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function connectUsing($name, $config, $force = false)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connectUsing($name, $config, $force);\n }\n\n /**\n * Disconnect from the given database and remove from local cache.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Disconnect from the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Reconnect to the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function reconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Set the default database connection for the callback execution.\n *\n * @param \\UnitEnum|string $name\n * @param callable $callback\n * @return mixed\n * @static\n */\n public static function usingConnection($name, $callback)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->usingConnection($name, $callback);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Get all of the supported drivers.\n *\n * @return string[]\n * @static\n */\n public static function supportedDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->supportedDrivers();\n }\n\n /**\n * Get all of the drivers that are actually available.\n *\n * @return string[]\n * @static\n */\n public static function availableDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->availableDrivers();\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Remove an extension connection resolver.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function forgetExtension($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->forgetExtension($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string, \\Illuminate\\Database\\Connection>\n * @static\n */\n public static function getConnections()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Set the database reconnector callback.\n *\n * @param callable $reconnector\n * @return void\n * @static\n */\n public static function setReconnector($reconnector)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setReconnector($reconnector);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Database\\DatabaseManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\DatabaseManager::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\DatabaseManager::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Database\\DatabaseManager::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\DatabaseManager::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a human-readable name for the given connection driver.\n *\n * @return string\n * @static\n */\n public static function getDriverTitle()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverTitle();\n }\n\n /**\n * Determine if the connected database is a MariaDB database.\n *\n * @return bool\n * @static\n */\n public static function isMaria()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->isMaria();\n }\n\n /**\n * Get the server version for the connection.\n *\n * @return string\n * @static\n */\n public static function getServerVersion()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getServerVersion();\n }\n\n /**\n * Get a schema builder instance for the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\MariaDbBuilder\n * @static\n */\n public static function getSchemaBuilder()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaBuilder();\n }\n\n /**\n * Get the schema state for the connection.\n *\n * @param \\Illuminate\\Filesystem\\Filesystem|null $files\n * @param callable|null $processFactory\n * @return \\Illuminate\\Database\\Schema\\MariaDbSchemaState\n * @static\n */\n public static function getSchemaState($files = null, $processFactory = null)\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaState($files, $processFactory);\n }\n\n /**\n * Run an insert statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param string|null $sequence\n * @return bool\n * @static\n */\n public static function insert($query, $bindings = [], $sequence = null)\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->insert($query, $bindings, $sequence);\n }\n\n /**\n * Get the connection's last insert ID.\n *\n * @return string|int|null\n * @static\n */\n public static function getLastInsertId()\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getLastInsertId();\n }\n\n /**\n * Set the query grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultQueryGrammar();\n }\n\n /**\n * Set the schema grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultSchemaGrammar();\n }\n\n /**\n * Set the query post processor to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultPostProcessor();\n }\n\n /**\n * Begin a fluent query against a database table.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|\\UnitEnum|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function table($table, $as = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->table($table, $as);\n }\n\n /**\n * Get a new query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function query()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->query();\n }\n\n /**\n * Run a select statement and return a single result.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @static\n */\n public static function selectOne($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectOne($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement and return the first column of the first row.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @throws \\Illuminate\\Database\\MultipleColumnsSelectedException\n * @static\n */\n public static function scalar($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->scalar($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return array\n * @static\n */\n public static function selectFromWriteConnection($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectFromWriteConnection($query, $bindings);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function select($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->select($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns all of the result sets.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function selectResultSets($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectResultSets($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns a generator.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return \\Generator<int, \\stdClass>\n * @static\n */\n public static function cursor($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->cursor($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run an update statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function update($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->update($query, $bindings);\n }\n\n /**\n * Run a delete statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function delete($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->delete($query, $bindings);\n }\n\n /**\n * Execute an SQL statement and return the boolean result.\n *\n * @param string $query\n * @param array $bindings\n * @return bool\n * @static\n */\n public static function statement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->statement($query, $bindings);\n }\n\n /**\n * Run an SQL statement and get the number of rows affected.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function affectingStatement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->affectingStatement($query, $bindings);\n }\n\n /**\n * Run a raw, unprepared query against the PDO connection.\n *\n * @param string $query\n * @return bool\n * @static\n */\n public static function unprepared($query)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->unprepared($query);\n }\n\n /**\n * Get the number of open connections for the database.\n *\n * @return int|null\n * @static\n */\n public static function threadCount()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->threadCount();\n }\n\n /**\n * Execute the given callback in \"dry run\" mode.\n *\n * @param (\\Closure(\\Illuminate\\Database\\Connection): mixed) $callback\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function pretend($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretend($callback);\n }\n\n /**\n * Execute the given callback without \"pretending\".\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutPretending($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutPretending($callback);\n }\n\n /**\n * Bind values to their parameters in the given statement.\n *\n * @param \\PDOStatement $statement\n * @param array $bindings\n * @return void\n * @static\n */\n public static function bindValues($statement, $bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->bindValues($statement, $bindings);\n }\n\n /**\n * Prepare the query bindings for execution.\n *\n * @param array $bindings\n * @return array\n * @static\n */\n public static function prepareBindings($bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->prepareBindings($bindings);\n }\n\n /**\n * Log a query in the connection's query log.\n *\n * @param string $query\n * @param array $bindings\n * @param float|null $time\n * @return void\n * @static\n */\n public static function logQuery($query, $bindings, $time = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->logQuery($query, $bindings, $time);\n }\n\n /**\n * Register a callback to be invoked when the connection queries for longer than a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param (callable(\\Illuminate\\Database\\Connection, \\Illuminate\\Database\\Events\\QueryExecuted): mixed) $handler\n * @return void\n * @static\n */\n public static function whenQueryingForLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->whenQueryingForLongerThan($threshold, $handler);\n }\n\n /**\n * Allow all the query duration handlers to run again, even if they have already run.\n *\n * @return void\n * @static\n */\n public static function allowQueryDurationHandlersToRunAgain()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->allowQueryDurationHandlersToRunAgain();\n }\n\n /**\n * Get the duration of all run queries in milliseconds.\n *\n * @return float\n * @static\n */\n public static function totalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->totalQueryDuration();\n }\n\n /**\n * Reset the duration of all run queries.\n *\n * @return void\n * @static\n */\n public static function resetTotalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->resetTotalQueryDuration();\n }\n\n /**\n * Reconnect to the database if a PDO connection is missing.\n *\n * @return void\n * @static\n */\n public static function reconnectIfMissingConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->reconnectIfMissingConnection();\n }\n\n /**\n * Register a hook to be run just before a database transaction is started.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeStartingTransaction($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeStartingTransaction($callback);\n }\n\n /**\n * Register a hook to be run just before a database query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeExecuting($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeExecuting($callback);\n }\n\n /**\n * Register a database query listener with the connection.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function listen($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->listen($callback);\n }\n\n /**\n * Get a new raw query expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->raw($value);\n }\n\n /**\n * Escape a value for safe SQL embedding.\n *\n * @param string|float|int|bool|null $value\n * @param bool $binary\n * @return string\n * @static\n */\n public static function escape($value, $binary = false)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->escape($value, $binary);\n }\n\n /**\n * Determine if the database connection has modified any database records.\n *\n * @return bool\n * @static\n */\n public static function hasModifiedRecords()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->hasModifiedRecords();\n }\n\n /**\n * Indicate if any records have been modified.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function recordsHaveBeenModified($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->recordsHaveBeenModified($value);\n }\n\n /**\n * Set the record modification state.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setRecordModificationState($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setRecordModificationState($value);\n }\n\n /**\n * Reset the record modification state.\n *\n * @return void\n * @static\n */\n public static function forgetRecordModificationState()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->forgetRecordModificationState();\n }\n\n /**\n * Indicate that the connection should use the write PDO connection for reads.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function useWriteConnectionWhenReading($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->useWriteConnectionWhenReading($value);\n }\n\n /**\n * Get the current PDO connection.\n *\n * @return \\PDO\n * @static\n */\n public static function getPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPdo();\n }\n\n /**\n * Get the current PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawPdo();\n }\n\n /**\n * Get the current PDO connection used for reading.\n *\n * @return \\PDO\n * @static\n */\n public static function getReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getReadPdo();\n }\n\n /**\n * Get the current read PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawReadPdo();\n }\n\n /**\n * Set the PDO connection.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPdo($pdo);\n }\n\n /**\n * Set the PDO connection used for reading.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadPdo($pdo);\n }\n\n /**\n * Get the database connection name.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getName();\n }\n\n /**\n * Get the database connection full name.\n *\n * @return string|null\n * @static\n */\n public static function getNameWithReadWriteType()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getNameWithReadWriteType();\n }\n\n /**\n * Get an option from the configuration options.\n *\n * @param string|null $option\n * @return mixed\n * @static\n */\n public static function getConfig($option = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getConfig($option);\n }\n\n /**\n * Get the PDO driver name.\n *\n * @return string\n * @static\n */\n public static function getDriverName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverName();\n }\n\n /**\n * Get the query grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryGrammar();\n }\n\n /**\n * Set the query grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setQueryGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setQueryGrammar($grammar);\n }\n\n /**\n * Get the schema grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\Grammars\\Grammar\n * @static\n */\n public static function getSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaGrammar();\n }\n\n /**\n * Set the schema grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Schema\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setSchemaGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setSchemaGrammar($grammar);\n }\n\n /**\n * Get the query post processor used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPostProcessor();\n }\n\n /**\n * Set the query post processor used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Processors\\Processor $processor\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPostProcessor($processor)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPostProcessor($processor);\n }\n\n /**\n * Get the event dispatcher used by the connection.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance on the connection.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setEventDispatcher($events)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setEventDispatcher($events);\n }\n\n /**\n * Unset the event dispatcher for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetEventDispatcher();\n }\n\n /**\n * Set the transaction manager instance on the connection.\n *\n * @param \\Illuminate\\Database\\DatabaseTransactionsManager $manager\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTransactionManager($manager)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTransactionManager($manager);\n }\n\n /**\n * Unset the transaction manager for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetTransactionManager()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetTransactionManager();\n }\n\n /**\n * Determine if the connection is in a \"dry run\".\n *\n * @return bool\n * @static\n */\n public static function pretending()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretending();\n }\n\n /**\n * Get the connection query log.\n *\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function getQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryLog();\n }\n\n /**\n * Get the connection query log with embedded bindings.\n *\n * @return array\n * @static\n */\n public static function getRawQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawQueryLog();\n }\n\n /**\n * Clear the query log.\n *\n * @return void\n * @static\n */\n public static function flushQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->flushQueryLog();\n }\n\n /**\n * Enable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function enableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->enableQueryLog();\n }\n\n /**\n * Disable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function disableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->disableQueryLog();\n }\n\n /**\n * Determine whether we're logging queries.\n *\n * @return bool\n * @static\n */\n public static function logging()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->logging();\n }\n\n /**\n * Get the name of the connected database.\n *\n * @return string\n * @static\n */\n public static function getDatabaseName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDatabaseName();\n }\n\n /**\n * Set the name of the connected database.\n *\n * @param string $database\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setDatabaseName($database)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setDatabaseName($database);\n }\n\n /**\n * Set the read / write type of the connection.\n *\n * @param string|null $readWriteType\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadWriteType($readWriteType)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadWriteType($readWriteType);\n }\n\n /**\n * Get the table prefix for the connection.\n *\n * @return string\n * @static\n */\n public static function getTablePrefix()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getTablePrefix();\n }\n\n /**\n * Set the table prefix in use by the connection.\n *\n * @param string $prefix\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTablePrefix($prefix)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTablePrefix($prefix);\n }\n\n /**\n * Execute the given callback without table prefix.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutTablePrefix($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutTablePrefix($callback);\n }\n\n /**\n * Register a connection resolver.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function resolverFor($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n \\Illuminate\\Database\\MariaDbConnection::resolverFor($driver, $callback);\n }\n\n /**\n * Get the connection resolver for the given driver.\n *\n * @param string $driver\n * @return \\Closure|null\n * @static\n */\n public static function getResolver($driver)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n return \\Illuminate\\Database\\MariaDbConnection::getResolver($driver);\n }\n\n /**\n * @template TReturn of mixed\n * \n * Execute a Closure within a transaction.\n * @param (\\Closure(static): TReturn) $callback\n * @param int $attempts\n * @return TReturn\n * @throws \\Throwable\n * @static\n */\n public static function transaction($callback, $attempts = 1)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transaction($callback, $attempts);\n }\n\n /**\n * Start a new database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function beginTransaction()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->beginTransaction();\n }\n\n /**\n * Commit the active database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function commit()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->commit();\n }\n\n /**\n * Rollback the active database transaction.\n *\n * @param int|null $toLevel\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function rollBack($toLevel = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->rollBack($toLevel);\n }\n\n /**\n * Get the number of active transactions.\n *\n * @return int\n * @static\n */\n public static function transactionLevel()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transactionLevel();\n }\n\n /**\n * Execute the callback after a transaction commits.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterCommit($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterCommit($callback);\n }\n\n /**\n * Execute the callback after a transaction rolls back.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterRollBack($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterRollBack($callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Events\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n */\n class Event {\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|string $events\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|null $listener\n * @return void\n * @static\n */\n public static function listen($events, $listener = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->listen($events, $listener);\n }\n\n /**\n * Determine if a given event has listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasListeners($eventName);\n }\n\n /**\n * Determine if the given event has any wildcard listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasWildcardListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasWildcardListeners($eventName);\n }\n\n /**\n * Register an event and payload to be fired later.\n *\n * @param string $event\n * @param object|array $payload\n * @return void\n * @static\n */\n public static function push($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->push($event, $payload);\n }\n\n /**\n * Flush a set of pushed events.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function flush($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->flush($event);\n }\n\n /**\n * Register an event subscriber with the dispatcher.\n *\n * @param object|string $subscriber\n * @return void\n * @static\n */\n public static function subscribe($subscriber)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->subscribe($subscriber);\n }\n\n /**\n * Fire an event until the first non-null response is returned.\n *\n * @param string|object $event\n * @param mixed $payload\n * @return mixed\n * @static\n */\n public static function until($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->until($event, $payload);\n }\n\n /**\n * Fire an event and call the listeners.\n *\n * @param string|object $event\n * @param mixed $payload\n * @param bool $halt\n * @return array|null\n * @static\n */\n public static function dispatch($event, $payload = [], $halt = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->dispatch($event, $payload, $halt);\n }\n\n /**\n * Get all of the listeners for a given event name.\n *\n * @param string $eventName\n * @return array\n * @static\n */\n public static function getListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getListeners($eventName);\n }\n\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Closure|string|array $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function makeListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->makeListener($listener, $wildcard);\n }\n\n /**\n * Create a class based listener using the IoC container.\n *\n * @param string $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function createClassListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->createClassListener($listener, $wildcard);\n }\n\n /**\n * Remove a set of listeners from the dispatcher.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function forget($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forget($event);\n }\n\n /**\n * Forget all of the pushed listeners.\n *\n * @return void\n * @static\n */\n public static function forgetPushed()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forgetPushed();\n }\n\n /**\n * Set the queue resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setQueueResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setQueueResolver($resolver);\n }\n\n /**\n * Set the database transaction manager resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setTransactionManagerResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setTransactionManagerResolver($resolver);\n }\n\n /**\n * Execute the given callback while deferring events, then dispatch all deferred events.\n *\n * @param callable $callback\n * @param array|null $events\n * @return mixed\n * @static\n */\n public static function defer($callback, $events = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->defer($callback, $events);\n }\n\n /**\n * Gets the raw, unprepared listeners.\n *\n * @return array\n * @static\n */\n public static function getRawListeners()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getRawListeners();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Events\\Dispatcher::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Events\\Dispatcher::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Events\\Dispatcher::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Events\\Dispatcher::flushMacros();\n }\n\n /**\n * Specify the events that should be dispatched instead of faked.\n *\n * @param array|string $eventsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n * @static\n */\n public static function except($eventsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->except($eventsToDispatch);\n }\n\n /**\n * Assert if an event has a listener attached to it.\n *\n * @param string $expectedEvent\n * @param string|array $expectedListener\n * @return void\n * @static\n */\n public static function assertListening($expectedEvent, $expectedListener)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertListening($expectedEvent, $expectedListener);\n }\n\n /**\n * Assert if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatched($event, $callback);\n }\n\n /**\n * Assert if an event was dispatched exactly once.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedOnce($event);\n }\n\n /**\n * Assert if an event was dispatched a number of times.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($event, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedTimes($event, $times);\n }\n\n /**\n * Determine if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNotDispatched($event, $callback);\n }\n\n /**\n * Assert that no events were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Get all of the events matching a truth-test callback.\n *\n * @param string $event\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatched($event, $callback);\n }\n\n /**\n * Determine if the given event has been dispatched.\n *\n * @param string $event\n * @return bool\n * @static\n */\n public static function hasDispatched($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->hasDispatched($event);\n }\n\n /**\n * Get the events that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedEvents()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatchedEvents();\n }\n\n }\n /**\n * @see \\Illuminate\\Filesystem\\Filesystem\n */\n class File {\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->missing($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @param bool $lock\n * @return string\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function get($path, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->get($path, $lock);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @param bool $lock\n * @return array\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function json($path, $flags = 0, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->json($path, $flags, $lock);\n }\n\n /**\n * Get contents of a file with shared access.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function sharedGet($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->sharedGet($path);\n }\n\n /**\n * Get the returned value of a file.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function getRequire($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->getRequire($path, $data);\n }\n\n /**\n * Require the given file once.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function requireOnce($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->requireOnce($path, $data);\n }\n\n /**\n * Get the contents of a file one line at a time.\n *\n * @param string $path\n * @return \\Illuminate\\Support\\LazyCollection\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function lines($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lines($path);\n }\n\n /**\n * Get the hash of the file at the given path.\n *\n * @param string $path\n * @param string $algorithm\n * @return string|false\n * @static\n */\n public static function hash($path, $algorithm = 'md5')\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hash($path, $algorithm);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param string $contents\n * @param bool $lock\n * @return int|bool\n * @static\n */\n public static function put($path, $contents, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->put($path, $contents, $lock);\n }\n\n /**\n * Write the contents of a file, replacing it atomically if it already exists.\n *\n * @param string $path\n * @param string $content\n * @param int|null $mode\n * @return void\n * @static\n */\n public static function replace($path, $content, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replace($path, $content, $mode);\n }\n\n /**\n * Replace a given string within a given file.\n *\n * @param array|string $search\n * @param array|string $replace\n * @param string $path\n * @return void\n * @static\n */\n public static function replaceInFile($search, $replace, $path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replaceInFile($search, $replace, $path);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @return int\n * @static\n */\n public static function prepend($path, $data)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->prepend($path, $data);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param bool $lock\n * @return int\n * @static\n */\n public static function append($path, $data, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->append($path, $data, $lock);\n }\n\n /**\n * Get or set UNIX mode of a file or directory.\n *\n * @param string $path\n * @param int|null $mode\n * @return mixed\n * @static\n */\n public static function chmod($path, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->chmod($path, $mode);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function move($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->move($path, $target);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function copy($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copy($path, $target);\n }\n\n /**\n * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file.\n *\n * @param string $target\n * @param string $link\n * @return bool|null\n * @static\n */\n public static function link($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->link($target, $link);\n }\n\n /**\n * Create a relative symlink to the target file or directory.\n *\n * @param string $target\n * @param string $link\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function relativeLink($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->relativeLink($target, $link);\n }\n\n /**\n * Extract the file name from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function name($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->name($path);\n }\n\n /**\n * Extract the trailing name component from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basename($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->basename($path);\n }\n\n /**\n * Extract the parent directory from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function dirname($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->dirname($path);\n }\n\n /**\n * Extract the file extension from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function extension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->extension($path);\n }\n\n /**\n * Guess the file extension from the mime-type of a given file.\n *\n * @param string $path\n * @return string|null\n * @throws \\RuntimeException\n * @static\n */\n public static function guessExtension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->guessExtension($path);\n }\n\n /**\n * Get the file type of a given file.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function type($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->type($path);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Determine if the given path is a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function isDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isDirectory($directory);\n }\n\n /**\n * Determine if the given path is a directory that does not contain any other files or directories.\n *\n * @param string $directory\n * @param bool $ignoreDotFiles\n * @return bool\n * @static\n */\n public static function isEmptyDirectory($directory, $ignoreDotFiles = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isEmptyDirectory($directory, $ignoreDotFiles);\n }\n\n /**\n * Determine if the given path is readable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isReadable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isReadable($path);\n }\n\n /**\n * Determine if the given path is writable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isWritable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isWritable($path);\n }\n\n /**\n * Determine if two files are the same by comparing their hashes.\n *\n * @param string $firstFile\n * @param string $secondFile\n * @return bool\n * @static\n */\n public static function hasSameHash($firstFile, $secondFile)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hasSameHash($firstFile, $secondFile);\n }\n\n /**\n * Determine if the given path is a file.\n *\n * @param string $file\n * @return bool\n * @static\n */\n public static function isFile($file)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isFile($file);\n }\n\n /**\n * Find path names matching a given pattern.\n *\n * @param string $pattern\n * @param int $flags\n * @return array\n * @static\n */\n public static function glob($pattern, $flags = 0)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->glob($pattern, $flags);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function files($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->files($directory, $hidden);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function allFiles($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->allFiles($directory, $hidden);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string $directory\n * @return array\n * @static\n */\n public static function directories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->directories($directory);\n }\n\n /**\n * Ensure a directory exists.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @return void\n * @static\n */\n public static function ensureDirectoryExists($path, $mode = 493, $recursive = true)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->ensureDirectoryExists($path, $mode, $recursive);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @param bool $force\n * @return bool\n * @static\n */\n public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->makeDirectory($path, $mode, $recursive, $force);\n }\n\n /**\n * Move a directory.\n *\n * @param string $from\n * @param string $to\n * @param bool $overwrite\n * @return bool\n * @static\n */\n public static function moveDirectory($from, $to, $overwrite = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->moveDirectory($from, $to, $overwrite);\n }\n\n /**\n * Copy a directory from one location to another.\n *\n * @param string $directory\n * @param string $destination\n * @param int|null $options\n * @return bool\n * @static\n */\n public static function copyDirectory($directory, $destination, $options = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copyDirectory($directory, $destination, $options);\n }\n\n /**\n * Recursively delete a directory.\n * \n * The directory itself may be optionally preserved.\n *\n * @param string $directory\n * @param bool $preserve\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory, $preserve = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectory($directory, $preserve);\n }\n\n /**\n * Remove all of the directories within a given directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectories($directory);\n }\n\n /**\n * Empty the specified directory of all files and folders.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function cleanDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->cleanDirectory($directory);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Filesystem\\Filesystem::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Filesystem\\Filesystem::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Filesystem\\Filesystem::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Filesystem\\Filesystem::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\Access\\Gate\n */\n class Gate {\n /**\n * Determine if a given ability has been defined.\n *\n * @param string|array $ability\n * @return bool\n * @static\n */\n public static function has($ability)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->has($ability);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function allowIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allowIf($condition, $message, $code);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function denyIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyIf($condition, $message, $code);\n }\n\n /**\n * Define a new ability.\n *\n * @param \\UnitEnum|string $ability\n * @param callable|array|string $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function define($ability, $callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->define($ability, $callback);\n }\n\n /**\n * Define abilities for a resource.\n *\n * @param string $name\n * @param string $class\n * @param array|null $abilities\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function resource($name, $class, $abilities = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resource($name, $class, $abilities);\n }\n\n /**\n * Define a policy class for a given class type.\n *\n * @param string $class\n * @param string $policy\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function policy($class, $policy)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policy($class, $policy);\n }\n\n /**\n * Register a callback to run before all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->before($callback);\n }\n\n /**\n * Register a callback to run after all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->after($callback);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function allows($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allows($ability, $arguments);\n }\n\n /**\n * Determine if any of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function denies($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denies($ability, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function check($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->check($abilities, $arguments);\n }\n\n /**\n * Determine if any one of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function any($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->any($abilities, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function none($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->none($abilities, $arguments);\n }\n\n /**\n * Determine if the given ability should be granted for the current user.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function authorize($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->authorize($ability, $arguments);\n }\n\n /**\n * Inspect the user for the given ability.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function inspect($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->inspect($ability, $arguments);\n }\n\n /**\n * Get the raw result from the authorization callback.\n *\n * @param string $ability\n * @param mixed $arguments\n * @return mixed\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function raw($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->raw($ability, $arguments);\n }\n\n /**\n * Get a policy instance for a given class.\n *\n * @param object|string $class\n * @return mixed\n * @static\n */\n public static function getPolicyFor($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->getPolicyFor($class);\n }\n\n /**\n * Specify a callback to be used to guess policy names.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function guessPolicyNamesUsing($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->guessPolicyNamesUsing($callback);\n }\n\n /**\n * Build a policy class instance of the given type.\n *\n * @param object|string $class\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function resolvePolicy($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resolvePolicy($class);\n }\n\n /**\n * Get a gate instance for the given user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable|mixed $user\n * @return static\n * @static\n */\n public static function forUser($user)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->forUser($user);\n }\n\n /**\n * Get all of the defined abilities.\n *\n * @return array\n * @static\n */\n public static function abilities()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->abilities();\n }\n\n /**\n * Get all of the defined policies.\n *\n * @return array\n * @static\n */\n public static function policies()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policies();\n }\n\n /**\n * Set the default denial response for gates and policies.\n *\n * @param \\Illuminate\\Auth\\Access\\Response $response\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function defaultDenialResponse($response)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->defaultDenialResponse($response);\n }\n\n /**\n * Set the container instance used by the gate.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Deny with a HTTP status code.\n *\n * @param int $status\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyWithStatus($status, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyWithStatus($status, $message, $code);\n }\n\n /**\n * Deny with a 404 HTTP status code.\n *\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyAsNotFound($message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyAsNotFound($message, $code);\n }\n\n }\n /**\n * @see \\Illuminate\\Hashing\\HashManager\n * @see \\Illuminate\\Hashing\\AbstractHasher\n */\n class Hash {\n /**\n * Create an instance of the Bcrypt hash Driver.\n *\n * @return \\Illuminate\\Hashing\\BcryptHasher\n * @static\n */\n public static function createBcryptDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createBcryptDriver();\n }\n\n /**\n * Create an instance of the Argon2i hash Driver.\n *\n * @return \\Illuminate\\Hashing\\ArgonHasher\n * @static\n */\n public static function createArgonDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgonDriver();\n }\n\n /**\n * Create an instance of the Argon2id hash Driver.\n *\n * @return \\Illuminate\\Hashing\\Argon2IdHasher\n * @static\n */\n public static function createArgon2idDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgon2idDriver();\n }\n\n /**\n * Get information about the given hashed value.\n *\n * @param string $hashedValue\n * @return array\n * @static\n */\n public static function info($hashedValue)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->info($hashedValue);\n }\n\n /**\n * Hash the given value.\n *\n * @param string $value\n * @param array $options\n * @return string\n * @static\n */\n public static function make($value, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->make($value, $options);\n }\n\n /**\n * Check the given plain value against a hash.\n *\n * @param string $value\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function check($value, $hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->check($value, $hashedValue, $options);\n }\n\n /**\n * Check if the given hash has been hashed using the given options.\n *\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function needsRehash($hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->needsRehash($hashedValue, $options);\n }\n\n /**\n * Determine if a given string is already hashed.\n *\n * @param string $value\n * @return bool\n * @static\n */\n public static function isHashed($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->isHashed($value);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Verifies that the configuration is less than or equal to what is configured.\n *\n * @param array $value\n * @return bool\n * @internal\n * @static\n */\n public static function verifyConfiguration($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->verifyConfiguration($value);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @method static \\Illuminate\\Http\\Client\\PendingRequest baseUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBody(\\Psr\\Http\\Message\\StreamInterface|string $content, string $contentType = 'application/json')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asForm()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest attach(string|array $name, string|resource $contents = '', string|null $filename = null, array $headers = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asMultipart()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest bodyFormat(string $format)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withQueryParameters(array $parameters)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest contentType(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest acceptJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest accept(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeader(string $name, mixed $value)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest replaceHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBasicAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withDigestAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withNtlmAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withToken(string $token, string $type = 'Bearer')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUserAgent(string|bool $userAgent)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUrlParameters(array $parameters = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withCookies(array $cookies, string $domain)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest maxRedirects(int $max)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutRedirecting()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutVerifying()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest sink(string|resource $to)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest timeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest connectTimeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest retry(array|int $times, \\Closure|int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withOptions(array $options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withRequestMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withResponseMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest beforeSending(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throw(callable|null $callback = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwIf(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwUnless(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dump()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dd()\n * @method static \\Illuminate\\Http\\Client\\Response get(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response head(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response post(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response patch(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response put(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response delete(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static array pool(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Batch batch(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Response send(string $method, string $url, array $options = [])\n * @method static \\GuzzleHttp\\Client buildClient()\n * @method static \\GuzzleHttp\\Client createClient(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\GuzzleHttp\\HandlerStack buildHandlerStack()\n * @method static \\GuzzleHttp\\HandlerStack pushHandlers(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\Closure buildBeforeSendingHandler()\n * @method static \\Closure buildRecorderHandler()\n * @method static \\Closure buildStubHandler()\n * @method static \\GuzzleHttp\\Psr7\\RequestInterface runBeforeSendingCallbacks(\\GuzzleHttp\\Psr7\\RequestInterface $request, array $options)\n * @method static array mergeOptions(array ...$options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest stub(callable $callback)\n * @method static bool isAllowedRequestUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest async(bool $async = true)\n * @method static \\GuzzleHttp\\Promise\\PromiseInterface|null getPromise()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest truncateExceptionsAt(int $length)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dontTruncateExceptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setClient(\\GuzzleHttp\\Client $client)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setHandler(callable $handler)\n * @method static array getOptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Http\\Client\\Factory\n */\n class Http {\n /**\n * Add middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalMiddleware($middleware);\n }\n\n /**\n * Add request middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalRequestMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalRequestMiddleware($middleware);\n }\n\n /**\n * Add response middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalResponseMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalResponseMiddleware($middleware);\n }\n\n /**\n * Set the options to apply to every request.\n *\n * @param \\Closure|array $options\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalOptions($options)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalOptions($options);\n }\n\n /**\n * Create a new response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array $headers\n * @return \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::response($body, $status, $headers);\n }\n\n /**\n * Create a new PSR-7 response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\GuzzleHttp\\Psr7\\Response\n * @static\n */\n public static function psr7Response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::psr7Response($body, $status, $headers);\n }\n\n /**\n * Create a new RequestException instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\Illuminate\\Http\\Client\\RequestException\n * @static\n */\n public static function failedRequest($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::failedRequest($body, $status, $headers);\n }\n\n /**\n * Create a new connection exception for use during stubbing.\n *\n * @param string|null $message\n * @return \\Closure(\\Illuminate\\Http\\Client\\Request): \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function failedConnection($message = null)\n {\n return \\Illuminate\\Http\\Client\\Factory::failedConnection($message);\n }\n\n /**\n * Get an invokable object that returns a sequence of responses in order for use during stubbing.\n *\n * @param array $responses\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function sequence($responses = [])\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->sequence($responses);\n }\n\n /**\n * Register a stub callable that will intercept requests and be able to return stub responses.\n *\n * @param callable|array<string, mixed>|null $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Register a response sequence for the given URL pattern.\n *\n * @param string $url\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function fakeSequence($url = '*')\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fakeSequence($url);\n }\n\n /**\n * Stub the given URL using the given callback.\n *\n * @param string $url\n * @param \\Illuminate\\Http\\Client\\Response|\\GuzzleHttp\\Promise\\PromiseInterface|callable|int|string|array|\\Illuminate\\Http\\Client\\ResponseSequence $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function stubUrl($url, $callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->stubUrl($url, $callback);\n }\n\n /**\n * Indicate that an exception should be thrown if any request is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function preventStrayRequests($prevent = true)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventStrayRequests($prevent);\n }\n\n /**\n * Determine if stray requests are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayRequests()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventingStrayRequests();\n }\n\n /**\n * Allow stray, unfaked requests entirely, or optionally allow only specific URLs.\n *\n * @param array<int, string>|null $only\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function allowStrayRequests($only = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->allowStrayRequests($only);\n }\n\n /**\n * Begin recording request / response pairs.\n *\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function record()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->record();\n }\n\n /**\n * Record a request response pair.\n *\n * @param \\Illuminate\\Http\\Client\\Request $request\n * @param \\Illuminate\\Http\\Client\\Response|null $response\n * @return void\n * @static\n */\n public static function recordRequestResponsePair($request, $response)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->recordRequestResponsePair($request, $response);\n }\n\n /**\n * Assert that a request / response pair was recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSent($callback);\n }\n\n /**\n * Assert that the given request was sent in the given order.\n *\n * @param list<string|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable> $callbacks\n * @return void\n * @static\n */\n public static function assertSentInOrder($callbacks)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentInOrder($callbacks);\n }\n\n /**\n * Assert that a request / response pair was not recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertNotSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNotSent($callback);\n }\n\n /**\n * Assert that no request / response pair was recorded.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert how many requests have been recorded.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert that every created response sequence is empty.\n *\n * @return void\n * @static\n */\n public static function assertSequencesAreEmpty()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSequencesAreEmpty();\n }\n\n /**\n * Get a collection of the request / response pairs matching the given truth test.\n *\n * @param (\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable $callback\n * @return \\Illuminate\\Support\\Collection<int, array{0: \\Illuminate\\Http\\Client\\Request, 1: \\Illuminate\\Http\\Client\\Response|null}>\n * @static\n */\n public static function recorded($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->recorded($callback);\n }\n\n /**\n * Create a new pending request instance for this factory.\n *\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function createPendingRequest()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->createPendingRequest();\n }\n\n /**\n * Get the current event dispatcher implementation.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Get the array of global middleware.\n *\n * @return array\n * @static\n */\n public static function getGlobalMiddleware()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getGlobalMiddleware();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Client\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Client\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Client\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Client\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n /**\n * @see \\Illuminate\\Translation\\Translator\n */\n class Lang {\n /**\n * Determine if a translation exists for a given locale.\n *\n * @param string $key\n * @param string|null $locale\n * @return bool\n * @static\n */\n public static function hasForLocale($key, $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->hasForLocale($key, $locale);\n }\n\n /**\n * Determine if a translation exists.\n *\n * @param string $key\n * @param string|null $locale\n * @param bool $fallback\n * @return bool\n * @static\n */\n public static function has($key, $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->has($key, $locale, $fallback);\n }\n\n /**\n * Get the translation for the given key.\n *\n * @param string $key\n * @param array $replace\n * @param string|null $locale\n * @param bool $fallback\n * @return string|array\n * @static\n */\n public static function get($key, $replace = [], $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->get($key, $replace, $locale, $fallback);\n }\n\n /**\n * Get a translation according to an integer value.\n *\n * @param string $key\n * @param \\Countable|int|float|array $number\n * @param array $replace\n * @param string|null $locale\n * @return string\n * @static\n */\n public static function choice($key, $number, $replace = [], $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->choice($key, $number, $replace, $locale);\n }\n\n /**\n * Add translation lines to the given locale.\n *\n * @param array $lines\n * @param string $locale\n * @param string $namespace\n * @return void\n * @static\n */\n public static function addLines($lines, $locale, $namespace = '*')\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addLines($lines, $locale, $namespace);\n }\n\n /**\n * Load the specified language group.\n *\n * @param string $namespace\n * @param string $group\n * @param string $locale\n * @return void\n * @static\n */\n public static function load($namespace, $group, $locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->load($namespace, $group, $locale);\n }\n\n /**\n * Register a callback that is responsible for handling missing translation keys.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleMissingKeysUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->handleMissingKeysUsing($callback);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string $hint\n * @return void\n * @static\n */\n public static function addNamespace($namespace, $hint)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addNamespace($namespace, $hint);\n }\n\n /**\n * Add a new path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addPath($path);\n }\n\n /**\n * Add a new JSON path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addJsonPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addJsonPath($path);\n }\n\n /**\n * Parse a key into namespace, group, and item.\n *\n * @param string $key\n * @return array\n * @static\n */\n public static function parseKey($key)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->parseKey($key);\n }\n\n /**\n * Specify a callback that should be invoked to determined the applicable locale array.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function determineLocalesUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->determineLocalesUsing($callback);\n }\n\n /**\n * Get the message selector instance.\n *\n * @return \\Illuminate\\Translation\\MessageSelector\n * @static\n */\n public static function getSelector()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getSelector();\n }\n\n /**\n * Set the message selector instance.\n *\n * @param \\Illuminate\\Translation\\MessageSelector $selector\n * @return void\n * @static\n */\n public static function setSelector($selector)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setSelector($selector);\n }\n\n /**\n * Get the language line loader implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Loader\n * @static\n */\n public static function getLoader()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLoader();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function locale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->locale();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLocale();\n }\n\n /**\n * Set the default locale.\n *\n * @param string $locale\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Get the fallback locale being used.\n *\n * @return string\n * @static\n */\n public static function getFallback()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getFallback();\n }\n\n /**\n * Set the fallback locale being used.\n *\n * @param string $fallback\n * @return void\n * @static\n */\n public static function setFallback($fallback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setFallback($fallback);\n }\n\n /**\n * Set the loaded translation groups.\n *\n * @param array $loaded\n * @return void\n * @static\n */\n public static function setLoaded($loaded)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLoaded($loaded);\n }\n\n /**\n * Add a handler to be executed in order to format a given class to a string during translation replacements.\n *\n * @param callable|string $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Set the parsed value of a key.\n *\n * @param string $key\n * @param array $parsed\n * @return void\n * @static\n */\n public static function setParsedKey($key, $parsed)\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setParsedKey($key, $parsed);\n }\n\n /**\n * Flush the cache of parsed keys.\n *\n * @return void\n * @static\n */\n public static function flushParsedKeys()\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->flushParsedKeys();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Translation\\Translator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Translation\\Translator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Translation\\Translator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Translation\\Translator::flushMacros();\n }\n\n }\n /**\n * @method static void write(string $level, \\Illuminate\\Contracts\\Support\\Arrayable|\\Illuminate\\Contracts\\Support\\Jsonable|\\Illuminate\\Support\\Stringable|array|string $message, array $context = [])\n * @method static \\Illuminate\\Log\\Logger withContext(array $context = [])\n * @method static void listen(\\Closure $callback)\n * @method static \\Psr\\Log\\LoggerInterface getLogger()\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $dispatcher)\n * @method static \\Illuminate\\Log\\Logger|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Log\\Logger|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Log\\LogManager\n */\n class Log {\n /**\n * Build an on-demand log channel.\n *\n * @param array $config\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new, on-demand aggregate logger instance.\n *\n * @param array $channels\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function stack($channels, $channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->stack($channels, $channel);\n }\n\n /**\n * Get a log channel instance.\n *\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function channel($channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->channel($channel);\n }\n\n /**\n * Get a log driver instance.\n *\n * @param string|null $driver\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Share context across channels and stacks.\n *\n * @param array $context\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function shareContext($context)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->shareContext($context);\n }\n\n /**\n * The context shared across channels and stacks.\n *\n * @return array\n * @static\n */\n public static function sharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->sharedContext();\n }\n\n /**\n * Flush the log context on all currently resolved channels.\n *\n * @param string[]|null $keys\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function withoutContext($keys = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->withoutContext($keys);\n }\n\n /**\n * Flush the shared context.\n *\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function flushSharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->flushSharedContext();\n }\n\n /**\n * Get the default log driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default log driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Unset the given channel instance.\n *\n * @param string|null $driver\n * @return void\n * @static\n */\n public static function forgetChannel($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->forgetChannel($driver);\n }\n\n /**\n * Get all of the resolved log channels.\n *\n * @return array\n * @static\n */\n public static function getChannels()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getChannels();\n }\n\n /**\n * System is unusable.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function emergency($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->emergency($message, $context);\n }\n\n /**\n * Action must be taken immediately.\n * \n * Example: Entire website down, database unavailable, etc. This should\n * trigger the SMS alerts and wake you up.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function alert($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->alert($message, $context);\n }\n\n /**\n * Critical conditions.\n * \n * Example: Application component unavailable, unexpected exception.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function critical($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->critical($message, $context);\n }\n\n /**\n * Runtime errors that do not require immediate action but should typically\n * be logged and monitored.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function error($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->error($message, $context);\n }\n\n /**\n * Exceptional occurrences that are not errors.\n * \n * Example: Use of deprecated APIs, poor use of an API, undesirable things\n * that are not necessarily wrong.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function warning($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->warning($message, $context);\n }\n\n /**\n * Normal but significant events.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function notice($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->notice($message, $context);\n }\n\n /**\n * Interesting events.\n * \n * Example: User logs in, SQL logs.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function info($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->info($message, $context);\n }\n\n /**\n * Detailed debug information.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function debug($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->debug($message, $context);\n }\n\n /**\n * Logs with an arbitrary level.\n *\n * @param mixed $level\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function log($level, $message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->log($level, $message, $context);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @method static void alwaysFrom(string $address, string|null $name = null)\n * @method static void alwaysReplyTo(string $address, string|null $name = null)\n * @method static void alwaysReturnPath(string $address)\n * @method static void alwaysTo(string $address, string|null $name = null)\n * @method static \\Illuminate\\Mail\\SentMessage|null html(string $html, mixed $callback)\n * @method static \\Illuminate\\Mail\\SentMessage|null plain(string $view, array $data, mixed $callback)\n * @method static string render(string|array $view, array $data = [])\n * @method static mixed onQueue(\\BackedEnum|string|null $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed queueOn(string $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed laterOn(string $queue, \\DateTimeInterface|\\DateInterval|int $delay, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static \\Symfony\\Component\\Mailer\\Transport\\TransportInterface getSymfonyTransport()\n * @method static \\Illuminate\\Contracts\\View\\Factory getViewFactory()\n * @method static void setSymfonyTransport(\\Symfony\\Component\\Mailer\\Transport\\TransportInterface $transport)\n * @method static \\Illuminate\\Mail\\Mailer setQueue(\\Illuminate\\Contracts\\Queue\\Factory $queue)\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @see \\Illuminate\\Mail\\MailManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\MailFake\n */\n class Mail {\n /**\n * Get a mailer instance by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Mail\\Mailer\n * @static\n */\n public static function mailer($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->mailer($name);\n }\n\n /**\n * Get a mailer driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Build a new mailer instance.\n *\n * @param array $config\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new transport instance.\n *\n * @param array $config\n * @return \\Symfony\\Component\\Mailer\\Transport\\TransportInterface\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createSymfonyTransport($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->createSymfonyTransport($config);\n }\n\n /**\n * Get the default mail driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default mail driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given mailer and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom transport creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved mailer instances.\n *\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function forgetMailers()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->forgetMailers();\n }\n\n /**\n * Assert if a mailable was sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSent($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent or queued to be sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotOutgoing($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotOutgoing($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotSent($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were sent or queued to be sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingOutgoing()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingOutgoing();\n }\n\n /**\n * Assert that no mailables were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert if a mailable was queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueued($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotQueued($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were queued.\n *\n * @return void\n * @static\n */\n public static function assertNothingQueued()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingQueued();\n }\n\n /**\n * Assert the total number of mailables that were sent.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert the total number of mailables that were queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertQueuedCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueuedCount($count);\n }\n\n /**\n * Assert the total number of mailables that were sent or queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertOutgoingCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertOutgoingCount($count);\n }\n\n /**\n * Get all of the mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->sent($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been sent.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasSent($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasSent($mailable);\n }\n\n /**\n * Get all of the queued mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function queued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queued($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been queued.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasQueued($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasQueued($mailable);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function to($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->to($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function cc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->cc($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function bcc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->bcc($users);\n }\n\n /**\n * Send a new message with only a raw text part.\n *\n * @param string $text\n * @param \\Closure|string $callback\n * @return void\n * @static\n */\n public static function raw($text, $callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->raw($text, $callback);\n }\n\n /**\n * Send a new message using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return mixed|void\n * @static\n */\n public static function send($view, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->send($view, $data, $callback);\n }\n\n /**\n * Send a new message synchronously using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $mailable\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return void\n * @static\n */\n public static function sendNow($mailable, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->sendNow($mailable, $data, $callback);\n }\n\n /**\n * Queue a new message for sending.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function queue($view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queue($view, $queue);\n }\n\n /**\n * Queue a new e-mail message for sending after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->later($delay, $view, $queue);\n }\n\n }\n /**\n * @see \\Illuminate\\Notifications\\ChannelManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n */\n class Notification {\n /**\n * Send the given notification to the given notifiable entities.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @return void\n * @static\n */\n public static function send($notifiables, $notification)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->send($notifiables, $notification);\n }\n\n /**\n * Send the given notification immediately.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @param array|null $channels\n * @return void\n * @static\n */\n public static function sendNow($notifiables, $notification, $channels = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->sendNow($notifiables, $notification, $channels);\n }\n\n /**\n * Get a channel instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function channel($name = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->channel($name);\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function deliversVia()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->deliversVia();\n }\n\n /**\n * Set the default channel driver name.\n *\n * @param string $channel\n * @return void\n * @static\n */\n public static function deliverVia($channel)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->deliverVia($channel);\n }\n\n /**\n * Set the locale of notifications.\n *\n * @param string $locale\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function locale($locale)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->locale($locale);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Assert if a notification was sent on-demand based on a truth-test callback.\n *\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentOnDemand($notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemand($notification, $callback);\n }\n\n /**\n * Assert if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert if a notification was sent on-demand a number of times.\n *\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentOnDemandTimes($notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemandTimes($notification, $times);\n }\n\n /**\n * Assert if a notification was sent a number of times.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentToTimes($notifiable, $notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentToTimes($notifiable, $notification, $times);\n }\n\n /**\n * Determine if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNotSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNotSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert that no notifications were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert that no notifications were sent to the given notifiable.\n *\n * @param mixed $notifiable\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNothingSentTo($notifiable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSentTo($notifiable);\n }\n\n /**\n * Assert the total amount of times a notification was sent.\n *\n * @param string $notification\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertSentTimes($notification, $expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTimes($notification, $expectedCount);\n }\n\n /**\n * Assert the total count of notification that were sent.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Get all of the notifications matching a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sent($notifiable, $notification, $callback);\n }\n\n /**\n * Determine if there are more notifications left to inspect.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @return bool\n * @static\n */\n public static function hasSent($notifiable, $notification)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->hasSent($notifiable, $notification);\n }\n\n /**\n * Specify if notification should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the notifications that have been sent.\n *\n * @return array\n * @static\n */\n public static function sentNotifications()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sentNotifications();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::flushMacros();\n }\n\n }\n /**\n * @method static string sendResetLink(array $credentials, \\Closure|null $callback = null)\n * @method static mixed reset(array $credentials, \\Closure $callback)\n * @method static \\Illuminate\\Contracts\\Auth\\CanResetPassword|null getUser(array $credentials)\n * @method static string createToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static void deleteToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static bool tokenExists(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user, string $token)\n * @method static \\Illuminate\\Auth\\Passwords\\TokenRepositoryInterface getRepository()\n * @method static \\Illuminate\\Support\\Timebox getTimebox()\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBroker\n */\n class Password {\n /**\n * Attempt to get the broker from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\PasswordBroker\n * @static\n */\n public static function broker($name = null)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->broker($name);\n }\n\n /**\n * Get the default password broker name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default password broker name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n }\n /**\n * @method static \\Illuminate\\Process\\PendingProcess command(array|string $command)\n * @method static \\Illuminate\\Process\\PendingProcess path(string $path)\n * @method static \\Illuminate\\Process\\PendingProcess timeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess idleTimeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess forever()\n * @method static \\Illuminate\\Process\\PendingProcess env(array $environment)\n * @method static \\Illuminate\\Process\\PendingProcess input(\\Traversable|resource|string|int|float|bool|null $input)\n * @method static \\Illuminate\\Process\\PendingProcess quietly()\n * @method static \\Illuminate\\Process\\PendingProcess tty(bool $tty = true)\n * @method static \\Illuminate\\Process\\PendingProcess options(array $options)\n * @method static \\Illuminate\\Contracts\\Process\\ProcessResult run(array|string|null $command = null, callable|null $output = null)\n * @method static \\Illuminate\\Process\\InvokedProcess start(array|string|null $command = null, callable|null $output = null)\n * @method static bool supportsTty()\n * @method static \\Illuminate\\Process\\PendingProcess withFakeHandlers(array $fakeHandlers)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Process\\PendingProcess\n * @see \\Illuminate\\Process\\Factory\n */\n class Process {\n /**\n * Create a new fake process response for testing purposes.\n *\n * @param array|string $output\n * @param array|string $errorOutput\n * @param int $exitCode\n * @return \\Illuminate\\Process\\FakeProcessResult\n * @static\n */\n public static function result($output = '', $errorOutput = '', $exitCode = 0)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->result($output, $errorOutput, $exitCode);\n }\n\n /**\n * Begin describing a fake process lifecycle.\n *\n * @return \\Illuminate\\Process\\FakeProcessDescription\n * @static\n */\n public static function describe()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->describe();\n }\n\n /**\n * Begin describing a fake process sequence.\n *\n * @param array $processes\n * @return \\Illuminate\\Process\\FakeProcessSequence\n * @static\n */\n public static function sequence($processes = [])\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->sequence($processes);\n }\n\n /**\n * Indicate that the process factory should fake processes.\n *\n * @param \\Closure|array|null $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Determine if the process factory has fake process handlers and is recording processes.\n *\n * @return bool\n * @static\n */\n public static function isRecording()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->isRecording();\n }\n\n /**\n * Record the given process if processes should be recorded.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function recordIfRecording($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->recordIfRecording($process, $result);\n }\n\n /**\n * Record the given process.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function record($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->record($process, $result);\n }\n\n /**\n * Indicate that an exception should be thrown if any process is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function preventStrayProcesses($prevent = true)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventStrayProcesses($prevent);\n }\n\n /**\n * Determine if stray processes are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayProcesses()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventingStrayProcesses();\n }\n\n /**\n * Assert that a process was recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRan($callback);\n }\n\n /**\n * Assert that a process was recorded a given number of times matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @param int $times\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRanTimes($callback, $times = 1)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRanTimes($callback, $times);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNotRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNotRan($callback);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertDidntRun($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertDidntRun($callback);\n }\n\n /**\n * Assert that no processes were recorded.\n *\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNothingRan()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNothingRan();\n }\n\n /**\n * Start defining a pool of processes.\n *\n * @param callable $callback\n * @return \\Illuminate\\Process\\Pool\n * @static\n */\n public static function pool($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pool($callback);\n }\n\n /**\n * Start defining a series of piped processes.\n *\n * @param callable|array $callback\n * @return \\Illuminate\\Contracts\\Process\\ProcessResult\n * @static\n */\n public static function pipe($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pipe($callback, $output);\n }\n\n /**\n * Run a pool of processes and wait for them to finish executing.\n *\n * @param callable $callback\n * @param callable|null $output\n * @return \\Illuminate\\Process\\ProcessPoolResults\n * @static\n */\n public static function concurrently($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->concurrently($callback, $output);\n }\n\n /**\n * Create a new pending process associated with this factory.\n *\n * @return \\Illuminate\\Process\\PendingProcess\n * @static\n */\n public static function newPendingProcess()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->newPendingProcess();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Process\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Process\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Process\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Process\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Queue\\QueueManager\n * @see \\Illuminate\\Queue\\Queue\n * @see \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n */\n class Queue {\n /**\n * Register an event listener for the before job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->before($callback);\n }\n\n /**\n * Register an event listener for the after job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->after($callback);\n }\n\n /**\n * Register an event listener for the exception occurred job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function exceptionOccurred($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->exceptionOccurred($callback);\n }\n\n /**\n * Register an event listener for the daemon queue loop.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function looping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->looping($callback);\n }\n\n /**\n * Register an event listener for the failed job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function failing($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->failing($callback);\n }\n\n /**\n * Register an event listener for the daemon queue starting.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function starting($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->starting($callback);\n }\n\n /**\n * Register an event listener for the daemon queue stopping.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function stopping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->stopping($callback);\n }\n\n /**\n * Determine if the driver is connected.\n *\n * @param string|null $name\n * @return bool\n * @static\n */\n public static function connected($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connected($name);\n }\n\n /**\n * Resolve a queue connection instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Queue\\Queue\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function extend($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->extend($driver, $resolver);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function addConnector($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->addConnector($driver, $resolver);\n }\n\n /**\n * Get the name of the default queue connection.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the name of the default queue connection.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get the full name for the given connection.\n *\n * @param string|null $connection\n * @return string\n * @static\n */\n public static function getName($connection = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getName($connection);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Queue\\QueueManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Specify the jobs that should be queued instead of faked.\n *\n * @param array|string $jobsToBeQueued\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function except($jobsToBeQueued)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->except($jobsToBeQueued);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushed($job, $callback);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string $queue\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedOn($queue, $job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedOn($queue, $job, $callback);\n }\n\n /**\n * Assert if a job was pushed with chained jobs based on a truth-test callback.\n *\n * @param string $job\n * @param array $expectedChain\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithChain($job, $expectedChain = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithChain($job, $expectedChain, $callback);\n }\n\n /**\n * Assert if a job was pushed with an empty chain based on a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithoutChain($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithoutChain($job, $callback);\n }\n\n /**\n * Assert if a closure was pushed based on a truth-test callback.\n *\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertClosurePushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosurePushed($callback);\n }\n\n /**\n * Assert that a closure was not pushed based on a truth-test callback.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertClosureNotPushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosureNotPushed($callback);\n }\n\n /**\n * Determine if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNotPushed($job, $callback);\n }\n\n /**\n * Assert the total count of jobs that were pushed.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Assert that no jobs were pushed.\n *\n * @return void\n * @static\n */\n public static function assertNothingPushed()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNothingPushed();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function pushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushed($job, $callback);\n }\n\n /**\n * Get all of the raw pushes matching a truth-test callback.\n *\n * @param null|\\Closure(string, ?string, array): bool $callback\n * @return \\Illuminate\\Support\\Collection<int, RawPushType>\n * @static\n */\n public static function pushedRaw($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedRaw($callback);\n }\n\n /**\n * Get all of the jobs by listener class, passing an optional truth-test callback.\n *\n * @param class-string $listenerClass\n * @param (\\Closure(mixed, \\Illuminate\\Events\\CallQueuedListener, string|null, mixed): bool)|null $callback\n * @return \\Illuminate\\Support\\Collection<int, \\Illuminate\\Events\\CallQueuedListener>\n * @static\n */\n public static function listenersPushed($listenerClass, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->listenersPushed($listenerClass, $callback);\n }\n\n /**\n * Determine if there are any stored jobs for a given class.\n *\n * @param string $job\n * @return bool\n * @static\n */\n public static function hasPushed($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->hasPushed($job);\n }\n\n /**\n * Get the size of the queue.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function size($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->size($queue);\n }\n\n /**\n * Get the number of pending jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function pendingSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pendingSize($queue);\n }\n\n /**\n * Get the number of delayed jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function delayedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->delayedSize($queue);\n }\n\n /**\n * Get the number of reserved jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function reservedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->reservedSize($queue);\n }\n\n /**\n * Get the creation timestamp of the oldest pending job, excluding delayed jobs.\n *\n * @param string|null $queue\n * @return int|null\n * @static\n */\n public static function creationTimeOfOldestPendingJob($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->creationTimeOfOldestPendingJob($queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function push($job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->push($job, $data, $queue);\n }\n\n /**\n * Determine if a job should be faked or actually dispatched.\n *\n * @param object $job\n * @return bool\n * @static\n */\n public static function shouldFakeJob($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->shouldFakeJob($job);\n }\n\n /**\n * Push a raw payload onto the queue.\n *\n * @param string $payload\n * @param string|null $queue\n * @param array $options\n * @return mixed\n * @static\n */\n public static function pushRaw($payload, $queue = null, $options = [])\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushRaw($payload, $queue, $options);\n }\n\n /**\n * Push a new job onto the queue after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->later($delay, $job, $data, $queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string $queue\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function pushOn($queue, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushOn($queue, $job, $data);\n }\n\n /**\n * Push a new job onto a specific queue after (n) seconds.\n *\n * @param string $queue\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function laterOn($queue, $delay, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->laterOn($queue, $delay, $job, $data);\n }\n\n /**\n * Pop the next job off of the queue.\n *\n * @param string|null $queue\n * @return \\Illuminate\\Contracts\\Queue\\Job|null\n * @static\n */\n public static function pop($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pop($queue);\n }\n\n /**\n * Push an array of jobs onto the queue.\n *\n * @param array $jobs\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function bulk($jobs, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->bulk($jobs, $data, $queue);\n }\n\n /**\n * Get the jobs that have been pushed.\n *\n * @return array\n * @static\n */\n public static function pushedJobs()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedJobs();\n }\n\n /**\n * Get the payloads that were pushed raw.\n *\n * @return list<RawPushType>\n * @static\n */\n public static function rawPushes()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->rawPushes();\n }\n\n /**\n * Specify if jobs should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the connection name for the queue.\n *\n * @return string\n * @static\n */\n public static function getConnectionName()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->getConnectionName();\n }\n\n /**\n * Set the connection name for the queue.\n *\n * @param string $name\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function setConnectionName($name)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->setConnectionName($name);\n }\n\n /**\n * Migrate the delayed jobs that are ready to the regular queue.\n *\n * @param string $from\n * @param string $to\n * @return array\n * @static\n */\n public static function migrateExpiredJobs($from, $to)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->migrateExpiredJobs($from, $to);\n }\n\n /**\n * Delete a reserved job from the queue.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @return void\n * @static\n */\n public static function deleteReserved($queue, $job)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteReserved($queue, $job);\n }\n\n /**\n * Delete a reserved job from the reserved queue and release it.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @param int $delay\n * @return void\n * @static\n */\n public static function deleteAndRelease($queue, $job, $delay)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteAndRelease($queue, $job, $delay);\n }\n\n /**\n * Delete all of the jobs from the queue.\n *\n * @param string $queue\n * @return int\n * @static\n */\n public static function clear($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->clear($queue);\n }\n\n /**\n * Get the queue or return the default.\n *\n * @param string|null $queue\n * @return string\n * @static\n */\n public static function getQueue($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getQueue($queue);\n }\n\n /**\n * Get the connection for the queue.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function getConnection()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getConnection();\n }\n\n /**\n * Get the underlying Redis instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the maximum number of attempts for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobTries($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobTries($job);\n }\n\n /**\n * Get the backoff for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobBackoff($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobBackoff($job);\n }\n\n /**\n * Get the expiration timestamp for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobExpiration($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobExpiration($job);\n }\n\n /**\n * Register a callback to be executed when creating job payloads.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function createPayloadUsing($callback)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n \\Illuminate\\Queue\\RedisQueue::createPayloadUsing($callback);\n }\n\n /**\n * Get the container instance being used by the connection.\n *\n * @return \\Illuminate\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\RateLimiter\n */\n class RateLimiter {\n /**\n * Register a named limiter configuration.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Cache\\RateLimiter\n * @static\n */\n public static function for($name, $callback)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->for($name, $callback);\n }\n\n /**\n * Get the given named rate limiter.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @return \\Closure|null\n * @static\n */\n public static function limiter($name)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->limiter($name);\n }\n\n /**\n * Attempts to execute a callback if it's not limited.\n *\n * @param string $key\n * @param int $maxAttempts\n * @param \\Closure $callback\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return mixed\n * @static\n */\n public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds);\n }\n\n /**\n * Determine if the given key has been \"accessed\" too many times.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return bool\n * @static\n */\n public static function tooManyAttempts($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->tooManyAttempts($key, $maxAttempts);\n }\n\n /**\n * Increment (by 1) the counter for a given key for a given decay time.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return int\n * @static\n */\n public static function hit($key, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->hit($key, $decaySeconds);\n }\n\n /**\n * Increment the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function increment($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->increment($key, $decaySeconds, $amount);\n }\n\n /**\n * Decrement the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->decrement($key, $decaySeconds, $amount);\n }\n\n /**\n * Get the number of attempts for the given key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function attempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempts($key);\n }\n\n /**\n * Reset the number of attempts for the given key.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function resetAttempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->resetAttempts($key);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function remaining($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->remaining($key, $maxAttempts);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function retriesLeft($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->retriesLeft($key, $maxAttempts);\n }\n\n /**\n * Clear the hits and lockout timer for the given key.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function clear($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n $instance->clear($key);\n }\n\n /**\n * Get the number of seconds until the \"key\" is accessible again.\n *\n * @param string $key\n * @return int\n * @static\n */\n public static function availableIn($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->availableIn($key);\n }\n\n /**\n * Clean the rate limiter key from unicode characters.\n *\n * @param string $key\n * @return string\n * @static\n */\n public static function cleanRateLimiterKey($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->cleanRateLimiterKey($key);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\Redirector\n */\n class Redirect {\n /**\n * Create a new redirect response to the previous location.\n *\n * @param int $status\n * @param array $headers\n * @param mixed $fallback\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function back($status = 302, $headers = [], $fallback = false)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->back($status, $headers, $fallback);\n }\n\n /**\n * Create a new redirect response to the current URI.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function refresh($status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->refresh($status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function guest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->guest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param mixed $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function intended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->intended($default, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function to($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->to($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to an external URL (no validation).\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function away($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->away($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to the given HTTPS path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function secure($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->secure($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function route($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->route($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->signedRoute($route, $parameters, $expiration, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function action($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->action($action, $parameters, $status, $headers);\n }\n\n /**\n * Get the URL generator instance.\n *\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function getUrlGenerator()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getUrlGenerator();\n }\n\n /**\n * Set the active session store.\n *\n * @param \\Illuminate\\Session\\Store $session\n * @return void\n * @static\n */\n public static function setSession($session)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n $instance->setSession($session);\n }\n\n /**\n * Get the \"intended\" URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function getIntendedUrl()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getIntendedUrl();\n }\n\n /**\n * Set the \"intended\" URL in the session.\n *\n * @param string $url\n * @return \\Illuminate\\Routing\\Redirector\n * @static\n */\n public static function setIntendedUrl($url)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->setIntendedUrl($url);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Redirector::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Redirector::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Redirector::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Redirector::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Http\\Request\n */\n class Request {\n /**\n * Create a new Illuminate HTTP request from server variables.\n *\n * @return static\n * @static\n */\n public static function capture()\n {\n return \\Illuminate\\Http\\Request::capture();\n }\n\n /**\n * Return the Request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function instance()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->instance();\n }\n\n /**\n * Get the request method.\n *\n * @return string\n * @static\n */\n public static function method()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->method();\n }\n\n /**\n * Get a URI instance for the request.\n *\n * @return \\Illuminate\\Support\\Uri\n * @static\n */\n public static function uri()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->uri();\n }\n\n /**\n * Get the root URL for the application.\n *\n * @return string\n * @static\n */\n public static function root()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->root();\n }\n\n /**\n * Get the URL (no query string) for the request.\n *\n * @return string\n * @static\n */\n public static function url()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->url();\n }\n\n /**\n * Get the full URL for the request.\n *\n * @return string\n * @static\n */\n public static function fullUrl()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrl();\n }\n\n /**\n * Get the full URL for the request with the added query string parameters.\n *\n * @param array $query\n * @return string\n * @static\n */\n public static function fullUrlWithQuery($query)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithQuery($query);\n }\n\n /**\n * Get the full URL for the request without the given query string parameters.\n *\n * @param array|string $keys\n * @return string\n * @static\n */\n public static function fullUrlWithoutQuery($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithoutQuery($keys);\n }\n\n /**\n * Get the current path info for the request.\n *\n * @return string\n * @static\n */\n public static function path()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->path();\n }\n\n /**\n * Get the current decoded path info for the request.\n *\n * @return string\n * @static\n */\n public static function decodedPath()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->decodedPath();\n }\n\n /**\n * Get a segment from the URI (1 based index).\n *\n * @param int $index\n * @param string|null $default\n * @return string|null\n * @static\n */\n public static function segment($index, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segment($index, $default);\n }\n\n /**\n * Get all of the segments for the request path.\n *\n * @return array\n * @static\n */\n public static function segments()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segments();\n }\n\n /**\n * Determine if the current request URI matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the route name matches a given pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function routeIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->routeIs(...$patterns);\n }\n\n /**\n * Determine if the current request URL and query string match a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function fullUrlIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlIs(...$patterns);\n }\n\n /**\n * Get the host name.\n *\n * @return string\n * @static\n */\n public static function host()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->host();\n }\n\n /**\n * Get the HTTP host being requested.\n *\n * @return string\n * @static\n */\n public static function httpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->httpHost();\n }\n\n /**\n * Get the scheme and HTTP host.\n *\n * @return string\n * @static\n */\n public static function schemeAndHttpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->schemeAndHttpHost();\n }\n\n /**\n * Determine if the request is the result of an AJAX call.\n *\n * @return bool\n * @static\n */\n public static function ajax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ajax();\n }\n\n /**\n * Determine if the request is the result of a PJAX call.\n *\n * @return bool\n * @static\n */\n public static function pjax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->pjax();\n }\n\n /**\n * Determine if the request is the result of a prefetch call.\n *\n * @return bool\n * @static\n */\n public static function prefetch()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefetch();\n }\n\n /**\n * Determine if the request is over HTTPS.\n *\n * @return bool\n * @static\n */\n public static function secure()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->secure();\n }\n\n /**\n * Get the client IP address.\n *\n * @return string|null\n * @static\n */\n public static function ip()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ip();\n }\n\n /**\n * Get the client IP addresses.\n *\n * @return array\n * @static\n */\n public static function ips()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ips();\n }\n\n /**\n * Get the client user agent.\n *\n * @return string|null\n * @static\n */\n public static function userAgent()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->userAgent();\n }\n\n /**\n * Merge new input into the current request's input array.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function merge($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->merge($input);\n }\n\n /**\n * Merge new input into the request's input, but only when that key is missing from the request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function mergeIfMissing($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->mergeIfMissing($input);\n }\n\n /**\n * Replace the input values for the current request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function replace($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->replace($input);\n }\n\n /**\n * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel.\n * \n * Instead, you may use the \"input\" method.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the JSON payload for the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? \\Symfony\\Component\\HttpFoundation\\InputBag : mixed)\n * @static\n */\n public static function json($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->json($key, $default);\n }\n\n /**\n * Create a new request instance from the given Laravel request.\n *\n * @param \\Illuminate\\Http\\Request $from\n * @param \\Illuminate\\Http\\Request|null $to\n * @return static\n * @static\n */\n public static function createFrom($from, $to = null)\n {\n return \\Illuminate\\Http\\Request::createFrom($from, $to);\n }\n\n /**\n * Create an Illuminate request from a Symfony instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return static\n * @static\n */\n public static function createFromBase($request)\n {\n return \\Illuminate\\Http\\Request::createFromBase($request);\n }\n\n /**\n * Clones a request and overrides some of its parameters.\n *\n * @return static\n * @param array|null $query The GET parameters\n * @param array|null $request The POST parameters\n * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array|null $cookies The COOKIE parameters\n * @param array|null $files The FILES parameters\n * @param array|null $server The SERVER parameters\n * @static\n */\n public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server);\n }\n\n /**\n * Whether the request contains a Session object.\n * \n * This method does not give any information about the state of the session object,\n * like whether the session is started or not. It is just a way to check if this Request\n * is associated with a Session instance.\n *\n * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory`\n * @static\n */\n public static function hasSession($skipIfUninitialized = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasSession($skipIfUninitialized);\n }\n\n /**\n * Gets the Session.\n *\n * @throws SessionNotFoundException When session is not set properly\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSession();\n }\n\n /**\n * Get the session associated with the request.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @throws \\RuntimeException\n * @static\n */\n public static function session()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->session();\n }\n\n /**\n * Set the session instance on the request.\n *\n * @param \\Illuminate\\Contracts\\Session\\Session $session\n * @return void\n * @static\n */\n public static function setLaravelSession($session)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setLaravelSession($session);\n }\n\n /**\n * Set the locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setRequestLocale($locale);\n }\n\n /**\n * Set the default locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setDefaultRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setDefaultRequestLocale($locale);\n }\n\n /**\n * Get the user making the request.\n *\n * @param string|null $guard\n * @return mixed\n * @static\n */\n public static function user($guard = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->user($guard);\n }\n\n /**\n * Get the route handling the request.\n *\n * @param string|null $param\n * @param mixed $default\n * @return ($param is null ? \\Illuminate\\Routing\\Route : object|string|null)\n * @static\n */\n public static function route($param = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->route($param, $default);\n }\n\n /**\n * Get a unique fingerprint for the request / route / IP address.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function fingerprint()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fingerprint();\n }\n\n /**\n * Set the JSON payload for the request.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\InputBag $json\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setJson($json)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setJson($json);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getUserResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserResolver();\n }\n\n /**\n * Set the user resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setUserResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setUserResolver($callback);\n }\n\n /**\n * Get the route resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getRouteResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRouteResolver();\n }\n\n /**\n * Set the route resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setRouteResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRouteResolver($callback);\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @return array\n * @static\n */\n public static function toArray()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->toArray();\n }\n\n /**\n * Determine if the given offset exists.\n *\n * @param string $offset\n * @return bool\n * @static\n */\n public static function offsetExists($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetExists($offset);\n }\n\n /**\n * Get the value at the given offset.\n *\n * @param string $offset\n * @return mixed\n * @static\n */\n public static function offsetGet($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetGet($offset);\n }\n\n /**\n * Set the value at the given offset.\n *\n * @param string $offset\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($offset, $value)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetSet($offset, $value);\n }\n\n /**\n * Remove the value at the given offset.\n *\n * @param string $offset\n * @return void\n * @static\n */\n public static function offsetUnset($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetUnset($offset);\n }\n\n /**\n * Sets the parameters for this request.\n * \n * This method also re-initializes all properties.\n *\n * @param array $query The GET parameters\n * @param array $request The POST parameters\n * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array $cookies The COOKIE parameters\n * @param array $files The FILES parameters\n * @param array $server The SERVER parameters\n * @param string|resource|null $content The raw body data\n * @static\n */\n public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);\n }\n\n /**\n * Creates a new request with values from PHP's super globals.\n *\n * @static\n */\n public static function createFromGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::createFromGlobals();\n }\n\n /**\n * Creates a Request based on a given URI and configuration.\n * \n * The information contained in the URI always take precedence\n * over the other information (server and parameters).\n *\n * @param string $uri The URI\n * @param string $method The HTTP method\n * @param array $parameters The query (GET) or request (POST) parameters\n * @param array $cookies The request cookies ($_COOKIE)\n * @param array $files The request files ($_FILES)\n * @param array $server The server parameters ($_SERVER)\n * @param string|resource|null $content The raw body data\n * @throws BadRequestException When the URI is invalid\n * @static\n */\n public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);\n }\n\n /**\n * Sets a callable able to create a Request instance.\n * \n * This is mainly useful when you need to override the Request class\n * to keep BC with an existing system. It should not be used for any\n * other purpose.\n *\n * @static\n */\n public static function setFactory($callable)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setFactory($callable);\n }\n\n /**\n * Overrides the PHP global variables according to this request instance.\n * \n * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.\n * $_FILES is never overridden, see rfc1867\n *\n * @static\n */\n public static function overrideGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->overrideGlobals();\n }\n\n /**\n * Sets a list of trusted proxies.\n * \n * You should only list the reverse proxies that you manage directly.\n *\n * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] and 'PRIVATE_SUBNETS' by IpUtils::PRIVATE_SUBNETS\n * @param int-mask-of<Request::HEADER_*> $trustedHeaderSet A bit field to set which headers to trust from your proxies\n * @static\n */\n public static function setTrustedProxies($proxies, $trustedHeaderSet)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedProxies($proxies, $trustedHeaderSet);\n }\n\n /**\n * Gets the list of trusted proxies.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedProxies()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedProxies();\n }\n\n /**\n * Gets the set of trusted headers from trusted proxies.\n *\n * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies\n * @static\n */\n public static function getTrustedHeaderSet()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHeaderSet();\n }\n\n /**\n * Sets a list of trusted host patterns.\n * \n * You should only list the hosts you manage using regexs.\n *\n * @param array $hostPatterns A list of trusted host patterns\n * @static\n */\n public static function setTrustedHosts($hostPatterns)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedHosts($hostPatterns);\n }\n\n /**\n * Gets the list of trusted host patterns.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedHosts()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHosts();\n }\n\n /**\n * Normalizes a query string.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized,\n * have consistent escaping and unneeded delimiters are removed.\n *\n * @static\n */\n public static function normalizeQueryString($qs)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::normalizeQueryString($qs);\n }\n\n /**\n * Enables support for the _method request parameter to determine the intended HTTP method.\n * \n * Be warned that enabling this feature might lead to CSRF issues in your code.\n * Check that you are using CSRF tokens when required.\n * If the HTTP method parameter override is enabled, an html-form with method \"POST\" can be altered\n * and used to send a \"PUT\" or \"DELETE\" request via the _method request parameter.\n * If these methods are not protected against CSRF, this presents a possible vulnerability.\n * \n * The HTTP method can only be overridden when the real HTTP method is POST.\n *\n * @static\n */\n public static function enableHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::enableHttpMethodParameterOverride();\n }\n\n /**\n * Checks whether support for the _method request parameter is enabled.\n *\n * @static\n */\n public static function getHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getHttpMethodParameterOverride();\n }\n\n /**\n * Sets the list of HTTP methods that can be overridden.\n * \n * Set to null to allow all methods to be overridden (default). Set to an\n * empty array to disallow overrides entirely. Otherwise, provide the list\n * of uppercased method names that are allowed.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null $methods\n * @static\n */\n public static function setAllowedHttpMethodOverride($methods)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setAllowedHttpMethodOverride($methods);\n }\n\n /**\n * Gets the list of HTTP methods that can be overridden.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null\n * @static\n */\n public static function getAllowedHttpMethodOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getAllowedHttpMethodOverride();\n }\n\n /**\n * Whether the request contains a Session which was started in one of the\n * previous requests.\n *\n * @static\n */\n public static function hasPreviousSession()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasPreviousSession();\n }\n\n /**\n * @static\n */\n public static function setSession($session)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSession($session);\n }\n\n /**\n * @internal\n * @param callable(): SessionInterface $factory\n * @static\n */\n public static function setSessionFactory($factory)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSessionFactory($factory);\n }\n\n /**\n * Returns the client IP addresses.\n * \n * In the returned array the most trusted IP address is first, and the\n * least trusted one last. The \"real\" client IP address is the last one,\n * but this is also the least trusted one. Trusted proxies are stripped.\n * \n * Use this method carefully; you should use getClientIp() instead.\n *\n * @see getClientIp()\n * @static\n */\n public static function getClientIps()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIps();\n }\n\n /**\n * Returns the client IP address.\n * \n * This method can read the client IP address from the \"X-Forwarded-For\" header\n * when trusted proxies were set via \"setTrustedProxies()\". The \"X-Forwarded-For\"\n * header value is a comma+space separated list of IP addresses, the left-most\n * being the original client, and each successive proxy that passed the request\n * adding the IP address where it received the request from.\n * \n * If your reverse proxy uses a different header name than \"X-Forwarded-For\",\n * (\"Client-Ip\" for instance), configure it via the $trustedHeaderSet\n * argument of the Request::setTrustedProxies() method instead.\n *\n * @see getClientIps()\n * @see https://wikipedia.org/wiki/X-Forwarded-For\n * @static\n */\n public static function getClientIp()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIp();\n }\n\n /**\n * Returns current script name.\n *\n * @static\n */\n public static function getScriptName()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScriptName();\n }\n\n /**\n * Returns the path being requested relative to the executed script.\n * \n * The path info always starts with a /.\n * \n * Suppose this request is instantiated from /mysite on localhost:\n * \n * * http://localhost/mysite returns an empty string\n * * http://localhost/mysite/about returns '/about'\n * * http://localhost/mysite/enco%20ded returns '/enco%20ded'\n * * http://localhost/mysite/about?var=1 returns '/about'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getPathInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPathInfo();\n }\n\n /**\n * Returns the root path from which this request is executed.\n * \n * Suppose that an index.php file instantiates this request object:\n * \n * * http://localhost/index.php returns an empty string\n * * http://localhost/index.php/page returns an empty string\n * * http://localhost/web/index.php returns '/web'\n * * http://localhost/we%20b/index.php returns '/we%20b'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getBasePath()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBasePath();\n }\n\n /**\n * Returns the root URL from which this request is executed.\n * \n * The base URL never ends with a /.\n * \n * This is similar to getBasePath(), except that it also includes the\n * script filename (e.g. index.php) if one exists.\n *\n * @return string The raw URL (i.e. not urldecoded)\n * @static\n */\n public static function getBaseUrl()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBaseUrl();\n }\n\n /**\n * Gets the request's scheme.\n *\n * @static\n */\n public static function getScheme()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScheme();\n }\n\n /**\n * Returns the port on which the request is made.\n * \n * This method can read the client port from the \"X-Forwarded-Port\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Port\" header must contain the client port.\n *\n * @return int|string|null Can be a string if fetched from the server bag\n * @static\n */\n public static function getPort()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPort();\n }\n\n /**\n * Returns the user.\n *\n * @static\n */\n public static function getUser()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUser();\n }\n\n /**\n * Returns the password.\n *\n * @static\n */\n public static function getPassword()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPassword();\n }\n\n /**\n * Gets the user info.\n *\n * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server\n * @static\n */\n public static function getUserInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserInfo();\n }\n\n /**\n * Returns the HTTP host being requested.\n * \n * The port name will be appended to the host if it's non-standard.\n *\n * @static\n */\n public static function getHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHttpHost();\n }\n\n /**\n * Returns the requested URI (path and query string).\n *\n * @return string The raw URI (i.e. not URI decoded)\n * @static\n */\n public static function getRequestUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestUri();\n }\n\n /**\n * Gets the scheme and HTTP host.\n * \n * If the URL was called with basic authentication, the user\n * and the password are not added to the generated string.\n *\n * @static\n */\n public static function getSchemeAndHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSchemeAndHttpHost();\n }\n\n /**\n * Generates a normalized URI (URL) for the Request.\n *\n * @see getQueryString()\n * @static\n */\n public static function getUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUri();\n }\n\n /**\n * Generates a normalized URI for the given path.\n *\n * @param string $path A path to use instead of the current one\n * @static\n */\n public static function getUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUriForPath($path);\n }\n\n /**\n * Returns the path as relative reference from the current Request path.\n * \n * Only the URIs path component (no schema, host etc.) is relevant and must be given.\n * Both paths must be absolute and not contain relative parts.\n * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.\n * Furthermore, they can be used to reduce the link size in documents.\n * \n * Example target paths, given a base path of \"/a/b/c/d\":\n * - \"/a/b/c/d\" -> \"\"\n * - \"/a/b/c/\" -> \"./\"\n * - \"/a/b/\" -> \"../\"\n * - \"/a/b/c/other\" -> \"other\"\n * - \"/a/x/y\" -> \"../../x/y\"\n *\n * @static\n */\n public static function getRelativeUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRelativeUriForPath($path);\n }\n\n /**\n * Generates the normalized query string for the Request.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized\n * and have consistent escaping.\n *\n * @static\n */\n public static function getQueryString()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getQueryString();\n }\n\n /**\n * Checks whether the request is secure or not.\n * \n * This method can read the client protocol from the \"X-Forwarded-Proto\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Proto\" header must contain the protocol: \"https\" or \"http\".\n *\n * @static\n */\n public static function isSecure()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isSecure();\n }\n\n /**\n * Returns the host name.\n * \n * This method can read the client host name from the \"X-Forwarded-Host\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Host\" header must contain the client host name.\n *\n * @throws SuspiciousOperationException when the host name is invalid or not trusted\n * @static\n */\n public static function getHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHost();\n }\n\n /**\n * Sets the request method.\n *\n * @static\n */\n public static function setMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setMethod($method);\n }\n\n /**\n * Gets the request \"intended\" method.\n * \n * If the X-HTTP-Method-Override header is set, and if the method is a POST,\n * then it is used to determine the \"real\" intended HTTP method.\n * \n * The _method request parameter can also be used to determine the HTTP method,\n * but only if enableHttpMethodParameterOverride() has been called.\n * \n * The method is always an uppercased string.\n *\n * @see getRealMethod()\n * @static\n */\n public static function getMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMethod();\n }\n\n /**\n * Gets the \"real\" request method.\n *\n * @see getMethod()\n * @static\n */\n public static function getRealMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRealMethod();\n }\n\n /**\n * Gets the mime type associated with the format.\n *\n * @static\n */\n public static function getMimeType($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMimeType($format);\n }\n\n /**\n * Gets the mime types associated with the format.\n *\n * @return string[]\n * @static\n */\n public static function getMimeTypes($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getMimeTypes($format);\n }\n\n /**\n * Gets the format associated with the mime type.\n * \n * Resolution order:\n * 1) Exact match on the full MIME type (e.g. \"application/json\").\n * 2) Match on the canonical MIME type (i.e. before the first \";\" parameter).\n * 3) If the type is \"application/*+suffix\", use the structured syntax suffix\n * mapping (e.g. \"application/foo+json\" → \"json\"), when available.\n * 4) If $subtypeFallback is true and no match was found:\n * - return the MIME subtype (without \"x-\" prefix), provided it does not\n * contain a \"+\" (e.g. \"application/x-yaml\" → \"yaml\", \"text/csv\" → \"csv\").\n *\n * @param string|null $mimeType The mime type to check\n * @param bool $subtypeFallback Whether to fall back to the subtype if no exact match is found\n * @static\n */\n public static function getFormat($mimeType)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getFormat($mimeType);\n }\n\n /**\n * Associates a format with mime types.\n *\n * @param string $format The format to set\n * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)\n * @static\n */\n public static function setFormat($format, $mimeTypes)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setFormat($format, $mimeTypes);\n }\n\n /**\n * Gets the request format.\n * \n * Here is the process to determine the format:\n * \n * * format defined by the user (with setRequestFormat())\n * * _format request attribute\n * * $default\n *\n * @see getPreferredFormat\n * @static\n */\n public static function getRequestFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestFormat($default);\n }\n\n /**\n * Sets the request format.\n *\n * @static\n */\n public static function setRequestFormat($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRequestFormat($format);\n }\n\n /**\n * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header).\n *\n * @see Request::$formats\n * @static\n */\n public static function getContentTypeFormat()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContentTypeFormat();\n }\n\n /**\n * Sets the default locale.\n *\n * @static\n */\n public static function setDefaultLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setDefaultLocale($locale);\n }\n\n /**\n * Get the default locale.\n *\n * @static\n */\n public static function getDefaultLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getDefaultLocale();\n }\n\n /**\n * Sets the locale.\n *\n * @static\n */\n public static function setLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setLocale($locale);\n }\n\n /**\n * Get the locale.\n *\n * @static\n */\n public static function getLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLocale();\n }\n\n /**\n * Checks if the request method is of specified type.\n *\n * @param string $method Uppercase request method (GET, POST etc)\n * @static\n */\n public static function isMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethod($method);\n }\n\n /**\n * Checks whether or not the method is safe.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.1\n * @static\n */\n public static function isMethodSafe()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodSafe();\n }\n\n /**\n * Checks whether or not the method is idempotent.\n *\n * @static\n */\n public static function isMethodIdempotent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodIdempotent();\n }\n\n /**\n * Checks whether the method is cacheable or not.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.3\n * @static\n */\n public static function isMethodCacheable()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodCacheable();\n }\n\n /**\n * Returns the protocol version.\n * \n * If the application is behind a proxy, the protocol version used in the\n * requests between the client and the proxy and between the proxy and the\n * server might be different. This returns the former (from the \"Via\" header)\n * if the proxy is trusted (see \"setTrustedProxies()\"), otherwise it returns\n * the latter (from the \"SERVER_PROTOCOL\" server parameter).\n *\n * @static\n */\n public static function getProtocolVersion()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getProtocolVersion();\n }\n\n /**\n * Returns the request body content.\n *\n * @param bool $asResource If true, a resource will be returned\n * @return string|resource\n * @psalm-return ($asResource is true ? resource : string)\n * @static\n */\n public static function getContent($asResource = false)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContent($asResource);\n }\n\n /**\n * Gets the decoded form or json request body.\n *\n * @throws JsonException When the body cannot be decoded to an array\n * @static\n */\n public static function getPayload()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPayload();\n }\n\n /**\n * Gets the Etags.\n *\n * @static\n */\n public static function getETags()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getETags();\n }\n\n /**\n * @static\n */\n public static function isNoCache()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNoCache();\n }\n\n /**\n * Gets the preferred format for the response by inspecting, in the following order:\n * * the request format set using setRequestFormat;\n * * the values of the Accept HTTP header.\n * \n * Note that if you use this method, you should send the \"Vary: Accept\" header\n * in the response to prevent any issues with intermediary HTTP caches.\n *\n * @static\n */\n public static function getPreferredFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredFormat($default);\n }\n\n /**\n * Returns the preferred language.\n *\n * @param string[] $locales An array of ordered available locales\n * @static\n */\n public static function getPreferredLanguage($locales = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredLanguage($locales);\n }\n\n /**\n * Gets a list of languages acceptable by the client browser ordered in the user browser preferences.\n *\n * @return string[]\n * @static\n */\n public static function getLanguages()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLanguages();\n }\n\n /**\n * Gets a list of charsets acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getCharsets()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getCharsets();\n }\n\n /**\n * Gets a list of encodings acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getEncodings()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getEncodings();\n }\n\n /**\n * Gets a list of content types acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getAcceptableContentTypes()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getAcceptableContentTypes();\n }\n\n /**\n * Returns true if the request is an XMLHttpRequest.\n * \n * It works if your JavaScript library sets an X-Requested-With HTTP header.\n * It is known to work with common JavaScript frameworks:\n *\n * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript\n * @static\n */\n public static function isXmlHttpRequest()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isXmlHttpRequest();\n }\n\n /**\n * Checks whether the client browser prefers safe content or not according to RFC8674.\n *\n * @see https://tools.ietf.org/html/rfc8674\n * @static\n */\n public static function preferSafeContent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->preferSafeContent();\n }\n\n /**\n * Indicates whether this request originated from a trusted proxy.\n * \n * This can be useful to determine whether or not to trust the\n * contents of a proxy-specific header.\n *\n * @static\n */\n public static function isFromTrustedProxy()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isFromTrustedProxy();\n }\n\n /**\n * Filter the given array of rules into an array of rules that are included in precognitive headers.\n *\n * @param array $rules\n * @return array\n * @static\n */\n public static function filterPrecognitiveRules($rules)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filterPrecognitiveRules($rules);\n }\n\n /**\n * Determine if the request is attempting to be precognitive.\n *\n * @return bool\n * @static\n */\n public static function isAttemptingPrecognition()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isAttemptingPrecognition();\n }\n\n /**\n * Determine if the request is precognitive.\n *\n * @return bool\n * @static\n */\n public static function isPrecognitive()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isPrecognitive();\n }\n\n /**\n * Determine if the request is sending JSON.\n *\n * @return bool\n * @static\n */\n public static function isJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isJson();\n }\n\n /**\n * Determine if the current request probably expects a JSON response.\n *\n * @return bool\n * @static\n */\n public static function expectsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->expectsJson();\n }\n\n /**\n * Determine if the current request is asking for JSON.\n *\n * @return bool\n * @static\n */\n public static function wantsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->wantsJson();\n }\n\n /**\n * Determines whether the current requests accepts a given content type.\n *\n * @param string|array $contentTypes\n * @return bool\n * @static\n */\n public static function accepts($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->accepts($contentTypes);\n }\n\n /**\n * Return the most suitable content type from the given array based on content negotiation.\n *\n * @param string|array $contentTypes\n * @return string|null\n * @static\n */\n public static function prefers($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefers($contentTypes);\n }\n\n /**\n * Determine if the current request accepts any content type.\n *\n * @return bool\n * @static\n */\n public static function acceptsAnyContentType()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsAnyContentType();\n }\n\n /**\n * Determines whether a request accepts JSON.\n *\n * @return bool\n * @static\n */\n public static function acceptsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsJson();\n }\n\n /**\n * Determines whether a request accepts HTML.\n *\n * @return bool\n * @static\n */\n public static function acceptsHtml()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsHtml();\n }\n\n /**\n * Determine if the given content types match.\n *\n * @param string $actual\n * @param string $type\n * @return bool\n * @static\n */\n public static function matchesType($actual, $type)\n {\n return \\Illuminate\\Http\\Request::matchesType($actual, $type);\n }\n\n /**\n * Get the data format expected in the response.\n *\n * @param string $default\n * @return string\n * @static\n */\n public static function format($default = 'html')\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->format($default);\n }\n\n /**\n * Retrieve an old input item.\n *\n * @param string|null $key\n * @param \\Illuminate\\Database\\Eloquent\\Model|string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function old($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->old($key, $default);\n }\n\n /**\n * Flash the input for the current request to the session.\n *\n * @return void\n * @static\n */\n public static function flash()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flash();\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashOnly($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashOnly($keys);\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashExcept($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashExcept($keys);\n }\n\n /**\n * Flush all of the old input from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flush();\n }\n\n /**\n * Retrieve a server variable from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function server($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->server($key, $default);\n }\n\n /**\n * Determine if a header is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHeader($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasHeader($key);\n }\n\n /**\n * Retrieve a header from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function header($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->header($key, $default);\n }\n\n /**\n * Get the bearer token from the request headers.\n *\n * @return string|null\n * @static\n */\n public static function bearerToken()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->bearerToken();\n }\n\n /**\n * Get the keys for all of the input and files.\n *\n * @return array\n * @static\n */\n public static function keys()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->keys();\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function all($keys = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->all($keys);\n }\n\n /**\n * Retrieve an input item from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function input($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Retrieve input from the request as a Fluent object instance.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Fluent\n * @static\n */\n public static function fluent($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fluent($key);\n }\n\n /**\n * Retrieve a query string item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function query($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->query($key, $default);\n }\n\n /**\n * Retrieve a request payload item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function post($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->post($key, $default);\n }\n\n /**\n * Determine if a cookie is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasCookie($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasCookie($key);\n }\n\n /**\n * Retrieve a cookie from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function cookie($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->cookie($key, $default);\n }\n\n /**\n * Get an array of all of the files on the request.\n *\n * @return array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]>\n * @static\n */\n public static function allFiles()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->allFiles();\n }\n\n /**\n * Determine if the uploaded data contains a file.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasFile($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasFile($key);\n }\n\n /**\n * Retrieve a file from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]> : \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]|null)\n * @static\n */\n public static function file($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->file($key, $default);\n }\n\n /**\n * Dump the items.\n *\n * @param mixed $keys\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function dump($keys = [])\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dump($keys);\n }\n\n /**\n * Dump the given arguments and terminate execution.\n *\n * @param mixed $args\n * @return never\n * @static\n */\n public static function dd(...$args)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dd(...$args);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the instance contains any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function hasAny($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasAny($keys);\n }\n\n /**\n * Apply the callback if the instance contains the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenHas($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenHas($key, $callback, $default);\n }\n\n /**\n * Determine if the instance contains a non-empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function filled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filled($key);\n }\n\n /**\n * Determine if the instance contains an empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function isNotFilled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNotFilled($key);\n }\n\n /**\n * Determine if the instance contains a non-empty value for any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function anyFilled($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->anyFilled($keys);\n }\n\n /**\n * Apply the callback if the instance contains a non-empty value for the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenFilled($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenFilled($key, $callback, $default);\n }\n\n /**\n * Determine if the instance is missing a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->missing($key);\n }\n\n /**\n * Apply the callback if the instance is missing the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenMissing($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenMissing($key, $callback, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function str($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->str($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Retrieve data as a boolean value.\n * \n * Returns true when value is \"1\", \"true\", \"on\", and \"yes\". Otherwise, returns false.\n *\n * @param string|null $key\n * @param bool $default\n * @return bool\n * @static\n */\n public static function boolean($key = null, $default = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Retrieve data as an integer value.\n *\n * @param string $key\n * @param int $default\n * @return int\n * @static\n */\n public static function integer($key, $default = 0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Retrieve data as a float value.\n *\n * @param string $key\n * @param float $default\n * @return float\n * @static\n */\n public static function float($key, $default = 0.0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Carbon instance.\n *\n * @param string $key\n * @param string|null $format\n * @param \\UnitEnum|string|null $tz\n * @return \\Illuminate\\Support\\Carbon|null\n * @throws \\Carbon\\Exceptions\\InvalidFormatException\n * @static\n */\n public static function date($key, $format = null, $tz = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->date($key, $format, $tz);\n }\n\n /**\n * Retrieve data from the instance as an enum.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @param TEnum|null $default\n * @return TEnum|null\n * @static\n */\n public static function enum($key, $enumClass, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enum($key, $enumClass, $default);\n }\n\n /**\n * Retrieve data from the instance as an array of enums.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @return TEnum[]\n * @static\n */\n public static function enums($key, $enumClass)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enums($key, $enumClass);\n }\n\n /**\n * Retrieve data from the instance as an array.\n *\n * @param array|string|null $key\n * @return array\n * @static\n */\n public static function array($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->array($key);\n }\n\n /**\n * Retrieve data from the instance as a collection.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function collect($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->collect($key);\n }\n\n /**\n * Get a subset containing the provided keys with values from the instance data.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all of the data except for a specified array of items.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->except($keys);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Request::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Request::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Request::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Request::flushMacros();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\ResponseFactory\n */\n class Response {\n /**\n * Create a new response instance.\n *\n * @param mixed $content\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function make($content = '', $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->make($content, $status, $headers);\n }\n\n /**\n * Create a new \"no content\" response.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function noContent($status = 204, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->noContent($status, $headers);\n }\n\n /**\n * Create a new response for a given view.\n *\n * @param string|array $view\n * @param array $data\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function view($view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->view($view, $data, $status, $headers);\n }\n\n /**\n * Create a new JSON response instance.\n *\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function json($data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->json($data, $status, $headers, $options);\n }\n\n /**\n * Create a new JSONP response instance.\n *\n * @param string $callback\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->jsonp($callback, $data, $status, $headers, $options);\n }\n\n /**\n * Create a new event stream response.\n *\n * @param \\Closure $callback\n * @param array $headers\n * @param \\Illuminate\\Http\\StreamedEvent|string|null $endStreamWith\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function eventStream($callback, $headers = [], $endStreamWith = '</stream>')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->eventStream($callback, $headers, $endStreamWith);\n }\n\n /**\n * Create a new streamed response instance.\n *\n * @param callable|null $callback\n * @param int $status\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function stream($callback, $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->stream($callback, $status, $headers);\n }\n\n /**\n * Create a new streamed JSON response instance.\n *\n * @param array $data\n * @param int $status\n * @param array $headers\n * @param int $encodingOptions\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedJsonResponse\n * @static\n */\n public static function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamJson($data, $status, $headers, $encodingOptions);\n }\n\n /**\n * Create a new streamed response instance as a file download.\n *\n * @param callable $callback\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @throws \\Illuminate\\Routing\\Exceptions\\StreamedResponseException\n * @static\n */\n public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamDownload($callback, $name, $headers, $disposition);\n }\n\n /**\n * Create a new file download response.\n *\n * @param \\SplFileInfo|string $file\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function download($file, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->download($file, $name, $headers, $disposition);\n }\n\n /**\n * Return the raw contents of a binary file.\n *\n * @param \\SplFileInfo|string $file\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function file($file, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->file($file, $headers);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectTo($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectTo($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToRoute($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param array|string $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToAction($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToAction($action, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectGuest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectGuest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param string $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToIntended($default, $status, $headers, $secure);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\ResponseFactory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\ResponseFactory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\ResponseFactory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\ResponseFactory::flushMacros();\n }\n\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n /**\n * @method static \\Illuminate\\Routing\\RouteRegistrar attribute(string $key, mixed $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlpha(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlphaNumeric(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereNumber(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUlid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUuid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereIn(array|string $parameters, array $values)\n * @method static \\Illuminate\\Routing\\RouteRegistrar as(string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar can(\\UnitEnum|string $ability, array|string $models = [])\n * @method static \\Illuminate\\Routing\\RouteRegistrar controller(string $controller)\n * @method static \\Illuminate\\Routing\\RouteRegistrar domain(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar middleware(array|string|null $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar missing(\\Closure $missing)\n * @method static \\Illuminate\\Routing\\RouteRegistrar name(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar namespace(string|null $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar prefix(string $prefix)\n * @method static \\Illuminate\\Routing\\RouteRegistrar scopeBindings()\n * @method static \\Illuminate\\Routing\\RouteRegistrar where(array $where)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutMiddleware(array|string $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutScopedBindings()\n * @see \\Illuminate\\Routing\\Router\n */\n class Route {\n /**\n * Register a new GET route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function get($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->get($uri, $action);\n }\n\n /**\n * Register a new POST route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function post($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->post($uri, $action);\n }\n\n /**\n * Register a new PUT route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function put($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->put($uri, $action);\n }\n\n /**\n * Register a new PATCH route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function patch($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->patch($uri, $action);\n }\n\n /**\n * Register a new DELETE route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function delete($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->delete($uri, $action);\n }\n\n /**\n * Register a new OPTIONS route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function options($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->options($uri, $action);\n }\n\n /**\n * Register a new route responding to all verbs.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function any($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->any($uri, $action);\n }\n\n /**\n * Register a new fallback route with the router.\n *\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function fallback($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->fallback($action);\n }\n\n /**\n * Create a redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @param int $status\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function redirect($uri, $destination, $status = 302)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->redirect($uri, $destination, $status);\n }\n\n /**\n * Create a permanent redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function permanentRedirect($uri, $destination)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->permanentRedirect($uri, $destination);\n }\n\n /**\n * Register a new route that returns a view.\n *\n * @param string $uri\n * @param string $view\n * @param array $data\n * @param int|array $status\n * @param array $headers\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function view($uri, $view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->view($uri, $view, $data, $status, $headers);\n }\n\n /**\n * Register a new route with the given verbs.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function match($methods, $uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->match($methods, $uri, $action);\n }\n\n /**\n * Register an array of resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function resources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resources($resources, $options);\n }\n\n /**\n * Register an array of resource controllers that can be soft deleted.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function softDeletableResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->softDeletableResources($resources, $options);\n }\n\n /**\n * Route a resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function resource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resource($name, $controller, $options);\n }\n\n /**\n * Register an array of API resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function apiResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiResources($resources, $options);\n }\n\n /**\n * Route an API resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function apiResource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiResource($name, $controller, $options);\n }\n\n /**\n * Register an array of singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function singletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singletons($singletons, $options);\n }\n\n /**\n * Route a singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function singleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->singleton($name, $controller, $options);\n }\n\n /**\n * Register an array of API singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function apiSingletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiSingletons($singletons, $options);\n }\n\n /**\n * Route an API singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function apiSingleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiSingleton($name, $controller, $options);\n }\n\n /**\n * Create a route group with shared attributes.\n *\n * @param array $attributes\n * @param \\Closure|array|string $routes\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function group($attributes, $routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->group($attributes, $routes);\n }\n\n /**\n * Merge the given array with the last group stack.\n *\n * @param array $new\n * @param bool $prependExistingPrefix\n * @return array\n * @static\n */\n public static function mergeWithLastGroup($new, $prependExistingPrefix = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->mergeWithLastGroup($new, $prependExistingPrefix);\n }\n\n /**\n * Get the prefix from the last group on the stack.\n *\n * @return string\n * @static\n */\n public static function getLastGroupPrefix()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getLastGroupPrefix();\n }\n\n /**\n * Add a route to the underlying route collection.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function addRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->addRoute($methods, $uri, $action);\n }\n\n /**\n * Create a new Route object.\n *\n * @param array|string $methods\n * @param string $uri\n * @param mixed $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function newRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->newRoute($methods, $uri, $action);\n }\n\n /**\n * Return the response returned by the given route.\n *\n * @param string $name\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function respondWithRoute($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->respondWithRoute($name);\n }\n\n /**\n * Dispatch the request to the application.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatch($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatch($request);\n }\n\n /**\n * Dispatch the request to a route and return the response.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatchToRoute($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatchToRoute($request);\n }\n\n /**\n * Gather the middleware for the given route with resolved class names.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return array\n * @static\n */\n public static function gatherRouteMiddleware($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->gatherRouteMiddleware($route);\n }\n\n /**\n * Resolve a flat array of middleware classes from the provided array.\n *\n * @param array $middleware\n * @param array $excluded\n * @return array\n * @static\n */\n public static function resolveMiddleware($middleware, $excluded = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resolveMiddleware($middleware, $excluded);\n }\n\n /**\n * Create a response instance from the given value.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function prepareResponse($request, $response)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prepareResponse($request, $response);\n }\n\n /**\n * Static version of prepareResponse.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function toResponse($request, $response)\n {\n return \\Illuminate\\Routing\\Router::toResponse($request, $response);\n }\n\n /**\n * Substitute the route bindings onto the route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return \\Illuminate\\Routing\\Route\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteBindings($route);\n }\n\n /**\n * Substitute the implicit route bindings for the given route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return void\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteImplicitBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->substituteImplicitBindings($route);\n }\n\n /**\n * Register a callback to run after implicit bindings are substituted.\n *\n * @param callable $callback\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function substituteImplicitBindingsUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteImplicitBindingsUsing($callback);\n }\n\n /**\n * Register a route matched event listener.\n *\n * @param string|callable $callback\n * @return void\n * @static\n */\n public static function matched($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->matched($callback);\n }\n\n /**\n * Get all of the defined middleware short-hand names.\n *\n * @return array\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * Register a short-hand name for a middleware.\n *\n * @param string $name\n * @param string $class\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function aliasMiddleware($name, $class)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->aliasMiddleware($name, $class);\n }\n\n /**\n * Check if a middlewareGroup with the given name exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMiddlewareGroup($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasMiddlewareGroup($name);\n }\n\n /**\n * Get all of the defined middleware groups.\n *\n * @return array\n * @static\n */\n public static function getMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddlewareGroups();\n }\n\n /**\n * Register a group of middleware.\n *\n * @param string $name\n * @param array $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function middlewareGroup($name, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->middlewareGroup($name, $middleware);\n }\n\n /**\n * Add a middleware to the beginning of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function prependMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prependMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Add a middleware to the end of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function pushMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->pushMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Remove the given middleware from the specified group.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function removeMiddlewareFromGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->removeMiddlewareFromGroup($group, $middleware);\n }\n\n /**\n * Flush the router's middleware groups.\n *\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function flushMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->flushMiddlewareGroups();\n }\n\n /**\n * Add a new route parameter binder.\n *\n * @param string $key\n * @param string|callable $binder\n * @return void\n * @static\n */\n public static function bind($key, $binder)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->bind($key, $binder);\n }\n\n /**\n * Register a model binder for a wildcard.\n *\n * @param string $key\n * @param string $class\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function model($key, $class, $callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->model($key, $class, $callback);\n }\n\n /**\n * Get the binding callback for a given binding.\n *\n * @param string $key\n * @return \\Closure|null\n * @static\n */\n public static function getBindingCallback($key)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getBindingCallback($key);\n }\n\n /**\n * Get the global \"where\" patterns.\n *\n * @return array\n * @static\n */\n public static function getPatterns()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getPatterns();\n }\n\n /**\n * Set a global where pattern on all routes.\n *\n * @param string $key\n * @param string $pattern\n * @return void\n * @static\n */\n public static function pattern($key, $pattern)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->pattern($key, $pattern);\n }\n\n /**\n * Set a group of global where patterns on all routes.\n *\n * @param array $patterns\n * @return void\n * @static\n */\n public static function patterns($patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->patterns($patterns);\n }\n\n /**\n * Determine if the router currently has a group stack.\n *\n * @return bool\n * @static\n */\n public static function hasGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasGroupStack();\n }\n\n /**\n * Get the current group stack for the router.\n *\n * @return array\n * @static\n */\n public static function getGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getGroupStack();\n }\n\n /**\n * Get a route parameter for the current route.\n *\n * @param string $key\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function input($key, $default = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Get the request currently being dispatched.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getCurrentRequest()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRequest();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function getCurrentRoute()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRoute();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->current();\n }\n\n /**\n * Check if a route with the given name exists.\n *\n * @param string|array $name\n * @return bool\n * @static\n */\n public static function has($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->has($name);\n }\n\n /**\n * Get the current route name.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteName()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteName();\n }\n\n /**\n * Alias for the \"currentRouteNamed\" method.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the current route matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function currentRouteNamed(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteNamed(...$patterns);\n }\n\n /**\n * Get the current route action.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteAction()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteAction();\n }\n\n /**\n * Alias for the \"currentRouteUses\" method.\n *\n * @param array|string $patterns\n * @return bool\n * @static\n */\n public static function uses(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->uses(...$patterns);\n }\n\n /**\n * Determine if the current route action matches a given action.\n *\n * @param string $action\n * @return bool\n * @static\n */\n public static function currentRouteUses($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteUses($action);\n }\n\n /**\n * Set the unmapped global resource parameters to singular.\n *\n * @param bool $singular\n * @return void\n * @static\n */\n public static function singularResourceParameters($singular = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singularResourceParameters($singular);\n }\n\n /**\n * Set the global resource parameter mapping.\n *\n * @param array $parameters\n * @return void\n * @static\n */\n public static function resourceParameters($parameters = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resourceParameters($parameters);\n }\n\n /**\n * Get or set the verbs used in the resource URIs.\n *\n * @param array $verbs\n * @return array|null\n * @static\n */\n public static function resourceVerbs($verbs = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resourceVerbs($verbs);\n }\n\n /**\n * Get the underlying route collection.\n *\n * @return \\Illuminate\\Routing\\RouteCollectionInterface\n * @static\n */\n public static function getRoutes()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getRoutes();\n }\n\n /**\n * Set the route collection instance.\n *\n * @param \\Illuminate\\Routing\\RouteCollection $routes\n * @return void\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setRoutes($routes);\n }\n\n /**\n * Set the compiled route collection instance.\n *\n * @param array $routes\n * @return void\n * @static\n */\n public static function setCompiledRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setCompiledRoutes($routes);\n }\n\n /**\n * Remove any duplicate middleware from the given array.\n *\n * @param array $middleware\n * @return array\n * @static\n */\n public static function uniqueMiddleware($middleware)\n {\n return \\Illuminate\\Routing\\Router::uniqueMiddleware($middleware);\n }\n\n /**\n * Set the container instance used by the router.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Router::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Router::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Router::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Router::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Call the given Closure with this instance then return the instance.\n *\n * @param (callable($this): mixed)|null $callback\n * @return ($callback is null ? \\Illuminate\\Support\\HigherOrderTapProxy : $this)\n * @static\n */\n public static function tap($callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->tap($callback);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes withoutOverlapping(int $expiresAt = 1440)\n * @method static void mergeAttributes(\\Illuminate\\Console\\Scheduling\\Event $event)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes user(string $user)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes environments(mixed $environments)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes evenInMaintenanceMode()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes onOneServer()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes runInBackground()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes when(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes skip(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes name(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes description(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes cron(string $expression)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes between(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes unlessBetween(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySecond()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwentySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyMinute()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtyMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourlyAt(array|string|int|int[] $offset)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyOddHour(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySixHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes daily()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes at(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes dailyAt(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDaily(int $first = 1, int $second = 13)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDailyAt(int $first = 1, int $second = 13, int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekends()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes mondays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes tuesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes wednesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes thursdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes fridays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes saturdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes sundays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weeklyOn(mixed $dayOfWeek, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthlyOn(int $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceMonthly(int $first = 1, int $second = 16, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes lastDayOfMonth(string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterlyOn(int $dayOfQuarter = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearlyOn(int $month = 1, int|string $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes days(mixed $days)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes timezone(\\UnitEnum|\\DateTimeZone|string $timezone)\n * @see \\Illuminate\\Console\\Scheduling\\Schedule\n */\n class Schedule {\n /**\n * Add a new callback event to the schedule.\n *\n * @param string|callable $callback\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function call($callback, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->call($callback, $parameters);\n }\n\n /**\n * Add a new Artisan command event to the schedule.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function command($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->command($command, $parameters);\n }\n\n /**\n * Add a new job callback event to the schedule.\n *\n * @param object|string $job\n * @param \\UnitEnum|string|null $queue\n * @param \\UnitEnum|string|null $connection\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function job($job, $queue = null, $connection = null)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->job($job, $queue, $connection);\n }\n\n /**\n * Add a new command event to the schedule.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function exec($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->exec($command, $parameters);\n }\n\n /**\n * Create new schedule group.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function group($events)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n $instance->group($events);\n }\n\n /**\n * Compile array input for a command.\n *\n * @param string|int $key\n * @param array $value\n * @return string\n * @static\n */\n public static function compileArrayInput($key, $value)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->compileArrayInput($key, $value);\n }\n\n /**\n * Determine if the server is allowed to run this event.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @param \\DateTimeInterface $time\n * @return bool\n * @static\n */\n public static function serverShouldRun($event, $time)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->serverShouldRun($event, $time);\n }\n\n /**\n * Get all of the events on the schedule that are due.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dueEvents($app)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->dueEvents($app);\n }\n\n /**\n * Get all of the events on the schedule.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Event[]\n * @static\n */\n public static function events()\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->events();\n }\n\n /**\n * Specify the cache store that should be used to store mutexes.\n *\n * @param string $store\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function useCache($store)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->useCache($store);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Console\\Scheduling\\Schedule::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\Schema\\Builder\n */\n class Schema {\n /**\n * Drop all tables from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllTables()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTables();\n }\n\n /**\n * Drop all views from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllViews()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllViews();\n }\n\n /**\n * Get the names of current schemas for the connection.\n *\n * @return string[]|null\n * @static\n */\n public static function getCurrentSchemaListing()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaListing();\n }\n\n /**\n * Set the default string length for migrations.\n *\n * @param int $length\n * @return void\n * @static\n */\n public static function defaultStringLength($length)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultStringLength($length);\n }\n\n /**\n * Set the default time precision for migrations.\n *\n * @static\n */\n public static function defaultTimePrecision($precision)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultTimePrecision($precision);\n }\n\n /**\n * Set the default morph key type for migrations.\n *\n * @param string $type\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function defaultMorphKeyType($type)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultMorphKeyType($type);\n }\n\n /**\n * Set the default morph key type for migrations to UUIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUuids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUuids();\n }\n\n /**\n * Set the default morph key type for migrations to ULIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUlids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUlids();\n }\n\n /**\n * Create a database in the schema.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function createDatabase($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->createDatabase($name);\n }\n\n /**\n * Drop a database from the schema if the database exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function dropDatabaseIfExists($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->dropDatabaseIfExists($name);\n }\n\n /**\n * Get the schemas that belong to the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, path: string|null, default: bool}>\n * @static\n */\n public static function getSchemas()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getSchemas();\n }\n\n /**\n * Determine if the given table exists.\n *\n * @param string $table\n * @return bool\n * @static\n */\n public static function hasTable($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasTable($table);\n }\n\n /**\n * Determine if the given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function hasView($view)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasView($view);\n }\n\n /**\n * Get the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, size: int|null, comment: string|null, collation: string|null, engine: string|null}>\n * @static\n */\n public static function getTables($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTables($schema);\n }\n\n /**\n * Get the names of the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @param bool $schemaQualified\n * @return list<string>\n * @static\n */\n public static function getTableListing($schema = null, $schemaQualified = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTableListing($schema, $schemaQualified);\n }\n\n /**\n * Get the views that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, definition: string}>\n * @static\n */\n public static function getViews($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getViews($schema);\n }\n\n /**\n * Get the user-defined types that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string, type: string, type: string, category: string, implicit: bool}>\n * @static\n */\n public static function getTypes($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTypes($schema);\n }\n\n /**\n * Determine if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @return bool\n * @static\n */\n public static function hasColumn($table, $column)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumn($table, $column);\n }\n\n /**\n * Determine if the given table has given columns.\n *\n * @param string $table\n * @param array<string> $columns\n * @return bool\n * @static\n */\n public static function hasColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumns($table, $columns);\n }\n\n /**\n * Execute a table builder callback if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableHasColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableHasColumn($table, $column, $callback);\n }\n\n /**\n * Execute a table builder callback if the given table doesn't have a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableDoesntHaveColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableDoesntHaveColumn($table, $column, $callback);\n }\n\n /**\n * Get the data type for the given column name.\n *\n * @param string $table\n * @param string $column\n * @param bool $fullDefinition\n * @return string\n * @static\n */\n public static function getColumnType($table, $column, $fullDefinition = false)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnType($table, $column, $fullDefinition);\n }\n\n /**\n * Get the column listing for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getColumnListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnListing($table);\n }\n\n /**\n * Get the columns for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, type: string, type_name: string, nullable: bool, default: mixed, auto_increment: bool, comment: string|null, generation: array{type: string, expression: string|null}|null}>\n * @static\n */\n public static function getColumns($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumns($table);\n }\n\n /**\n * Get the indexes for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, columns: list<string>, type: string, unique: bool, primary: bool}>\n * @static\n */\n public static function getIndexes($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexes($table);\n }\n\n /**\n * Get the names of the indexes for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getIndexListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexListing($table);\n }\n\n /**\n * Determine if the given table has a given index.\n *\n * @param string $table\n * @param string|array $index\n * @param string|null $type\n * @return bool\n * @static\n */\n public static function hasIndex($table, $index, $type = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasIndex($table, $index, $type);\n }\n\n /**\n * Get the foreign keys for a given table.\n *\n * @param string $table\n * @return array\n * @static\n */\n public static function getForeignKeys($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getForeignKeys($table);\n }\n\n /**\n * Modify a table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function table($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->table($table, $callback);\n }\n\n /**\n * Create a new table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function create($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->create($table, $callback);\n }\n\n /**\n * Drop a table from the schema.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function drop($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->drop($table);\n }\n\n /**\n * Drop a table from the schema if it exists.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function dropIfExists($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropIfExists($table);\n }\n\n /**\n * Drop columns from a table schema.\n *\n * @param string $table\n * @param string|array<string> $columns\n * @return void\n * @static\n */\n public static function dropColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropColumns($table, $columns);\n }\n\n /**\n * Drop all types from the database.\n *\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function dropAllTypes()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTypes();\n }\n\n /**\n * Rename a table on the schema.\n *\n * @param string $from\n * @param string $to\n * @return void\n * @static\n */\n public static function rename($from, $to)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->rename($from, $to);\n }\n\n /**\n * Enable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function enableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->enableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function disableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->disableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints during the execution of a callback.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutForeignKeyConstraints($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->withoutForeignKeyConstraints($callback);\n }\n\n /**\n * Get the default schema name for the connection.\n *\n * @return string|null\n * @static\n */\n public static function getCurrentSchemaName()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaName();\n }\n\n /**\n * Parse the given database object reference and extract the schema and table.\n *\n * @param string $reference\n * @param string|bool|null $withDefaultSchema\n * @return array\n * @static\n */\n public static function parseSchemaAndTable($reference, $withDefaultSchema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->parseSchemaAndTable($reference, $withDefaultSchema);\n }\n\n /**\n * Get the database connection instance.\n *\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function getConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getConnection();\n }\n\n /**\n * Set the Schema Blueprint resolver callback.\n *\n * @param \\Closure(\\Illuminate\\Database\\Connection, string, \\Closure|null): \\Illuminate\\Database\\Schema\\Blueprint $resolver\n * @return void\n * @static\n */\n public static function blueprintResolver($resolver)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->blueprintResolver($resolver);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Session\\SessionManager\n */\n class Session {\n /**\n * Determine if requests for the same session should wait for each to finish before executing.\n *\n * @return bool\n * @static\n */\n public static function shouldBlock()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->shouldBlock();\n }\n\n /**\n * Get the name of the cache store / driver that should be used to acquire session locks.\n *\n * @return string|null\n * @static\n */\n public static function blockDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->blockDriver();\n }\n\n /**\n * Get the maximum number of seconds the session lock should be held for.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockLockSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockLockSeconds();\n }\n\n /**\n * Get the maximum number of seconds to wait while attempting to acquire a route block session lock.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockWaitSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockWaitSeconds();\n }\n\n /**\n * Get the session configuration.\n *\n * @return array\n * @static\n */\n public static function getSessionConfig()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getSessionConfig();\n }\n\n /**\n * Get the default session driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default session driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Start the session, reading the data from a handler.\n *\n * @return bool\n * @static\n */\n public static function start()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->start();\n }\n\n /**\n * Save the session data to storage.\n *\n * @return void\n * @static\n */\n public static function save()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->save();\n }\n\n /**\n * Age the flash data for the session.\n *\n * @return void\n * @static\n */\n public static function ageFlashData()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->ageFlashData();\n }\n\n /**\n * Get all of the session data.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->all();\n }\n\n /**\n * Get a subset of the session data.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all the session data except for a specified array of items.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->except($keys);\n }\n\n /**\n * Checks if a key exists.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the given key is missing from the session data.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if a key is present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if any of the given keys are present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function hasAny($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasAny($key);\n }\n\n /**\n * Get an item from the session.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the value of a given key and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Determine if the session contains old input.\n *\n * @param string|null $key\n * @return bool\n * @static\n */\n public static function hasOldInput($key = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasOldInput($key);\n }\n\n /**\n * Get the requested item from the flashed input array.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getOldInput($key = null, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getOldInput($key, $default);\n }\n\n /**\n * Replace the given session attributes entirely.\n *\n * @param array $attributes\n * @return void\n * @static\n */\n public static function replace($attributes)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->replace($attributes);\n }\n\n /**\n * Put a key / value pair or array of key / value pairs in the session.\n *\n * @param string|array $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function put($key, $value = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->put($key, $value);\n }\n\n /**\n * Get an item from the session, or store the default value.\n *\n * @param string $key\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function remember($key, $callback)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remember($key, $callback);\n }\n\n /**\n * Push a value onto a session array.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Increment the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return mixed\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Flash a key / value pair to the session.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function flash($key, $value = true)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flash($key, $value);\n }\n\n /**\n * Flash a key / value pair to the session for immediate use.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function now($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->now($key, $value);\n }\n\n /**\n * Reflash all of the session flash data.\n *\n * @return void\n * @static\n */\n public static function reflash()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->reflash();\n }\n\n /**\n * Reflash a subset of the current flash data.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function keep($keys = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->keep($keys);\n }\n\n /**\n * Flash an input array to the session.\n *\n * @param array $value\n * @return void\n * @static\n */\n public static function flashInput($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flashInput($value);\n }\n\n /**\n * Get the session cache instance.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function cache()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->cache();\n }\n\n /**\n * Remove an item from the session, returning its value.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function remove($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remove($key);\n }\n\n /**\n * Remove one or many items from the session.\n *\n * @param string|array $keys\n * @return void\n * @static\n */\n public static function forget($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->forget($keys);\n }\n\n /**\n * Remove all of the items from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flush();\n }\n\n /**\n * Flush the session data and regenerate the ID.\n *\n * @return bool\n * @static\n */\n public static function invalidate()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->invalidate();\n }\n\n /**\n * Generate a new session identifier.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function regenerate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->regenerate($destroy);\n }\n\n /**\n * Generate a new session ID for the session.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function migrate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->migrate($destroy);\n }\n\n /**\n * Determine if the session has been started.\n *\n * @return bool\n * @static\n */\n public static function isStarted()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isStarted();\n }\n\n /**\n * Get the name of the session.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getName();\n }\n\n /**\n * Set the name of the session.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setName($name)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setName($name);\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->id();\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function getId()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getId();\n }\n\n /**\n * Set the session ID.\n *\n * @param string|null $id\n * @return void\n * @static\n */\n public static function setId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setId($id);\n }\n\n /**\n * Determine if this is a valid session ID.\n *\n * @param string|null $id\n * @return bool\n * @static\n */\n public static function isValidId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isValidId($id);\n }\n\n /**\n * Set the existence of the session on the handler if applicable.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function setExists($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setExists($value);\n }\n\n /**\n * Get the CSRF token value.\n *\n * @return string\n * @static\n */\n public static function token()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->token();\n }\n\n /**\n * Regenerate the CSRF token value.\n *\n * @return void\n * @static\n */\n public static function regenerateToken()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->regenerateToken();\n }\n\n /**\n * Determine if the previous URI is available.\n *\n * @return bool\n * @static\n */\n public static function hasPreviousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasPreviousUri();\n }\n\n /**\n * Get the previous URL from the session as a URI instance.\n *\n * @return \\Illuminate\\Support\\Uri\n * @throws \\RuntimeException\n * @static\n */\n public static function previousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUri();\n }\n\n /**\n * Get the previous URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function previousUrl()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUrl();\n }\n\n /**\n * Set the \"previous\" URL in the session.\n *\n * @param string $url\n * @return void\n * @static\n */\n public static function setPreviousUrl($url)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setPreviousUrl($url);\n }\n\n /**\n * Specify that the user has confirmed their password.\n *\n * @return void\n * @static\n */\n public static function passwordConfirmed()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->passwordConfirmed();\n }\n\n /**\n * Get the underlying session handler implementation.\n *\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function getHandler()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getHandler();\n }\n\n /**\n * Set the underlying session handler implementation.\n *\n * @param \\SessionHandlerInterface $handler\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function setHandler($handler)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->setHandler($handler);\n }\n\n /**\n * Determine if the session handler needs a request.\n *\n * @return bool\n * @static\n */\n public static function handlerNeedsRequest()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->handlerNeedsRequest();\n }\n\n /**\n * Set the request on the handler instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequestOnHandler($request)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setRequestOnHandler($request);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Session\\Store::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Session\\Store::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Session\\Store::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Session\\Store::flushMacros();\n }\n\n }\n /**\n * @method static bool has(string $location)\n * @method static string read(string $location)\n * @method static \\League\\Flysystem\\DirectoryListing listContents(string $location, bool $deep = false)\n * @method static int fileSize(string $path)\n * @method static string visibility(string $path)\n * @method static void write(string $location, string $contents, array $config = [])\n * @method static void createDirectory(string $location, array $config = [])\n * @see \\Illuminate\\Filesystem\\FilesystemManager\n */\n class Storage {\n /**\n * Get a filesystem instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function drive($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->drive($name);\n }\n\n /**\n * Get a filesystem instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function disk($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->disk($name);\n }\n\n /**\n * Get a default cloud filesystem instance.\n *\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function cloud()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->cloud();\n }\n\n /**\n * Build an on-demand disk.\n *\n * @param string|array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create an instance of the local driver.\n *\n * @param array $config\n * @param string $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createLocalDriver($config, $name = 'local')\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createLocalDriver($config, $name);\n }\n\n /**\n * Create an instance of the ftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createFtpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createFtpDriver($config);\n }\n\n /**\n * Create an instance of the sftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createSftpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createSftpDriver($config);\n }\n\n /**\n * Create an instance of the Amazon S3 driver.\n *\n * @param array $config\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function createS3Driver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createS3Driver($config);\n }\n\n /**\n * Create a scoped driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createScopedDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createScopedDriver($config);\n }\n\n /**\n * Set the given disk instance.\n *\n * @param string $name\n * @param mixed $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function set($name, $disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->set($name, $disk);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default cloud driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultCloudDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultCloudDriver();\n }\n\n /**\n * Unset the given disk instances.\n *\n * @param array|string $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function forgetDisk($disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->forgetDisk($disk);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if temporary URLs can be generated.\n *\n * @return bool\n * @static\n */\n public static function providesTemporaryUrls()\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->providesTemporaryUrls();\n }\n\n /**\n * Get a temporary URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return string\n * @static\n */\n public static function temporaryUrl($path, $expiration, $options = [])\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUrl($path, $expiration, $options);\n }\n\n /**\n * Specify the name of the disk the adapter is managing.\n *\n * @param string $disk\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function diskName($disk)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->diskName($disk);\n }\n\n /**\n * Indicate that signed URLs should serve the corresponding files.\n *\n * @param bool $serve\n * @param \\Closure|null $urlGeneratorResolver\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function shouldServeSignedUrls($serve = true, $urlGeneratorResolver = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->shouldServeSignedUrls($serve, $urlGeneratorResolver);\n }\n\n /**\n * Assert that the given file or directory exists.\n *\n * @param string|array $path\n * @param string|null $content\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertExists($path, $content = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertExists($path, $content);\n }\n\n /**\n * Assert that the number of files in path equals the expected count.\n *\n * @param string $path\n * @param int $count\n * @param bool $recursive\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertCount($path, $count, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertCount($path, $count, $recursive);\n }\n\n /**\n * Assert that the given file or directory does not exist.\n *\n * @param string|array $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertMissing($path);\n }\n\n /**\n * Assert that the given directory is empty.\n *\n * @param string $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertDirectoryEmpty($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertDirectoryEmpty($path);\n }\n\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->missing($path);\n }\n\n /**\n * Determine if a file exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileExists($path);\n }\n\n /**\n * Determine if a file is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileMissing($path);\n }\n\n /**\n * Determine if a directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryExists($path);\n }\n\n /**\n * Determine if a directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryMissing($path);\n }\n\n /**\n * Get the full path to the file that exists at the given relative path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->path($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @return string|null\n * @static\n */\n public static function get($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->get($path);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @return array|null\n * @static\n */\n public static function json($path, $flags = 0)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->json($path, $flags);\n }\n\n /**\n * Create a streamed response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function response($path, $name = null, $headers = [], $disposition = 'inline')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->response($path, $name, $headers, $disposition);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function serve($request, $path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->serve($request, $path, $name, $headers);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function download($path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->download($path, $name, $headers);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param \\Psr\\Http\\Message\\StreamInterface|\\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|resource $contents\n * @param mixed $options\n * @return string|bool\n * @static\n */\n public static function put($path, $contents, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->put($path, $contents, $options);\n }\n\n /**\n * Store the uploaded file on the disk.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFile($path, $file = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFile($path, $file, $options);\n }\n\n /**\n * Store the uploaded file on the disk with a given name.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param string|array|null $name\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFileAs($path, $file, $name = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFileAs($path, $file, $name, $options);\n }\n\n /**\n * Get the visibility for the given path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getVisibility($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getVisibility($path);\n }\n\n /**\n * Set the visibility for the given path.\n *\n * @param string $path\n * @param string $visibility\n * @return bool\n * @static\n */\n public static function setVisibility($path, $visibility)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->setVisibility($path, $visibility);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function prepend($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->prepend($path, $data, $separator);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function append($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->append($path, $data, $separator);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function copy($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->copy($from, $to);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function move($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->move($from, $to);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the checksum for a file.\n *\n * @return string|false\n * @throws UnableToProvideChecksum\n * @static\n */\n public static function checksum($path, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->checksum($path, $options);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Get a resource to read the file.\n *\n * @param string $path\n * @return resource|null The path resource or null on failure.\n * @static\n */\n public static function readStream($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->readStream($path);\n }\n\n /**\n * Write a new file using a stream.\n *\n * @param string $path\n * @param resource $resource\n * @param array $options\n * @return bool\n * @static\n */\n public static function writeStream($path, $resource, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->writeStream($path, $resource, $options);\n }\n\n /**\n * Get the URL for the file at the given path.\n *\n * @param string $path\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function url($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->url($path);\n }\n\n /**\n * Get a temporary upload URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return array\n * @throws \\RuntimeException\n * @static\n */\n public static function temporaryUploadUrl($path, $expiration, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUploadUrl($path, $expiration, $options);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function files($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->files($directory, $recursive);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allFiles($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allFiles($directory);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function directories($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directories($directory, $recursive);\n }\n\n /**\n * Get all the directories within a given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allDirectories($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allDirectories($directory);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function makeDirectory($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->makeDirectory($path);\n }\n\n /**\n * Recursively delete a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->deleteDirectory($directory);\n }\n\n /**\n * Get the Flysystem driver.\n *\n * @return \\League\\Flysystem\\FilesystemOperator\n * @static\n */\n public static function getDriver()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getDriver();\n }\n\n /**\n * Get the Flysystem adapter.\n *\n * @return \\League\\Flysystem\\FilesystemAdapter\n * @static\n */\n public static function getAdapter()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getAdapter();\n }\n\n /**\n * Get the configuration values.\n *\n * @return array\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getConfig();\n }\n\n /**\n * Define a custom callback that generates file download responses.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function serveUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->serveUsing($callback);\n }\n\n /**\n * Define a custom temporary URL builder callback.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function buildTemporaryUrlsUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->buildTemporaryUrlsUsing($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n return \\Illuminate\\Filesystem\\LocalFilesystemAdapter::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\UrlGenerator\n */\n class URL {\n /**\n * Get the full URL for the current request.\n *\n * @return string\n * @static\n */\n public static function full()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->full();\n }\n\n /**\n * Get the current URL for the request.\n *\n * @return string\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->current();\n }\n\n /**\n * Get the URL for the previous request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previous($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previous($fallback);\n }\n\n /**\n * Get the previous path info for the request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previousPath($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previousPath($fallback);\n }\n\n /**\n * Generate an absolute URL to the given path.\n *\n * @param string $path\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function to($path, $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->to($path, $extra, $secure);\n }\n\n /**\n * Generate an absolute URL with the given query parameters.\n *\n * @param string $path\n * @param array $query\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function query($path, $query = [], $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->query($path, $query, $extra, $secure);\n }\n\n /**\n * Generate a secure, absolute URL to the given path.\n *\n * @param string $path\n * @param array $parameters\n * @return string\n * @static\n */\n public static function secure($path, $parameters = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secure($path, $parameters);\n }\n\n /**\n * Generate the URL to an application asset.\n *\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function asset($path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->asset($path, $secure);\n }\n\n /**\n * Generate the URL to a secure asset.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function secureAsset($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secureAsset($path);\n }\n\n /**\n * Generate the URL to an asset from a custom root domain such as CDN, etc.\n *\n * @param string $root\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function assetFrom($root, $path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->assetFrom($root, $path, $secure);\n }\n\n /**\n * Get the default scheme for a raw URL.\n *\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function formatScheme($secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatScheme($secure);\n }\n\n /**\n * Create a signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signedRoute($name, $parameters, $expiration, $absolute);\n }\n\n /**\n * Create a temporary signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param \\DateTimeInterface|\\DateInterval|int $expiration\n * @param array $parameters\n * @param bool $absolute\n * @return string\n * @static\n */\n public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute);\n }\n\n /**\n * Determine if the given request has a valid signature.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the given request has a valid signature for a relative URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidRelativeSignature($request, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidRelativeSignature($request, $ignoreQuery);\n }\n\n /**\n * Determine if the signature from the given request matches the URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the expires timestamp from the given request is not from the past.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return bool\n * @static\n */\n public static function signatureHasNotExpired($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signatureHasNotExpired($request);\n }\n\n /**\n * Get the URL to a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Symfony\\Component\\Routing\\Exception\\RouteNotFoundException|\\InvalidArgumentException\n * @static\n */\n public static function route($name, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->route($name, $parameters, $absolute);\n }\n\n /**\n * Get the URL for a given route instance.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Illuminate\\Routing\\Exceptions\\UrlGenerationException\n * @static\n */\n public static function toRoute($route, $parameters, $absolute)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->toRoute($route, $parameters, $absolute);\n }\n\n /**\n * Get the URL to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function action($action, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->action($action, $parameters, $absolute);\n }\n\n /**\n * Format the array of URL parameters.\n *\n * @param mixed $parameters\n * @return array\n * @static\n */\n public static function formatParameters($parameters)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatParameters($parameters);\n }\n\n /**\n * Get the base URL for the request.\n *\n * @param string $scheme\n * @param string|null $root\n * @return string\n * @static\n */\n public static function formatRoot($scheme, $root = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatRoot($scheme, $root);\n }\n\n /**\n * Format the given URL segments into a single URL.\n *\n * @param string $root\n * @param string $path\n * @param \\Illuminate\\Routing\\Route|null $route\n * @return string\n * @static\n */\n public static function format($root, $path, $route = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->format($root, $path, $route);\n }\n\n /**\n * Determine if the given path is a valid URL.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isValidUrl($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->isValidUrl($path);\n }\n\n /**\n * Set the default named parameters used by the URL generator.\n *\n * @param array $defaults\n * @return void\n * @static\n */\n public static function defaults($defaults)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->defaults($defaults);\n }\n\n /**\n * Get the default named parameters used by the URL generator.\n *\n * @return array\n * @static\n */\n public static function getDefaultParameters()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getDefaultParameters();\n }\n\n /**\n * Force the scheme for URLs.\n *\n * @param string|null $scheme\n * @return void\n * @static\n */\n public static function forceScheme($scheme)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceScheme($scheme);\n }\n\n /**\n * Force the use of the HTTPS scheme for all generated URLs.\n *\n * @param bool $force\n * @return void\n * @static\n */\n public static function forceHttps($force = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceHttps($force);\n }\n\n /**\n * Set the URL origin for all generated URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useOrigin($root);\n }\n\n /**\n * Set the forced root URL.\n *\n * @param string|null $root\n * @return void\n * @deprecated Use useOrigin\n * @static\n */\n public static function forceRootUrl($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceRootUrl($root);\n }\n\n /**\n * Set the URL origin for all generated asset URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useAssetOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useAssetOrigin($root);\n }\n\n /**\n * Set a callback to be used to format the host of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatHostUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatHostUsing($callback);\n }\n\n /**\n * Set a callback to be used to format the path of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatPathUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatPathUsing($callback);\n }\n\n /**\n * Get the path formatter being used by the URL generator.\n *\n * @return \\Closure\n * @static\n */\n public static function pathFormatter()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->pathFormatter();\n }\n\n /**\n * Get the request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->setRequest($request);\n }\n\n /**\n * Set the route collection.\n *\n * @param \\Illuminate\\Routing\\RouteCollectionInterface $routes\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRoutes($routes);\n }\n\n /**\n * Set the session resolver for the generator.\n *\n * @param callable $sessionResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setSessionResolver($sessionResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setSessionResolver($sessionResolver);\n }\n\n /**\n * Set the encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setKeyResolver($keyResolver);\n }\n\n /**\n * Clone a new instance of the URL generator with a different encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function withKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->withKeyResolver($keyResolver);\n }\n\n /**\n * Set the callback that should be used to attempt to resolve missing named routes.\n *\n * @param callable $missingNamedRouteResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver);\n }\n\n /**\n * Get the root controller namespace.\n *\n * @return string\n * @static\n */\n public static function getRootControllerNamespace()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRootControllerNamespace();\n }\n\n /**\n * Set the root controller namespace.\n *\n * @param string $rootNamespace\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRootControllerNamespace($rootNamespace)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRootControllerNamespace($rootNamespace);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\UrlGenerator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\UrlGenerator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\UrlGenerator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\UrlGenerator::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Validation\\Factory\n */\n class Validator {\n /**\n * Create a new Validator instance.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return \\Illuminate\\Validation\\Validator\n * @static\n */\n public static function make($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->make($data, $rules, $messages, $attributes);\n }\n\n /**\n * Validate the given data against the provided rules.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return array\n * @throws \\Illuminate\\Validation\\ValidationException\n * @static\n */\n public static function validate($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->validate($data, $rules, $messages, $attributes);\n }\n\n /**\n * Register a custom validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extend($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extend($rule, $extension, $message);\n }\n\n /**\n * Register a custom implicit validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendImplicit($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendImplicit($rule, $extension, $message);\n }\n\n /**\n * Register a custom dependent validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendDependent($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendDependent($rule, $extension, $message);\n }\n\n /**\n * Register a custom validator message replacer.\n *\n * @param string $rule\n * @param \\Closure|string $replacer\n * @return void\n * @static\n */\n public static function replacer($rule, $replacer)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->replacer($rule, $replacer);\n }\n\n /**\n * Indicate that unvalidated array keys should be included in validated data when the parent array is validated.\n *\n * @return void\n * @static\n */\n public static function includeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->includeUnvalidatedArrayKeys();\n }\n\n /**\n * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated.\n *\n * @return void\n * @static\n */\n public static function excludeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->excludeUnvalidatedArrayKeys();\n }\n\n /**\n * Set the Validator instance resolver.\n *\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function resolver($resolver)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->resolver($resolver);\n }\n\n /**\n * Get the Translator implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Translator\n * @static\n */\n public static function getTranslator()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getTranslator();\n }\n\n /**\n * Get the Presence Verifier implementation.\n *\n * @return \\Illuminate\\Validation\\PresenceVerifierInterface\n * @static\n */\n public static function getPresenceVerifier()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getPresenceVerifier();\n }\n\n /**\n * Set the Presence Verifier implementation.\n *\n * @param \\Illuminate\\Validation\\PresenceVerifierInterface $presenceVerifier\n * @return void\n * @static\n */\n public static function setPresenceVerifier($presenceVerifier)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->setPresenceVerifier($presenceVerifier);\n }\n\n /**\n * Get the container instance used by the validation factory.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container|null\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the validation factory.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Validation\\Factory\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Factory\n */\n class View {\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $path\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function file($path, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->file($path, $data, $mergeData);\n }\n\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function make($view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->make($view, $data, $mergeData);\n }\n\n /**\n * Get the first view that actually exists from the given list.\n *\n * @param array $views\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function first($views, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->first($views, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderWhen($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderWhen($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on the negation of a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderUnless($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderUnless($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered contents of a partial from a loop.\n *\n * @param string $view\n * @param array $data\n * @param string $iterator\n * @param string $empty\n * @return string\n * @static\n */\n public static function renderEach($view, $data, $iterator, $empty = 'raw|')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderEach($view, $data, $iterator, $empty);\n }\n\n /**\n * Determine if a given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function exists($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->exists($view);\n }\n\n /**\n * Get the appropriate view engine for the given path.\n *\n * @param string $path\n * @return \\Illuminate\\Contracts\\View\\Engine\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function getEngineFromPath($path)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineFromPath($path);\n }\n\n /**\n * Add a piece of shared data to the environment.\n *\n * @param array|string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function share($key, $value = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->share($key, $value);\n }\n\n /**\n * Increment the rendering counter.\n *\n * @return void\n * @static\n */\n public static function incrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementRender();\n }\n\n /**\n * Decrement the rendering counter.\n *\n * @return void\n * @static\n */\n public static function decrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->decrementRender();\n }\n\n /**\n * Check if there are no active render operations.\n *\n * @return bool\n * @static\n */\n public static function doneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->doneRendering();\n }\n\n /**\n * Determine if the given once token has been rendered.\n *\n * @param string $id\n * @return bool\n * @static\n */\n public static function hasRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasRenderedOnce($id);\n }\n\n /**\n * Mark the given once token as having been rendered.\n *\n * @param string $id\n * @return void\n * @static\n */\n public static function markAsRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->markAsRenderedOnce($id);\n }\n\n /**\n * Add a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function addLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLocation($location);\n }\n\n /**\n * Prepend a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function prependLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->prependLocation($location);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function addNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->addNamespace($namespace, $hints);\n }\n\n /**\n * Prepend a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function prependNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->prependNamespace($namespace, $hints);\n }\n\n /**\n * Replace the namespace hints for the given namespace.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function replaceNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->replaceNamespace($namespace, $hints);\n }\n\n /**\n * Register a valid view extension and its engine.\n *\n * @param string $extension\n * @param string $engine\n * @param \\Closure|null $resolver\n * @return void\n * @static\n */\n public static function addExtension($extension, $engine, $resolver = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addExtension($extension, $engine, $resolver);\n }\n\n /**\n * Flush all of the factory state like sections and stacks.\n *\n * @return void\n * @static\n */\n public static function flushState()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushState();\n }\n\n /**\n * Flush all of the section contents if done rendering.\n *\n * @return void\n * @static\n */\n public static function flushStateIfDoneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStateIfDoneRendering();\n }\n\n /**\n * Get the extension to engine bindings.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Get the engine resolver instance.\n *\n * @return \\Illuminate\\View\\Engines\\EngineResolver\n * @static\n */\n public static function getEngineResolver()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineResolver();\n }\n\n /**\n * Get the view finder instance.\n *\n * @return \\Illuminate\\View\\ViewFinderInterface\n * @static\n */\n public static function getFinder()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFinder();\n }\n\n /**\n * Set the view finder instance.\n *\n * @param \\Illuminate\\View\\ViewFinderInterface $finder\n * @return void\n * @static\n */\n public static function setFinder($finder)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setFinder($finder);\n }\n\n /**\n * Flush the cache of views located by the finder.\n *\n * @return void\n * @static\n */\n public static function flushFinderCache()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFinderCache();\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the IoC container instance.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setContainer($container);\n }\n\n /**\n * Get an item from the shared data.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function shared($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->shared($key, $default);\n }\n\n /**\n * Get all of the shared data for the environment.\n *\n * @return array\n * @static\n */\n public static function getShared()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getShared();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\View\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\View\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\View\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\View\\Factory::flushMacros();\n }\n\n /**\n * Start a component rendering process.\n *\n * @param \\Illuminate\\Contracts\\View\\View|\\Illuminate\\Contracts\\Support\\Htmlable|\\Closure|string $view\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponent($view, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponent($view, $data);\n }\n\n /**\n * Get the first view that actually exists from the given list, and start a component.\n *\n * @param array $names\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponentFirst($names, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponentFirst($names, $data);\n }\n\n /**\n * Render the current component.\n *\n * @return string\n * @static\n */\n public static function renderComponent()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderComponent();\n }\n\n /**\n * Get an item from the component data that exists above the current component.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getConsumableComponentData($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getConsumableComponentData($key, $default);\n }\n\n /**\n * Start the slot rendering process.\n *\n * @param string $name\n * @param string|null $content\n * @param array $attributes\n * @return void\n * @static\n */\n public static function slot($name, $content = null, $attributes = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->slot($name, $content, $attributes);\n }\n\n /**\n * Save the slot content for rendering.\n *\n * @return void\n * @static\n */\n public static function endSlot()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->endSlot();\n }\n\n /**\n * Register a view creator event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function creator($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->creator($views, $callback);\n }\n\n /**\n * Register multiple view composers via an array.\n *\n * @param array $composers\n * @return array\n * @static\n */\n public static function composers($composers)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composers($composers);\n }\n\n /**\n * Register a view composer event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function composer($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composer($views, $callback);\n }\n\n /**\n * Call the composer for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callComposer($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callComposer($view);\n }\n\n /**\n * Call the creator for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callCreator($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callCreator($view);\n }\n\n /**\n * Start injecting content into a fragment.\n *\n * @param string $fragment\n * @return void\n * @static\n */\n public static function startFragment($fragment)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startFragment($fragment);\n }\n\n /**\n * Stop injecting content into a fragment.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopFragment()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopFragment();\n }\n\n /**\n * Get the contents of a fragment.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getFragment($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragment($name, $default);\n }\n\n /**\n * Get the entire array of rendered fragments.\n *\n * @return array\n * @static\n */\n public static function getFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragments();\n }\n\n /**\n * Flush all of the fragments.\n *\n * @return void\n * @static\n */\n public static function flushFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFragments();\n }\n\n /**\n * Start injecting content into a section.\n *\n * @param string $section\n * @param string|null $content\n * @return void\n * @static\n */\n public static function startSection($section, $content = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startSection($section, $content);\n }\n\n /**\n * Inject inline content into a section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function inject($section, $content)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->inject($section, $content);\n }\n\n /**\n * Stop injecting content into a section and return its contents.\n *\n * @return string\n * @static\n */\n public static function yieldSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldSection();\n }\n\n /**\n * Stop injecting content into a section.\n *\n * @param bool $overwrite\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopSection($overwrite = false)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopSection($overwrite);\n }\n\n /**\n * Stop injecting content into a section and append it.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function appendSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->appendSection();\n }\n\n /**\n * Get the string contents of a section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldContent($section, $default);\n }\n\n /**\n * Get the parent placeholder for the current request.\n *\n * @param string $section\n * @return string\n * @static\n */\n public static function parentPlaceholder($section = '')\n {\n return \\Illuminate\\View\\Factory::parentPlaceholder($section);\n }\n\n /**\n * Check if section exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasSection($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasSection($name);\n }\n\n /**\n * Check if section does not exist.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function sectionMissing($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->sectionMissing($name);\n }\n\n /**\n * Get the contents of a section.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getSection($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSection($name, $default);\n }\n\n /**\n * Get the entire array of sections.\n *\n * @return array\n * @static\n */\n public static function getSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSections();\n }\n\n /**\n * Flush all of the sections.\n *\n * @return void\n * @static\n */\n public static function flushSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushSections();\n }\n\n /**\n * Add new loop to the stack.\n *\n * @param \\Countable|array $data\n * @return void\n * @static\n */\n public static function addLoop($data)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLoop($data);\n }\n\n /**\n * Increment the top loop's indices.\n *\n * @return void\n * @static\n */\n public static function incrementLoopIndices()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementLoopIndices();\n }\n\n /**\n * Pop a loop from the top of the loop stack.\n *\n * @return void\n * @static\n */\n public static function popLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->popLoop();\n }\n\n /**\n * Get an instance of the last loop in the stack.\n *\n * @return \\stdClass|null\n * @static\n */\n public static function getLastLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLastLoop();\n }\n\n /**\n * Get the entire loop stack.\n *\n * @return array\n * @static\n */\n public static function getLoopStack()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLoopStack();\n }\n\n /**\n * Start injecting content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPush($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPush($section, $content);\n }\n\n /**\n * Stop injecting content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPush()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPush();\n }\n\n /**\n * Start prepending content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPrepend($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPrepend($section, $content);\n }\n\n /**\n * Stop prepending content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPrepend()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPrepend();\n }\n\n /**\n * Get the string contents of a push section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldPushContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldPushContent($section, $default);\n }\n\n /**\n * Flush all of the stacks.\n *\n * @return void\n * @static\n */\n public static function flushStacks()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStacks();\n }\n\n /**\n * Start a translation block.\n *\n * @param array $replacements\n * @return void\n * @static\n */\n public static function startTranslation($replacements = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startTranslation($replacements);\n }\n\n /**\n * Render the current translation.\n *\n * @return string\n * @static\n */\n public static function renderTranslation()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderTranslation();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Vite\n */\n class Vite {\n /**\n * Get the preloaded assets.\n *\n * @return array\n * @static\n */\n public static function preloadedAssets()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->preloadedAssets();\n }\n\n /**\n * Get the Content Security Policy nonce applied to all generated tags.\n *\n * @return string|null\n * @static\n */\n public static function cspNonce()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->cspNonce();\n }\n\n /**\n * Generate or set a Content Security Policy nonce to apply to all generated tags.\n *\n * @param string|null $nonce\n * @return string\n * @static\n */\n public static function useCspNonce($nonce = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useCspNonce($nonce);\n }\n\n /**\n * Use the given key to detect integrity hashes in the manifest.\n *\n * @param string|false $key\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useIntegrityKey($key)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useIntegrityKey($key);\n }\n\n /**\n * Set the Vite entry points.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function withEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->withEntryPoints($entryPoints);\n }\n\n /**\n * Merge additional Vite entry points with the current set.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function mergeEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->mergeEntryPoints($entryPoints);\n }\n\n /**\n * Set the filename for the manifest file.\n *\n * @param string $filename\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useManifestFilename($filename)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useManifestFilename($filename);\n }\n\n /**\n * Resolve asset paths using the provided resolver.\n *\n * @param callable|null $resolver\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function createAssetPathsUsing($resolver)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->createAssetPathsUsing($resolver);\n }\n\n /**\n * Get the Vite \"hot\" file path.\n *\n * @return string\n * @static\n */\n public static function hotFile()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->hotFile();\n }\n\n /**\n * Set the Vite \"hot\" file path.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useHotFile($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useHotFile($path);\n }\n\n /**\n * Set the Vite build directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useBuildDirectory($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useBuildDirectory($path);\n }\n\n /**\n * Use the given callback to resolve attributes for script tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useScriptTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useScriptTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for style tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useStyleTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useStyleTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for preload tags.\n *\n * @param (callable(string, string, ?array, ?array): (array|false))|array|false $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePreloadTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePreloadTagAttributes($attributes);\n }\n\n /**\n * Eagerly prefetch assets.\n *\n * @param int|null $concurrency\n * @param string $event\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function prefetch($concurrency = null, $event = 'load')\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->prefetch($concurrency, $event);\n }\n\n /**\n * Use the \"waterfall\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useWaterfallPrefetching($concurrency = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useWaterfallPrefetching($concurrency);\n }\n\n /**\n * Use the \"aggressive\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useAggressivePrefetching()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useAggressivePrefetching();\n }\n\n /**\n * Set the prefetching strategy.\n *\n * @param 'waterfall'|'aggressive'|null $strategy\n * @param array $config\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePrefetchStrategy($strategy, $config = [])\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePrefetchStrategy($strategy, $config);\n }\n\n /**\n * Generate React refresh runtime script.\n *\n * @return \\Illuminate\\Support\\HtmlString|void\n * @static\n */\n public static function reactRefresh()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->reactRefresh();\n }\n\n /**\n * Get the URL for an asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @static\n */\n public static function asset($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->asset($asset, $buildDirectory);\n }\n\n /**\n * Get the content of a given asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @throws \\Illuminate\\Foundation\\ViteException\n * @static\n */\n public static function content($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->content($asset, $buildDirectory);\n }\n\n /**\n * Get a unique hash representing the current manifest, or null if there is no manifest.\n *\n * @param string|null $buildDirectory\n * @return string|null\n * @static\n */\n public static function manifestHash($buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->manifestHash($buildDirectory);\n }\n\n /**\n * Determine if the HMR server is running.\n *\n * @return bool\n * @static\n */\n public static function isRunningHot()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->isRunningHot();\n }\n\n /**\n * Get the Vite tag content as a string of HTML.\n *\n * @return string\n * @static\n */\n public static function toHtml()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->toHtml();\n }\n\n /**\n * Flush state.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n $instance->flush();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Vite::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Vite::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Vite::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Vite::flushMacros();\n }\n\n }\n /**\n * @method static void createSubscription(array|string $channels, \\Closure $callback, string $method = 'subscribe')\n * @method static \\Illuminate\\Redis\\Limiters\\ConcurrencyLimiterBuilder funnel(string $name)\n * @method static \\Illuminate\\Redis\\Limiters\\DurationLimiterBuilder throttle(string $name)\n * @method static mixed client()\n * @method static void subscribe(array|string $channels, \\Closure $callback)\n * @method static void psubscribe(array|string $channels, \\Closure $callback)\n * @method static mixed command(string $method, array $parameters = [])\n * @method static void listen(\\Closure $callback)\n * @method static string|null getName()\n * @method static \\Illuminate\\Redis\\Connections\\Connection setName(string $name)\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $events)\n * @method static void unsetEventDispatcher()\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @method static mixed macroCall(string $method, array $parameters)\n * @see \\Illuminate\\Redis\\RedisManager\n */\n class Redis {\n /**\n * Get a Redis connection by name.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Resolve the given connection by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array\n * @static\n */\n public static function connections()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connections();\n }\n\n /**\n * Enable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function enableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->enableEvents();\n }\n\n /**\n * Disable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function disableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->disableEvents();\n }\n\n /**\n * Set the default driver.\n *\n * @param string $driver\n * @return void\n * @static\n */\n public static function setDriver($driver)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->setDriver($driver);\n }\n\n /**\n * Disconnect the given connection and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Redis\\RedisManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n }\n }\n\nnamespace Aws\\Laravel {\n /**\n * Facade for the AWS service\n *\n */\n class AwsFacade {\n /**\n * Get a client by name using an array of constructor options.\n *\n * @param string $name Service name or namespace (e.g., DynamoDb, s3).\n * @param array $args Arguments to configure the client.\n * @return \\Aws\\AwsClientInterface\n * @throws \\InvalidArgumentException if any required options are missing or\n * the service is not supported.\n * @see Aws\\AwsClient::__construct for a list of available options for args.\n * @static\n */\n public static function createClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createClient($name, $args);\n }\n\n /**\n * @static\n */\n public static function createMultiRegionClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createMultiRegionClient($name, $args);\n }\n\n /**\n * Clone existing SDK instance with ability to pass an associative array\n * of extra client settings.\n *\n * @param array $args\n * @return self\n * @static\n */\n public static function copy($args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->copy($args);\n }\n\n /**\n * Determine the endpoint prefix from a client namespace.\n *\n * @param string $name Namespace name\n * @return string\n * @internal\n * @deprecated Use the `\\Aws\\manifest()` function instead.\n * @static\n */\n public static function getEndpointPrefix($name)\n {\n return \\Aws\\Sdk::getEndpointPrefix($name);\n }\n\n }\n }\n\nnamespace Laravolt\\Avatar {\n /**\n */\n class Facade {\n /**\n * @static\n */\n public static function setGenerator($generator)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setGenerator($generator);\n }\n\n /**\n * @static\n */\n public static function create($name)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->create($name);\n }\n\n /**\n * @static\n */\n public static function applyTheme($config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->applyTheme($config);\n }\n\n /**\n * @static\n */\n public static function addTheme($name, $config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->addTheme($name, $config);\n }\n\n /**\n * @static\n */\n public static function toBase64()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toBase64();\n }\n\n /**\n * @static\n */\n public static function save($path, $quality = 90)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->save($path, $quality);\n }\n\n /**\n * @static\n */\n public static function toSvg()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toSvg();\n }\n\n /**\n * @static\n */\n public static function toGravatar($param = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toGravatar($param);\n }\n\n /**\n * @static\n */\n public static function getInitial()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getInitial();\n }\n\n /**\n * @static\n */\n public static function getImageObject()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getImageObject();\n }\n\n /**\n * @static\n */\n public static function buildAvatar()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->buildAvatar();\n }\n\n /**\n * @static\n */\n public static function getAttribute($key)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getAttribute($key);\n }\n\n /**\n * Get background color\n *\n * @static\n */\n public static function getBackground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getBackground();\n }\n\n /**\n * Get foreground color\n *\n * @static\n */\n public static function getForeground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getForeground();\n }\n\n /**\n * Get shape\n *\n * @static\n */\n public static function getShape()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getShape();\n }\n\n /**\n * @static\n */\n public static function setTheme($theme)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setTheme($theme);\n }\n\n /**\n * @static\n */\n public static function setBackground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBackground($hex);\n }\n\n /**\n * @static\n */\n public static function setForeground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setForeground($hex);\n }\n\n /**\n * @static\n */\n public static function setDimension($width, $height = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setDimension($width, $height);\n }\n\n /**\n * @static\n */\n public static function setResponsive($responsive)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setResponsive($responsive);\n }\n\n /**\n * @static\n */\n public static function setFontSize($size)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontSize($size);\n }\n\n /**\n * @static\n */\n public static function setFontFamily($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontFamily($font);\n }\n\n /**\n * @static\n */\n public static function setBorder($size, $color, $radius = 0)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorder($size, $color, $radius);\n }\n\n /**\n * @static\n */\n public static function setBorderRadius($radius)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorderRadius($radius);\n }\n\n /**\n * @static\n */\n public static function setShape($shape)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setShape($shape);\n }\n\n /**\n * @static\n */\n public static function setChars($chars)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setChars($chars);\n }\n\n /**\n * @static\n */\n public static function setFont($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFont($font);\n }\n\n }\n }\n\nnamespace Spatie\\Fractal\\Facades {\n /**\n * @see \\Spatie\\Fractal\\Fractal\n */\n class Fractal extends \\Spatie\\Fractalistic\\Fractal {\n /**\n * @param null|mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return static\n * @static\n */\n public static function create($data = null, $transformer = null, $serializer = null)\n {\n return \\Spatie\\Fractal\\Fractal::create($data, $transformer, $serializer);\n }\n\n /**\n * @static\n */\n public static function respond($statusCode = 200, $headers = [], $options = 0)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->respond($statusCode, $headers, $options);\n }\n\n /**\n * Set the collection data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function collection($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->collection($data, $transformer, $resourceName);\n }\n\n /**\n * Set the item data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function item($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->item($data, $transformer, $resourceName);\n }\n\n /**\n * Set the primitive data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function primitive($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->primitive($data, $transformer, $resourceName);\n }\n\n /**\n * Set the data that must be transformed.\n *\n * @param string $dataType\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function data($dataType, $data, $transformer = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->data($dataType, $data, $transformer);\n }\n\n /**\n * Set the class or function that will perform the transform.\n *\n * @param string|callable|\\League\\Fractal\\TransformerAbstract|null $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function transformWith($transformer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->transformWith($transformer);\n }\n\n /**\n * Set the serializer to be used.\n *\n * @param string|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function serializeWith($serializer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->serializeWith($serializer);\n }\n\n /**\n * Set a Fractal paginator for the data.\n *\n * @param \\League\\Fractal\\Pagination\\PaginatorInterface $paginator\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function paginateWith($paginator)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->paginateWith($paginator);\n }\n\n /**\n * Set a Fractal cursor for the data.\n *\n * @param \\League\\Fractal\\Pagination\\CursorInterface $cursor\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withCursor($cursor)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withCursor($cursor);\n }\n\n /**\n * Specify the includes.\n *\n * @param array|string $includes Array or string of resources to include.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseIncludes($includes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseIncludes($includes);\n }\n\n /**\n * Specify the excludes.\n *\n * @param array|string $excludes Array or string of resources to exclude.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseExcludes($excludes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseExcludes($excludes);\n }\n\n /**\n * Specify the fieldsets to include in the response.\n *\n * @param array $fieldsets array with key = resourceName and value = fields to include\n * (array or comma separated string with field names)\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseFieldsets($fieldsets)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseFieldsets($fieldsets);\n }\n\n /**\n * Set the meta data.\n *\n * @param $array,...\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function addMeta()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->addMeta();\n }\n\n /**\n * Set the resource name, to replace 'data' as the root of the collection or item.\n *\n * @param string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withResourceName($resourceName)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withResourceName($resourceName);\n }\n\n /**\n * Upper limit to how many levels of included data are allowed.\n *\n * @param int $recursionLimit\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function limitRecursion($recursionLimit)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->limitRecursion($recursionLimit);\n }\n\n /**\n * Perform the transformation to json.\n *\n * @param int $options\n * @return string\n * @static\n */\n public static function toJson($options = 0)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toJson($options);\n }\n\n /**\n * Perform the transformation to array.\n *\n * @return array|null\n * @static\n */\n public static function toArray()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toArray();\n }\n\n /**\n * Create fractal data.\n *\n * @return \\League\\Fractal\\Scope\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @throws \\Spatie\\Fractalistic\\Exceptions\\NoTransformerSpecified\n * @static\n */\n public static function createData()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->createData();\n }\n\n /**\n * Get the resource class.\n *\n * @return string\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResourceClass()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceClass();\n }\n\n /**\n * Get the resource.\n *\n * @return \\League\\Fractal\\Resource\\ResourceInterface\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResource()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResource();\n }\n\n /**\n * Return the name of the resource.\n *\n * @return string|null\n * @static\n */\n public static function getResourceName()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceName();\n }\n\n /**\n * Convert the object into something JSON serializable.\n *\n * @return array|null\n * @static\n */\n public static function jsonSerialize()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->jsonSerialize();\n }\n\n /**\n * Get the transformer.\n *\n * @return string|callable|\\League\\Fractal\\TransformerAbstract|null\n * @static\n */\n public static function getTransformer()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getTransformer();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Spatie\\Fractal\\Fractal::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Spatie\\Fractal\\Fractal::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Spatie\\Fractal\\Fractal::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Spatie\\Fractal\\Fractal::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n }\n\nnamespace Laratrust {\n /**\n */\n class LaratrustFacade {\n /**\n * Checks if the current user has a role by its name.\n *\n * @static\n */\n public static function hasRole($role, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasRole($role, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n *\n * @static\n */\n public static function hasPermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasPermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n *\n * @static\n */\n public static function doesntHavePermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->doesntHavePermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n * \n * Alias to hasPermission.\n *\n * @static\n */\n public static function isAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n * \n * Alias to doesntHavePermission.\n *\n * @static\n */\n public static function isNotAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isNotAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a role or permission by its name.\n *\n * @param array|string $roles The role(s) needed.\n * @param array|string $permissions The permission(s) needed.\n * @param array $options The Options.\n * @return bool\n * @static\n */\n public static function ability($roles, $permissions, $team = null, $options = [])\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->ability($roles, $permissions, $team, $options);\n }\n\n }\n }\n\nnamespace Sentry\\Laravel {\n /**\n * @see \\Sentry\\State\\HubInterface\n */\n class Facade {\n /**\n * Gets the client bound to the top of the stack.\n *\n * @static\n */\n public static function getClient()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getClient();\n }\n\n /**\n * Gets the ID of the last captured event.\n *\n * @static\n */\n public static function getLastEventId()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getLastEventId();\n }\n\n /**\n * Creates a new scope to store context information that will be layered on\n * top of the current one. It is isolated, i.e. all breadcrumbs and context\n * information added to this scope will be removed once the scope ends. Be\n * sure to always remove this scope with {@see Hub::popScope} when the\n * operation finishes or throws.\n *\n * @static\n */\n public static function pushScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->pushScope();\n }\n\n /**\n * Removes a previously pushed scope from the stack. This restores the state\n * before the scope was pushed. All breadcrumbs and context information added\n * since the last call to {@see Hub::pushScope} are discarded.\n *\n * @static\n */\n public static function popScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->popScope();\n }\n\n /**\n * Creates a new scope with and executes the given operation within. The scope\n * is automatically removed once the operation finishes or throws.\n *\n * @param callable $callback The callback to be executed\n * @return mixed|void The callback's return value, upon successful execution\n * @psalm-template T\n * @psalm-param callable(Scope): T $callback\n * @psalm-return T\n * @static\n */\n public static function withScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->withScope($callback);\n }\n\n /**\n * Calls the given callback passing to it the current scope so that any\n * operation can be run within its context.\n *\n * @static\n */\n public static function configureScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->configureScope($callback);\n }\n\n /**\n * Binds the given client to the current scope.\n *\n * @static\n */\n public static function bindClient($client)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->bindClient($client);\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * @static\n */\n public static function captureMessage($message, $level = null, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureMessage($message, $level, $hint);\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * @static\n */\n public static function captureException($exception, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureException($exception, $hint);\n }\n\n /**\n * Captures a new event using the provided data.\n *\n * @static\n */\n public static function captureEvent($event, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureEvent($event, $hint);\n }\n\n /**\n * Captures an event that logs the last occurred error.\n *\n * @static\n */\n public static function captureLastError($hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureLastError($hint);\n }\n\n /**\n * Captures a check-in.\n *\n * @param int|float|null $duration\n * @param int|float|null $duration\n * @static\n */\n public static function captureCheckIn($slug, $status, $duration = null, $monitorConfig = null, $checkInId = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureCheckIn($slug, $status, $duration, $monitorConfig, $checkInId);\n }\n\n /**\n * Records a new breadcrumb which will be attached to future events. They\n * will be added to subsequent events to provide more context on user's\n * actions prior to an error or crash.\n *\n * @static\n */\n public static function addBreadcrumb($breadcrumb)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->addBreadcrumb($breadcrumb);\n }\n\n /**\n * Gets the integration whose FQCN matches the given one if it's available on the current client.\n *\n * @param string $className The FQCN of the integration\n * @psalm-template T of IntegrationInterface\n * @psalm-param class-string<T> $className\n * @psalm-return T|null\n * @static\n */\n public static function getIntegration($className)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getIntegration($className);\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual\n * tracing instrumentation.\n * \n * A tree structure can be built by adding child spans to the transaction, and\n * child spans to other spans. To start a new child span within the transaction\n * or any span, call the respective `startChild()` method.\n * \n * Every child span must be finished before the transaction is finished,\n * otherwise the unfinished spans are discarded.\n * \n * The transaction must be finished with a call to its `finish()` method, at\n * which point the transaction with all its finished child spans will be sent to\n * Sentry.\n *\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @static\n */\n public static function startTransaction($context, $customSamplingContext = [])\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->startTransaction($context, $customSamplingContext);\n }\n\n /**\n * Returns the transaction that is on the Hub.\n *\n * @static\n */\n public static function getTransaction()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getTransaction();\n }\n\n /**\n * Sets the span on the Hub.\n *\n * @static\n */\n public static function setSpan($span)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->setSpan($span);\n }\n\n /**\n * Returns the span that is on the Hub.\n *\n * @static\n */\n public static function getSpan()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getSpan();\n }\n\n }\n }\n\nnamespace League\\StatsD\\Laravel5\\Facade {\n /**\n * Facade for Statsd Package\n *\n * @author Aran Wilkinson <aran@aranw.net>\n * @package League\\StatsD\\Laravel5\\Facade\n */\n class StatsdFacade {\n /**\n * Singleton Reference\n *\n * @static\n */\n public static function instance($name = 'default')\n {\n return \\League\\StatsD\\Client::instance($name);\n }\n\n /**\n * Initialize Connection Details\n *\n * @param array $options Configuration options\n * @return \\League\\StatsD\\Client This instance\n * @throws ConfigurationException If port is invalid\n * @static\n */\n public static function configure($options = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->configure($options);\n }\n\n /**\n * @static\n */\n public static function getHost()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getHost();\n }\n\n /**\n * @static\n */\n public static function getPort()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getPort();\n }\n\n /**\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Get Last message sent to server\n *\n * @static\n */\n public static function getLastMessage()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getLastMessage();\n }\n\n /**\n * Increment a metric\n *\n * @param string|array $metrics Metric(s) to increment\n * @param int $delta Value to decrement the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function increment($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->increment($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Decrement a metric\n *\n * @param string|array $metrics Metric(s) to decrement\n * @param int $delta Value to increment the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function decrement($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->decrement($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Start timing the given metric\n *\n * @param string $metric Metric to time\n * @static\n */\n public static function startTiming($metric)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->startTiming($metric);\n }\n\n /**\n * End timing the given metric and record\n *\n * @param string $metric Metric to time\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function endTiming($metric, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->endTiming($metric, $tags);\n }\n\n /**\n * Timing\n *\n * @param string $metric Metric to track\n * @param float $time Time in milliseconds\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function timing($metric, $time, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timing($metric, $time, $tags);\n }\n\n /**\n * Send multiple timing metrics at once\n *\n * @param array $metrics key value map of metric name -> timing value\n * @throws ConnectionException\n * @static\n */\n public static function timings($metrics)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timings($metrics);\n }\n\n /**\n * Time a function\n *\n * @param string $metric Metric to time\n * @param callable $func Function to record\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function time($metric, $func, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->time($metric, $func, $tags);\n }\n\n /**\n * Gauges\n *\n * @param string $metric Metric to gauge\n * @param int|float $value Set the value of the gauge\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function gauge($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->gauge($metric, $value, $tags);\n }\n\n /**\n * Sets - count the number of unique values passed to a key\n *\n * @param string $metric\n * @param mixed $value\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function set($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->set($metric, $value, $tags);\n }\n\n }\n }\n\nnamespace Barryvdh\\Debugbar\\Facades {\n /**\n * @method static void alert(mixed $message)\n * @method static void critical(mixed $message)\n * @method static void debug(mixed $message)\n * @method static void emergency(mixed $message)\n * @method static void error(mixed $message)\n * @method static void info(mixed $message)\n * @method static void log(mixed $message)\n * @method static void notice(mixed $message)\n * @method static void warning(mixed $message)\n * @see \\Barryvdh\\Debugbar\\LaravelDebugbar\n */\n class Debugbar extends \\DebugBar\\DebugBar {\n /**\n * Returns the HTTP driver\n * \n * If no http driver where defined, a PhpHttpDriver is automatically created\n *\n * @return \\DebugBar\\HttpDriverInterface\n * @static\n */\n public static function getHttpDriver()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getHttpDriver();\n }\n\n /**\n * Enable the Debugbar and boot, if not already booted.\n *\n * @static\n */\n public static function enable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->enable();\n }\n\n /**\n * Boot the debugbar (add collectors, renderer and listener)\n *\n * @static\n */\n public static function boot()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->boot();\n }\n\n /**\n * @static\n */\n public static function shouldCollect($name, $default = false)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->shouldCollect($name, $default);\n }\n\n /**\n * Adds a data collector\n *\n * @param \\DebugBar\\DataCollector\\DataCollectorInterface $collector\n * @throws DebugBarException\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function addCollector($collector)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addCollector($collector);\n }\n\n /**\n * Handle silenced errors\n *\n * @param $level\n * @param $message\n * @param string $file\n * @param int $line\n * @param array $context\n * @throws \\ErrorException\n * @static\n */\n public static function handleError($level, $message, $file = '', $line = 0, $context = [])\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->handleError($level, $message, $file, $line, $context);\n }\n\n /**\n * Starts a measure\n *\n * @param string $name Internal name, used to stop the measure\n * @param string $label Public name\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function startMeasure($name, $label = null, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->startMeasure($name, $label, $collector, $group);\n }\n\n /**\n * Stops a measure\n *\n * @param string $name\n * @static\n */\n public static function stopMeasure($name)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stopMeasure($name);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Exception $e\n * @deprecated in favor of addThrowable\n * @static\n */\n public static function addException($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addException($e);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Throwable $e\n * @static\n */\n public static function addThrowable($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addThrowable($e);\n }\n\n /**\n * Returns a JavascriptRenderer for this instance\n *\n * @param string $baseUrl\n * @param string $basePath\n * @return \\Barryvdh\\Debugbar\\JavascriptRenderer\n * @static\n */\n public static function getJavascriptRenderer($baseUrl = null, $basePath = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getJavascriptRenderer($baseUrl, $basePath);\n }\n\n /**\n * Modify the response and inject the debugbar (or data in headers)\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function modifyResponse($request, $response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->modifyResponse($request, $response);\n }\n\n /**\n * Check if the Debugbar is enabled\n *\n * @return boolean\n * @static\n */\n public static function isEnabled()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isEnabled();\n }\n\n /**\n * Collects the data from the collectors\n *\n * @return array\n * @static\n */\n public static function collect()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collect();\n }\n\n /**\n * Injects the web debug toolbar into the given Response.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response A Response instance\n * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php\n * @static\n */\n public static function injectDebugbar($response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->injectDebugbar($response);\n }\n\n /**\n * Checks if there is stacked data in the session\n *\n * @return boolean\n * @static\n */\n public static function hasStackedData()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasStackedData();\n }\n\n /**\n * Returns the data stacked in the session\n *\n * @param boolean $delete Whether to delete the data in the session\n * @return array\n * @static\n */\n public static function getStackedData($delete = true)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackedData($delete);\n }\n\n /**\n * Disable the Debugbar\n *\n * @static\n */\n public static function disable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->disable();\n }\n\n /**\n * Adds a measure\n *\n * @param string $label\n * @param float $start\n * @param float $end\n * @param array|null $params\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function addMeasure($label, $start, $end, $params = [], $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMeasure($label, $start, $end, $params, $collector, $group);\n }\n\n /**\n * Utility function to measure the execution of a Closure\n *\n * @param string $label\n * @param \\Closure $closure\n * @param string|null $collector\n * @param string|null $group\n * @return mixed\n * @static\n */\n public static function measure($label, $closure, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->measure($label, $closure, $collector, $group);\n }\n\n /**\n * Collect data in a CLI request\n *\n * @return array\n * @static\n */\n public static function collectConsole()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collectConsole();\n }\n\n /**\n * Adds a message to the MessagesCollector\n * \n * A message can be anything from an object to a string\n *\n * @param mixed $message\n * @param string $label\n * @static\n */\n public static function addMessage($message, $label = 'info')\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMessage($message, $label);\n }\n\n /**\n * Checks if a data collector has been added\n *\n * @param string $name\n * @return boolean\n * @static\n */\n public static function hasCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasCollector($name);\n }\n\n /**\n * Returns a data collector\n *\n * @param string $name\n * @return \\DebugBar\\DataCollector\\DataCollectorInterface\n * @throws DebugBarException\n * @static\n */\n public static function getCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollector($name);\n }\n\n /**\n * Returns an array of all data collectors\n *\n * @return array[DataCollectorInterface]\n * @static\n */\n public static function getCollectors()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollectors();\n }\n\n /**\n * Sets the request id generator\n *\n * @param \\DebugBar\\RequestIdGeneratorInterface $generator\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setRequestIdGenerator($generator)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setRequestIdGenerator($generator);\n }\n\n /**\n * @return \\DebugBar\\RequestIdGeneratorInterface\n * @static\n */\n public static function getRequestIdGenerator()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getRequestIdGenerator();\n }\n\n /**\n * Returns the id of the current request\n *\n * @return string\n * @static\n */\n public static function getCurrentRequestId()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCurrentRequestId();\n }\n\n /**\n * Sets the storage backend to use to store the collected data\n *\n * @param \\DebugBar\\StorageInterface $storage\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStorage($storage = null)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStorage($storage);\n }\n\n /**\n * @return \\DebugBar\\StorageInterface\n * @static\n */\n public static function getStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStorage();\n }\n\n /**\n * Checks if the data will be persisted\n *\n * @return boolean\n * @static\n */\n public static function isDataPersisted()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isDataPersisted();\n }\n\n /**\n * Sets the HTTP driver\n *\n * @param \\DebugBar\\HttpDriverInterface $driver\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setHttpDriver($driver)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setHttpDriver($driver);\n }\n\n /**\n * Returns collected data\n * \n * Will collect the data if none have been collected yet\n *\n * @return array\n * @static\n */\n public static function getData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getData();\n }\n\n /**\n * Returns an array of HTTP headers containing the data\n *\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return array\n * @static\n */\n public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);\n }\n\n /**\n * Sends the data through the HTTP headers\n *\n * @param bool $useOpenHandler\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);\n }\n\n /**\n * Stacks the data in the session for later rendering\n *\n * @static\n */\n public static function stackData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stackData();\n }\n\n /**\n * Sets the key to use in the $_SESSION array\n *\n * @param string $ns\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackDataSessionNamespace($ns)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackDataSessionNamespace($ns);\n }\n\n /**\n * Returns the key used in the $_SESSION array\n *\n * @return string\n * @static\n */\n public static function getStackDataSessionNamespace()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackDataSessionNamespace();\n }\n\n /**\n * Sets whether to only use the session to store stacked data even\n * if a storage is enabled\n *\n * @param boolean $enabled\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackAlwaysUseSessionStorage($enabled = true)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackAlwaysUseSessionStorage($enabled);\n }\n\n /**\n * Checks if the session is always used to store stacked data\n * even if a storage is enabled\n *\n * @return boolean\n * @static\n */\n public static function isStackAlwaysUseSessionStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isStackAlwaysUseSessionStorage();\n }\n\n /**\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetSet($key, $value);\n }\n\n /**\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetUnset($key);\n }\n\n }\n }\n\nnamespace Barryvdh\\DomPDF\\Facade {\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n }\n\nnamespace ChaseConey\\LaravelDatadogHelper {\n /**\n * @see LaravelDatadogHelper\n * @see \\Datadog\\DogStatsd\n */\n class Datadog extends \\DataDog\\DogStatsd {\n /**\n * @static\n */\n public static function send($data, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->send($data, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Log timing information\n *\n * @param string $stat The metric to in log timing info for.\n * @param float $time The elapsed time (ms) to log\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function timing($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->timing($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * A convenient alias for the timing function when used with micro-timing\n *\n * @param string $stat The metric name\n * @param float $time The elapsed time to log, IN SECONDS\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function microtiming($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->microtiming($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Gauge\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function gauge($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->gauge($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Histogram\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function histogram($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->histogram($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Distribution\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function distribution($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->distribution($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Set\n *\n * @param string $stat The metric\n * @param string|float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function set($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->set($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Increments one or more stats counters\n *\n * @param string|array $stats The metric(s) to increment.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to increment by (default 1)\n * @return void\n * @static\n */\n public static function increment($stats, $sampleRate = 1.0, $tags = null, $value = 1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->increment($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Decrements one or more stats counters.\n *\n * @param string|array $stats The metric(s) to decrement.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to decrement by (default -1)\n * @return void\n * @static\n */\n public static function decrement($stats, $sampleRate = 1.0, $tags = null, $value = -1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->decrement($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Updates one or more stats counters by arbitrary amounts.\n *\n * @param string|array $stats The metric(s) to update. Should be either a string or array of metrics.\n * @param int $delta The amount to increment/decrement each metric by.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function updateStats($stats, $delta = 1, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->updateStats($stats, $delta, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * @deprecated service_check will be removed in future versions in favor of serviceCheck\n * \n * Send a custom service check status over UDP\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function service_check($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->service_check($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * Send a custom service check status over UDP\n *\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function serviceCheck($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->serviceCheck($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * @static\n */\n public static function report($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->report($message);\n }\n\n /**\n * @throws \\Exception|\\Throwable\n * @static\n */\n public static function flush($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->flush($message);\n }\n\n /**\n * Formats $vals array into event for submission to Datadog via UDP\n *\n * @param array $vals Optional values of the event. See\n * https://docs.datadoghq.com/api/?lang=bash#post-an-event for the valid keys\n * @return bool\n * @static\n */\n public static function event($title, $vals = [])\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->event($title, $vals);\n }\n\n /**\n * @static\n */\n public static function setMetricsPrefix($metricsPrefix)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->setMetricsPrefix($metricsPrefix);\n }\n\n }\n }\n\nnamespace Spatie\\LaravelIgnition\\Facades {\n /**\n * @see \\Spatie\\FlareClient\\Flare\n */\n class Flare {\n /**\n * @static\n */\n public static function make($apiKey = null, $contextDetector = null)\n {\n return \\Spatie\\FlareClient\\Flare::make($apiKey, $contextDetector);\n }\n\n /**\n * @static\n */\n public static function setApiToken($apiToken)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setApiToken($apiToken);\n }\n\n /**\n * @static\n */\n public static function apiTokenSet()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->apiTokenSet();\n }\n\n /**\n * @static\n */\n public static function setBaseUrl($baseUrl)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setBaseUrl($baseUrl);\n }\n\n /**\n * @static\n */\n public static function setStage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setStage($stage);\n }\n\n /**\n * @static\n */\n public static function sendReportsImmediately()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendReportsImmediately();\n }\n\n /**\n * @static\n */\n public static function determineVersionUsing($determineVersionCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->determineVersionUsing($determineVersionCallable);\n }\n\n /**\n * @static\n */\n public static function reportErrorLevels($reportErrorLevels)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportErrorLevels($reportErrorLevels);\n }\n\n /**\n * @static\n */\n public static function filterExceptionsUsing($filterExceptionsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterExceptionsUsing($filterExceptionsCallable);\n }\n\n /**\n * @static\n */\n public static function filterReportsUsing($filterReportsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterReportsUsing($filterReportsCallable);\n }\n\n /**\n * @param array<class-string<ArgumentReducer>|ArgumentReducer>|\\Spatie\\Backtrace\\Arguments\\ArgumentReducers|null $argumentReducers\n * @static\n */\n public static function argumentReducers($argumentReducers)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->argumentReducers($argumentReducers);\n }\n\n /**\n * @static\n */\n public static function withStackFrameArguments($withStackFrameArguments = true, $forcePHPIniSetting = false)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->withStackFrameArguments($withStackFrameArguments, $forcePHPIniSetting);\n }\n\n /**\n * @param class-string $exceptionClass\n * @static\n */\n public static function overrideGrouping($exceptionClass, $type = 'exception_message_and_class')\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->overrideGrouping($exceptionClass, $type);\n }\n\n /**\n * @static\n */\n public static function version()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->version();\n }\n\n /**\n * @return array<int, FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * @static\n */\n public static function setContextProviderDetector($contextDetector)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContextProviderDetector($contextDetector);\n }\n\n /**\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * @static\n */\n public static function registerFlareHandlers()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerFlareHandlers();\n }\n\n /**\n * @static\n */\n public static function registerExceptionHandler()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerExceptionHandler();\n }\n\n /**\n * @static\n */\n public static function registerErrorHandler($errorLevels = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerErrorHandler($errorLevels);\n }\n\n /**\n * @param \\Spatie\\FlareClient\\FlareMiddleware\\FlareMiddleware|array<FlareMiddleware>|class-string<FlareMiddleware>|callable $middleware\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function registerMiddleware($middleware)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerMiddleware($middleware);\n }\n\n /**\n * @return array<int,FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddlewares()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddlewares();\n }\n\n /**\n * @param string $name\n * @param string $messageLevel\n * @param array<int, mixed> $metaData\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function glow($name, $messageLevel = 'info', $metaData = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->glow($name, $messageLevel, $metaData);\n }\n\n /**\n * @static\n */\n public static function handleException($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleException($throwable);\n }\n\n /**\n * @return mixed\n * @static\n */\n public static function handleError($code, $message, $file = '', $line = 0)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleError($code, $message, $file, $line);\n }\n\n /**\n * @static\n */\n public static function applicationPath($applicationPath)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->applicationPath($applicationPath);\n }\n\n /**\n * @static\n */\n public static function report($throwable, $callback = null, $report = null, $handled = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->report($throwable, $callback, $report, $handled);\n }\n\n /**\n * @static\n */\n public static function reportHandled($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportHandled($throwable);\n }\n\n /**\n * @static\n */\n public static function reportMessage($message, $logLevel, $callback = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportMessage($message, $logLevel, $callback);\n }\n\n /**\n * @static\n */\n public static function sendTestReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendTestReport($throwable);\n }\n\n /**\n * @static\n */\n public static function reset()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reset();\n }\n\n /**\n * @static\n */\n public static function anonymizeIp()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->anonymizeIp();\n }\n\n /**\n * @param array<int, string> $fieldNames\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function censorRequestBodyFields($fieldNames)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->censorRequestBodyFields($fieldNames);\n }\n\n /**\n * @static\n */\n public static function createReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReport($throwable);\n }\n\n /**\n * @static\n */\n public static function createReportFromMessage($message, $logLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReportFromMessage($message, $logLevel);\n }\n\n /**\n * @static\n */\n public static function stage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->stage($stage);\n }\n\n /**\n * @static\n */\n public static function messageLevel($messageLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->messageLevel($messageLevel);\n }\n\n /**\n * @param string $groupName\n * @param mixed $default\n * @return array<int, mixed>\n * @static\n */\n public static function getGroup($groupName = 'context', $default = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getGroup($groupName, $default);\n }\n\n /**\n * @static\n */\n public static function context($key, $value)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->context($key, $value);\n }\n\n /**\n * @param string $groupName\n * @param array<string, mixed> $properties\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function group($groupName, $properties)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->group($groupName, $properties);\n }\n\n }\n }\n\nnamespace Vinkla\\Hashids\\Facades {\n /**\n * @method static string encode(mixed ...$numbers)\n * @method static array decode(string $hash)\n * @method static string encodeHex(string $str)\n * @method static string decodeHex(string $hash)\n */\n class Hashids extends \\GrahamCampbell\\Manager\\AbstractManager {\n /**\n * @static\n */\n public static function getFactory()\n {\n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getFactory();\n }\n\n /**\n * Get a connection instance.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function connection($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Reconnect to the given connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function reconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Disconnect from the given connection.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Get the configuration for a connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return array\n * @static\n */\n public static function getConnectionConfig($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnectionConfig($name);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string,object>\n * @static\n */\n public static function getConnections()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Get the config instance.\n *\n * @return \\Illuminate\\Contracts\\Config\\Repository\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConfig();\n }\n\n }\n }\n\nnamespace Illuminate\\Support {\n /**\n * @template TKey of array-key\n * @template-covariant TValue\n * @implements \\ArrayAccess<TKey, TValue>\n * @implements \\Illuminate\\Support\\Enumerable<TKey, TValue>\n */\n class Collection {\n /**\n * @see \\Barryvdh\\Debugbar\\ServiceProvider::register()\n * @static\n */\n public static function debug()\n {\n return \\Illuminate\\Support\\Collection::debug();\n }\n\n /**\n * @see \\Spatie\\Fractal\\FractalServiceProvider::packageBooted()\n * @param mixed $transformer\n * @static\n */\n public static function transformWith($transformer)\n {\n return \\Illuminate\\Support\\Collection::transformWith($transformer);\n }\n\n }\n }\n\nnamespace Illuminate\\Http {\n /**\n */\n class Request extends \\Symfony\\Component\\HttpFoundation\\Request {\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n }\n\nnamespace Illuminate\\Testing {\n /**\n * @template TResponse of \\Symfony\\Component\\HttpFoundation\\Response\n * @mixin \\Illuminate\\Http\\Response\n */\n class TestResponse {\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param array $structure\n * @static\n */\n public static function assertJsonTypedStructure($structure)\n {\n return \\Illuminate\\Testing\\TestResponse::assertJsonTypedStructure($structure);\n }\n\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param string $key\n * @static\n */\n public static function assertViewHasNull($key)\n {\n return \\Illuminate\\Testing\\TestResponse::assertViewHasNull($key);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Schema {\n /**\n */\n class Blueprint {\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function nestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::nestedSet();\n }\n\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function dropNestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::dropNestedSet();\n }\n\n }\n }\n\nnamespace Illuminate\\Validation {\n /**\n */\n class Rule {\n /**\n * @see \\Propaganistas\\LaravelPhone\\PhoneServiceProvider::registerValidator()\n * @static\n */\n public static function phone()\n {\n return \\Illuminate\\Validation\\Rule::phone();\n }\n\n }\n }\n\nnamespace Illuminate\\Console\\Scheduling {\n /**\n */\n class Event {\n /**\n * @see \\Sentry\\Laravel\\Features\\ConsoleSchedulingIntegration::register()\n * @param string|null $monitorSlug\n * @param int|null $checkInMargin\n * @param int|null $maxRuntime\n * @param bool $updateMonitorConfig\n * @param int|null $failureIssueThreshold\n * @param int|null $recoveryThreshold\n * @static\n */\n public static function sentryMonitor($monitorSlug = null, $checkInMargin = null, $maxRuntime = null, $updateMonitorConfig = true, $failureIssueThreshold = null, $recoveryThreshold = null)\n {\n return \\Illuminate\\Console\\Scheduling\\Event::sentryMonitor($monitorSlug, $checkInMargin, $maxRuntime, $updateMonitorConfig, $failureIssueThreshold, $recoveryThreshold);\n }\n\n }\n }\n\nnamespace Illuminate\\Http\\Client {\n /**\n * @mixin \\Illuminate\\Http\\Client\\PendingRequest\n */\n class Factory {\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n }\n\nnamespace Illuminate\\Routing {\n /**\n * @mixin \\Illuminate\\Routing\\RouteRegistrar\n */\n class Router {\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n */\n class ResponseFactory {\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Eloquent {\n /**\n * @template TKey of array-key\n * @template TModel of \\Illuminate\\Database\\Eloquent\\Model\n * @extends \\Illuminate\\Support\\Collection<TKey, TModel>\n */\n class Collection extends \\Illuminate\\Support\\Collection {\n }\n }\n\n\nnamespace {\n class App extends \\Illuminate\\Support\\Facades\\App {}\n class Arr extends \\Illuminate\\Support\\Arr {}\n class Artisan extends \\Illuminate\\Support\\Facades\\Artisan {}\n class Auth extends \\Illuminate\\Support\\Facades\\Auth {}\n class Benchmark extends \\Illuminate\\Support\\Benchmark {}\n class Blade extends \\Illuminate\\Support\\Facades\\Blade {}\n class Broadcast extends \\Illuminate\\Support\\Facades\\Broadcast {}\n class Bus extends \\Illuminate\\Support\\Facades\\Bus {}\n class Cache extends \\Illuminate\\Support\\Facades\\Cache {}\n class Concurrency extends \\Illuminate\\Support\\Facades\\Concurrency {}\n class Config extends \\Illuminate\\Support\\Facades\\Config {}\n class Context extends \\Illuminate\\Support\\Facades\\Context {}\n class Cookie extends \\Illuminate\\Support\\Facades\\Cookie {}\n class Crypt extends \\Illuminate\\Support\\Facades\\Crypt {}\n class DB extends \\Illuminate\\Support\\Facades\\DB {}\n\n /**\n * @template TCollection of static\n * @template TModel of static\n * @template TValue of static\n * @template TValue of static\n */\n class Eloquent extends \\Illuminate\\Database\\Eloquent\\Model { /**\n * Create and return an un-saved model instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function make($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->make($attributes);\n }\n\n /**\n * Register a new global scope.\n *\n * @param string $identifier\n * @param \\Illuminate\\Database\\Eloquent\\Scope|\\Closure $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withGlobalScope($identifier, $scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withGlobalScope($identifier, $scope);\n }\n\n /**\n * Remove a registered global scope.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Scope|string $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScope($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScope($scope);\n }\n\n /**\n * Remove all or passed registered global scopes.\n *\n * @param array|null $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopes($scopes = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopes($scopes);\n }\n\n /**\n * Remove all global scopes except the given scopes.\n *\n * @param array $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopesExcept($scopes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopesExcept($scopes);\n }\n\n /**\n * Get an array of global scopes that were removed from the query.\n *\n * @return array\n * @static\n */\n public static function removedScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->removedScopes();\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKey($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKey($id);\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKeyNot($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKeyNot($id);\n }\n\n /**\n * Add a basic where clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function where($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->where($column, $operator, $value, $boolean);\n }\n\n /**\n * Add a basic where clause to the query, and return the first result.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return TModel|null\n * @static\n */\n public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstWhere($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhere($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhere($column, $operator, $value);\n }\n\n /**\n * Add a basic \"where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNot($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNot($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNot($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNot($column, $operator, $value);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function latest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->latest($column);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function oldest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->oldest($column);\n }\n\n /**\n * Create a collection of models from plain arrays.\n *\n * @param array $items\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function hydrate($items)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hydrate($items);\n }\n\n /**\n * Insert into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return bool\n * @static\n */\n public static function fillAndInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsert($values);\n }\n\n /**\n * Insert (ignoring errors) into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return int\n * @static\n */\n public static function fillAndInsertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertOrIgnore($values);\n }\n\n /**\n * Insert a record into the database and get its ID after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<string, mixed> $values\n * @return int\n * @static\n */\n public static function fillAndInsertGetId($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertGetId($values);\n }\n\n /**\n * Enrich the given values by merging in the model's default attributes, adding timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return array<int, array<string, mixed>>\n * @static\n */\n public static function fillForInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillForInsert($values);\n }\n\n /**\n * Create a collection of models from a raw query.\n *\n * @param string $query\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function fromQuery($query, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fromQuery($query, $bindings);\n }\n\n /**\n * Find a model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel|null)\n * @static\n */\n public static function find($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->find($id, $columns);\n }\n\n /**\n * Find a sole model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function findSole($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findSole($id, $columns);\n }\n\n /**\n * Find multiple models by their primary keys.\n *\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $ids\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function findMany($ids, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findMany($ids, $columns);\n }\n\n /**\n * Find a model by its primary key or throw an exception.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function findOrFail($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrFail($id, $columns);\n }\n\n /**\n * Find a model by its primary key or return fresh model instance.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @static\n */\n public static function findOrNew($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrNew($id, $columns);\n }\n\n /**\n * Find a model by its primary key or call a callback.\n *\n * @template TValue\n * @param mixed $id\n * @param (\\Closure(): TValue)|list<string>|string $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return ( $id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>)\n * ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * : TModel|TValue\n * )\n * @static\n */\n public static function findOr($id, $columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOr($id, $columns, $callback);\n }\n\n /**\n * Get the first record matching the attributes or instantiate it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrNew($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrNew($attributes, $values);\n }\n\n /**\n * Get the first record matching the attributes. If the record is not found, create it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrCreate($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrCreate($attributes, $values);\n }\n\n /**\n * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function createOrFirst($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createOrFirst($attributes, $values);\n }\n\n /**\n * Create or update a record matching the attributes, and fill it with values.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function updateOrCreate($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->updateOrCreate($attributes, $values);\n }\n\n /**\n * Create a record matching the attributes, or increment the existing record.\n *\n * @param array $attributes\n * @param string $column\n * @param int|float $default\n * @param int|float $step\n * @param array $extra\n * @return TModel\n * @static\n */\n public static function incrementOrCreate($attributes, $column = 'count', $default = 1, $step = 1, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->incrementOrCreate($attributes, $column, $default, $step, $extra);\n }\n\n /**\n * Execute the query and get the first result or throw an exception.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function firstOrFail($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrFail($columns);\n }\n\n /**\n * Execute the query and get the first result or call a callback.\n *\n * @template TValue\n * @param (\\Closure(): TValue)|list<string> $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return TModel|TValue\n * @static\n */\n public static function firstOr($columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOr($columns, $callback);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function sole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->sole($columns);\n }\n\n /**\n * Get a single column's value from the first result of a query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @static\n */\n public static function value($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->value($column);\n }\n\n /**\n * Get a single column's value from the first result of a query if it's the sole matching record.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function soleValue($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->soleValue($column);\n }\n\n /**\n * Get a single column's value from the first result of the query or throw an exception.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function valueOrFail($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->valueOrFail($column);\n }\n\n /**\n * Execute the query as a \"select\" statement.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function get($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->get($columns);\n }\n\n /**\n * Get the hydrated models without eager loading.\n *\n * @param array|string $columns\n * @return array<int, TModel>\n * @static\n */\n public static function getModels($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModels($columns);\n }\n\n /**\n * Eager load the relationships for the models.\n *\n * @param array<int, TModel> $models\n * @return array<int, TModel>\n * @static\n */\n public static function eagerLoadRelations($models)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eagerLoadRelations($models);\n }\n\n /**\n * Register a closure to be invoked after the query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function afterQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->afterQuery($callback);\n }\n\n /**\n * Invoke the \"after query\" modification callbacks.\n *\n * @param mixed $result\n * @return mixed\n * @static\n */\n public static function applyAfterQueryCallbacks($result)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyAfterQueryCallbacks($result);\n }\n\n /**\n * Get a lazy collection for the given query.\n *\n * @return \\Illuminate\\Support\\LazyCollection<int, TModel>\n * @static\n */\n public static function cursor()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursor();\n }\n\n /**\n * Get a collection with the values of a given column.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param string|null $key\n * @return \\Illuminate\\Support\\Collection<array-key, mixed>\n * @static\n */\n public static function pluck($column, $key = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pluck($column, $key);\n }\n\n /**\n * Paginate the given query.\n *\n * @param int|null|\\Closure $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @param \\Closure|int|null $total\n * @return \\Illuminate\\Pagination\\LengthAwarePaginator\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null, $total = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->paginate($perPage, $columns, $pageName, $page, $total);\n }\n\n /**\n * Paginate the given query into a simple paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @return \\Illuminate\\Contracts\\Pagination\\Paginator\n * @static\n */\n public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->simplePaginate($perPage, $columns, $pageName, $page);\n }\n\n /**\n * Paginate the given query into a cursor paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $cursorName\n * @param \\Illuminate\\Pagination\\Cursor|string|null $cursor\n * @return \\Illuminate\\Contracts\\Pagination\\CursorPaginator\n * @static\n */\n public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor);\n }\n\n /**\n * Save a new model and return the instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function create($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->create($attributes);\n }\n\n /**\n * Save a new model and return the instance without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function createQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createQuietly($attributes);\n }\n\n /**\n * Save a new model and return the instance. Allow mass-assignment.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreate($attributes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreate($attributes);\n }\n\n /**\n * Save a new model instance with mass assignment without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreateQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreateQuietly($attributes);\n }\n\n /**\n * Insert new records or update the existing ones.\n *\n * @param array $values\n * @param array|string $uniqueBy\n * @param array|null $update\n * @return int\n * @static\n */\n public static function upsert($values, $uniqueBy, $update = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->upsert($values, $uniqueBy, $update);\n }\n\n /**\n * Register a replacement for the default delete function.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function onDelete($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n $instance->onDelete($callback);\n }\n\n /**\n * Call the given local model scopes.\n *\n * @param array|string $scopes\n * @return static|mixed\n * @static\n */\n public static function scopes($scopes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->scopes($scopes);\n }\n\n /**\n * Apply the scopes to the Eloquent builder instance and return it.\n *\n * @return static\n * @static\n */\n public static function applyScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyScopes();\n }\n\n /**\n * Prevent the specified relations from being eager loaded.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function without($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->without($relations);\n }\n\n /**\n * Set the relationships that should be eager loaded while removing any previously added eager loading specifications.\n *\n * @param array<array-key, array|(\\Closure(\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*,*,*>): mixed)|string>|string $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withOnly($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withOnly($relations);\n }\n\n /**\n * Create a new instance of the model being queried.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function newModelInstance($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->newModelInstance($attributes);\n }\n\n /**\n * Specify attributes that should be added to any new models created by this builder.\n * \n * The given key / value pairs will also be added as where conditions to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|array|string $attributes\n * @param mixed $value\n * @param bool $asConditions\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAttributes($attributes, $value = null, $asConditions = true)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAttributes($attributes, $value, $asConditions);\n }\n\n /**\n * Apply query-time casts to the model instance.\n *\n * @param array $casts\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCasts($casts)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCasts($casts);\n }\n\n /**\n * Execute the given Closure within a transaction savepoint if needed.\n *\n * @template TModelValue\n * @param \\Closure(): TModelValue $scope\n * @return TModelValue\n * @static\n */\n public static function withSavepointIfNeeded($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSavepointIfNeeded($scope);\n }\n\n /**\n * Get the underlying query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function getQuery()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getQuery();\n }\n\n /**\n * Set the underlying query builder instance.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setQuery($query)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setQuery($query);\n }\n\n /**\n * Get a base query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function toBase()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->toBase();\n }\n\n /**\n * Get the relationships being eagerly loaded.\n *\n * @return array\n * @static\n */\n public static function getEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getEagerLoads();\n }\n\n /**\n * Set the relationships being eagerly loaded.\n *\n * @param array $eagerLoad\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setEagerLoads($eagerLoad)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setEagerLoads($eagerLoad);\n }\n\n /**\n * Indicate that the given relationships should not be eagerly loaded.\n *\n * @param array $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoad($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoad($relations);\n }\n\n /**\n * Flush the relationships being eagerly loaded.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoads();\n }\n\n /**\n * Get the \"limit\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getLimit()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getLimit();\n }\n\n /**\n * Get the \"offset\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getOffset()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getOffset();\n }\n\n /**\n * Get the model instance being queried.\n *\n * @return TModel\n * @static\n */\n public static function getModel()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModel();\n }\n\n /**\n * Set a model instance for the model being queried.\n *\n * @template TModelNew of \\Illuminate\\Database\\Eloquent\\Model\n * @param TModelNew $model\n * @return static<TModelNew>\n * @static\n */\n public static function setModel($model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setModel($model);\n }\n\n /**\n * Get the given macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getMacro($name);\n }\n\n /**\n * Checks if a macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMacro($name);\n }\n\n /**\n * Get the given global macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::getGlobalMacro($name);\n }\n\n /**\n * Checks if a global macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::hasGlobalMacro($name);\n }\n\n /**\n * Clone the Eloquent query builder.\n *\n * @return static\n * @static\n */\n public static function clone()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->clone();\n }\n\n /**\n * Register a closure to be invoked on a clone.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function onClone($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->onClone($callback);\n }\n\n /**\n * Chunk the results of the query.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @return bool\n * @static\n */\n public static function chunk($count, $callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunk($count, $callback);\n }\n\n /**\n * Run a map over each item while chunking.\n *\n * @template TReturn\n * @param callable(TValue): TReturn $callback\n * @param int $count\n * @return \\Illuminate\\Support\\Collection<int, TReturn>\n * @static\n */\n public static function chunkMap($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkMap($callback, $count);\n }\n\n /**\n * Execute a callback over each item while chunking.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function each($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->each($callback, $count);\n }\n\n /**\n * Chunk the results of a query by comparing IDs.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkById($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkById($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in descending order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkByIdDesc($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkByIdDesc($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in a given order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @param bool $descending\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function orderedChunkById($count, $callback, $column = null, $alias = null, $descending = false)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orderedChunkById($count, $callback, $column, $alias, $descending);\n }\n\n /**\n * Execute a callback over each item while chunking by ID.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function eachById($callback, $count = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eachById($callback, $count, $column, $alias);\n }\n\n /**\n * Query lazily, by chunks of the given size.\n *\n * @param int $chunkSize\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazy($chunkSize = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazy($chunkSize);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyById($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyById($chunkSize, $column, $alias);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs in descending order.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyByIdDesc($chunkSize, $column, $alias);\n }\n\n /**\n * Execute the query and get the first result.\n *\n * @param array|string $columns\n * @return TValue|null\n * @static\n */\n public static function first($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->first($columns);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TValue\n * @throws \\Illuminate\\Database\\RecordsNotFoundException\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function baseSole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->baseSole($columns);\n }\n\n /**\n * Pass the query to a given callback and then return it.\n *\n * @param callable($this): mixed $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function tap($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->tap($callback);\n }\n\n /**\n * Pass the query to a given callback and return the result.\n *\n * @template TReturn\n * @param (callable($this): TReturn) $callback\n * @return (TReturn is null|void ? $this : TReturn)\n * @static\n */\n public static function pipe($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pipe($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->has($relation, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHas($relation, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHas($relation, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHave($relation, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHave($relation, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHave($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHave($relation);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n * \n * Also load the relationship with the same condition.\n *\n * @param string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHasMorph($relation, $types, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHasMorph($relation, $types, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHaveMorph($relation, $types, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHaveMorph($relation, $types)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHaveMorph($relation, $types);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a basic where clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic where clause to a relationship query and eager-load the relationship with the same conditions.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param \\Closure|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic count / exists condition to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a where clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or where\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a doesn't have clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or doesn't have\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a not morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNotMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphedTo($relation, $model);\n }\n\n /**\n * Add a not morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNotMorphedTo($relation, $model);\n }\n\n /**\n * Add a \"belongs to\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereBelongsTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"BelongsTo\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereBelongsTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereBelongsTo($related, $relationshipName);\n }\n\n /**\n * Add a \"belongs to many\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereAttachedTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereAttachedTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"belongs to many\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereAttachedTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereAttachedTo($related, $relationshipName);\n }\n\n /**\n * Add subselect queries to include an aggregate value for a relationship.\n *\n * @param mixed $relations\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string|null $function\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAggregate($relations, $column, $function = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAggregate($relations, $column, $function);\n }\n\n /**\n * Add subselect queries to count the relations.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCount($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCount($relations);\n }\n\n /**\n * Add subselect queries to include the max of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMax($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMax($relation, $column);\n }\n\n /**\n * Add subselect queries to include the min of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMin($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMin($relation, $column);\n }\n\n /**\n * Add subselect queries to include the sum of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withSum($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSum($relation, $column);\n }\n\n /**\n * Add subselect queries to include the average of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAvg($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAvg($relation, $column);\n }\n\n /**\n * Add subselect queries to include the existence of related models.\n *\n * @param string|array $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withExists($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withExists($relation);\n }\n\n /**\n * Merge the where constraints from another query to the current query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Builder<*> $from\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeConstraintsFrom($from)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->mergeConstraintsFrom($from);\n }\n\n /**\n * Set the columns to be selected.\n *\n * @param mixed $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function select($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->select($columns);\n }\n\n /**\n * Add a subselect expression to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function selectSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectSub($query, $as);\n }\n\n /**\n * Add a new \"raw\" select expression to the query.\n *\n * @param string $expression\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function selectRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectRaw($expression, $bindings);\n }\n\n /**\n * Makes \"from\" fetch from a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function fromSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromSub($query, $as);\n }\n\n /**\n * Add a raw from clause to the query.\n *\n * @param string $expression\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function fromRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromRaw($expression, $bindings);\n }\n\n /**\n * Add a new select column to the query.\n *\n * @param mixed $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addSelect($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addSelect($column);\n }\n\n /**\n * Force the query to only return distinct results.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function distinct()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->distinct();\n }\n\n /**\n * Set the table which the query is targeting.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function from($table, $as = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->from($table, $as);\n }\n\n /**\n * Add an index hint to suggest a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useIndex($index);\n }\n\n /**\n * Add an index hint to force a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forceIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forceIndex($index);\n }\n\n /**\n * Add an index hint to ignore a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function ignoreIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ignoreIndex($index);\n }\n\n /**\n * Add a join clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->join($table, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @param string $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinWhere($table, $first, $operator, $second, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinWhere($table, $first, $operator, $second, $type);\n }\n\n /**\n * Add a subquery join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a lateral join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinLateral($query, $as, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinLateral($query, $as, $type);\n }\n\n /**\n * Add a lateral left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinLateral($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinLateral($query, $as);\n }\n\n /**\n * Add a left join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a right join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"right join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery right join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a \"cross join\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoin($table, $first = null, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery cross join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoinSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoinSub($query, $as);\n }\n\n /**\n * Merge an array of where clauses and bindings.\n *\n * @param array $wheres\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeWheres($wheres, $bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeWheres($wheres, $bindings);\n }\n\n /**\n * Prepare the value and operator for a where clause.\n *\n * @param string $value\n * @param string $operator\n * @param bool $useDefault\n * @return array\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function prepareValueAndOperator($value, $operator, $useDefault = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->prepareValueAndOperator($value, $operator, $useDefault);\n }\n\n /**\n * Add a \"where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @param string|null $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereColumn($first, $operator, $second, $boolean);\n }\n\n /**\n * Add an \"or where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereColumn($first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereColumn($first, $operator, $second);\n }\n\n /**\n * Add a raw where clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $sql\n * @param mixed $bindings\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or where clause to the query.\n *\n * @param string $sql\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRaw($sql, $bindings);\n }\n\n /**\n * Add a \"where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereLike($column, $value, $caseSensitive = false, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereLike($column, $value, $caseSensitive, $boolean, $not);\n }\n\n /**\n * Add an \"or where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotLike($column, $value, $caseSensitive = false, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotLike($column, $value, $caseSensitive, $boolean);\n }\n\n /**\n * Add an \"or where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIn($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIn($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIn($column, $values);\n }\n\n /**\n * Add a \"where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotIn($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotIn($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotIn($column, $values);\n }\n\n /**\n * Add a \"where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerInRaw($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerInRaw($column, $values);\n }\n\n /**\n * Add a \"where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerNotInRaw($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerNotInRaw($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerNotInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerNotInRaw($column, $values);\n }\n\n /**\n * Add a \"where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNull($column);\n }\n\n /**\n * Add a \"where not null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotNull($columns, $boolean);\n }\n\n /**\n * Add a where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetweenColumns($column, $values, $boolean, $not);\n }\n\n /**\n * Add an or where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetween($column, $values);\n }\n\n /**\n * Add an or where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetweenColumns($column, $values);\n }\n\n /**\n * Add a where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetween($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetween($column, $values, $boolean);\n }\n\n /**\n * Add a where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetweenColumns($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetweenColumns($column, $values, $boolean);\n }\n\n /**\n * Add an or where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetween($column, $values);\n }\n\n /**\n * Add an or where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetweenColumns($column, $values);\n }\n\n /**\n * Add a where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueBetween($value, $columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueBetween($value, $columns, $boolean, $not);\n }\n\n /**\n * Add an or where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueBetween($value, $columns);\n }\n\n /**\n * Add a where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueNotBetween($value, $columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueNotBetween($value, $columns, $boolean);\n }\n\n /**\n * Add an or where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueNotBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueNotBetween($value, $columns);\n }\n\n /**\n * Add an \"or where not null\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotNull($column);\n }\n\n /**\n * Add a \"where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDate($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDate($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDate($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDate($column, $operator, $value);\n }\n\n /**\n * Add a \"where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTime($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTime($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTime($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTime($column, $operator, $value);\n }\n\n /**\n * Add a \"where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDay($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDay($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDay($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDay($column, $operator, $value);\n }\n\n /**\n * Add a \"where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMonth($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereMonth($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMonth($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereMonth($column, $operator, $value);\n }\n\n /**\n * Add a \"where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereYear($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereYear($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereYear($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereYear($column, $operator, $value);\n }\n\n /**\n * Add a nested where statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNested($callback, $boolean);\n }\n\n /**\n * Create a new query instance for nested where condition.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function forNestedWhere()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forNestedWhere();\n }\n\n /**\n * Add another query builder as a nested where to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedWhereQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedWhereQuery($query, $boolean);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereExists($callback, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereExists($callback, $boolean, $not);\n }\n\n /**\n * Add an or exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereExists($callback, $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereExists($callback, $not);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotExists($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotExists($callback, $boolean);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotExists($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotExists($callback);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addWhereExistsQuery($query, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addWhereExistsQuery($query, $boolean, $not);\n }\n\n /**\n * Adds a where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function whereRowValues($columns, $operator, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRowValues($columns, $operator, $values, $boolean);\n }\n\n /**\n * Adds an or where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRowValues($columns, $operator, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRowValues($columns, $operator, $values);\n }\n\n /**\n * Add a \"where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContains($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContains($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContains($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContains($column, $value);\n }\n\n /**\n * Add a \"where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContain($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContain($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContain($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContain($column, $value);\n }\n\n /**\n * Add a \"where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonOverlaps($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonOverlaps($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonOverlaps($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonOverlaps($column, $value);\n }\n\n /**\n * Add a \"where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntOverlap($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntOverlap($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntOverlap($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntOverlap($column, $value);\n }\n\n /**\n * Add a clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContainsKey($column, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContainsKey($column, $boolean, $not);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContainsKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContainsKey($column);\n }\n\n /**\n * Add a clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContainKey($column, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContainKey($column, $boolean);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContainKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContainKey($column);\n }\n\n /**\n * Add a \"where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonLength($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonLength($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonLength($column, $operator, $value);\n }\n\n /**\n * Handles dynamic \"where\" clauses to the query.\n *\n * @param string $method\n * @param array $parameters\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dynamicWhere($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dynamicWhere($method, $parameters);\n }\n\n /**\n * Add a \"where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFullText($columns, $value, $options = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFullText($columns, $value, $options, $boolean);\n }\n\n /**\n * Add a \"or where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFullText($columns, $value, $options = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFullText($columns, $value, $options);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAll($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAll($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAll($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAll($columns, $operator, $value);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAny($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAny($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAny($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAny($columns, $operator, $value);\n }\n\n /**\n * Add a \"where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNone($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNone($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNone($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNone($columns, $operator, $value);\n }\n\n /**\n * Add a \"group by\" clause to the query.\n *\n * @param array|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $groups\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupBy(...$groups)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupBy(...$groups);\n }\n\n /**\n * Add a raw groupBy clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupByRaw($sql, $bindings);\n }\n\n /**\n * Add a \"having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function having($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->having($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHaving($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHaving($column, $operator, $value);\n }\n\n /**\n * Add a nested having statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNested($callback, $boolean);\n }\n\n /**\n * Add another query builder as a nested having to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedHavingQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedHavingQuery($query, $boolean);\n }\n\n /**\n * Add a \"having null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or having null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNull($column);\n }\n\n /**\n * Add a \"having not null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNotNull($columns, $boolean);\n }\n\n /**\n * Add an \"or having not null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNotNull($column);\n }\n\n /**\n * Add a \"having between \" clause to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a raw having clause to the query.\n *\n * @param string $sql\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or having clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingRaw($sql, $bindings);\n }\n\n /**\n * Add an \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function orderBy($column, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderBy($column, $direction);\n }\n\n /**\n * Add a descending \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByDesc($column);\n }\n\n /**\n * Put the query's results in random order.\n *\n * @param string|int $seed\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function inRandomOrder($seed = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->inRandomOrder($seed);\n }\n\n /**\n * Add a raw \"order by\" clause to the query.\n *\n * @param string $sql\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByRaw($sql, $bindings);\n }\n\n /**\n * Alias to set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function skip($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->skip($value);\n }\n\n /**\n * Set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function offset($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->offset($value);\n }\n\n /**\n * Alias to set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function take($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->take($value);\n }\n\n /**\n * Set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function limit($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->limit($value);\n }\n\n /**\n * Add a \"group limit\" clause to the query.\n *\n * @param int $value\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupLimit($value, $column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupLimit($value, $column);\n }\n\n /**\n * Set the limit and offset for a given page.\n *\n * @param int $page\n * @param int $perPage\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPage($page, $perPage = 15)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPage($page, $perPage);\n }\n\n /**\n * Constrain the query to the previous \"page\" of results before a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageBeforeId($perPage, $lastId, $column);\n }\n\n /**\n * Constrain the query to the next \"page\" of results after a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageAfterId($perPage, $lastId, $column);\n }\n\n /**\n * Remove all existing orders and optionally add a new order.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorder($column = null, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorder($column, $direction);\n }\n\n /**\n * Add descending \"reorder\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorderDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorderDesc($column);\n }\n\n /**\n * Add a union statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @param bool $all\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function union($query, $all = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->union($query, $all);\n }\n\n /**\n * Add a union all statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function unionAll($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->unionAll($query);\n }\n\n /**\n * Lock the selected rows in the table.\n *\n * @param string|bool $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lock($value = true)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lock($value);\n }\n\n /**\n * Lock the selected rows in the table for updating.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lockForUpdate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lockForUpdate();\n }\n\n /**\n * Share lock the selected rows in the table.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function sharedLock()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sharedLock();\n }\n\n /**\n * Register a closure to be invoked before the query is executed.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function beforeQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->beforeQuery($callback);\n }\n\n /**\n * Invoke the \"before query\" modification callbacks.\n *\n * @return void\n * @static\n */\n public static function applyBeforeQueryCallbacks()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->applyBeforeQueryCallbacks();\n }\n\n /**\n * Get the SQL representation of the query.\n *\n * @return string\n * @static\n */\n public static function toSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toSql();\n }\n\n /**\n * Get the raw SQL representation of the query with embedded bindings.\n *\n * @return string\n * @static\n */\n public static function toRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toRawSql();\n }\n\n /**\n * Get a single expression value from the first result of a query.\n *\n * @return mixed\n * @static\n */\n public static function rawValue($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rawValue($expression, $bindings);\n }\n\n /**\n * Get the count of the total records for the paginator.\n *\n * @param array<string|\\Illuminate\\Contracts\\Database\\Query\\Expression> $columns\n * @return int<0, max>\n * @static\n */\n public static function getCountForPagination($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getCountForPagination($columns);\n }\n\n /**\n * Concatenate values of a given column as a string.\n *\n * @param string $column\n * @param string $glue\n * @return string\n * @static\n */\n public static function implode($column, $glue = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->implode($column, $glue);\n }\n\n /**\n * Determine if any rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function exists()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->exists();\n }\n\n /**\n * Determine if no rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function doesntExist()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExist();\n }\n\n /**\n * Execute the given callback if no rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function existsOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->existsOr($callback);\n }\n\n /**\n * Execute the given callback if rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function doesntExistOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExistOr($callback);\n }\n\n /**\n * Retrieve the \"count\" result of the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $columns\n * @return int<0, max>\n * @static\n */\n public static function count($columns = '*')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->count($columns);\n }\n\n /**\n * Retrieve the minimum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function min($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->min($column);\n }\n\n /**\n * Retrieve the maximum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function max($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->max($column);\n }\n\n /**\n * Retrieve the sum of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function sum($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sum($column);\n }\n\n /**\n * Retrieve the average of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function avg($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->avg($column);\n }\n\n /**\n * Alias for the \"avg\" method.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function average($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->average($column);\n }\n\n /**\n * Execute an aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return mixed\n * @static\n */\n public static function aggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->aggregate($function, $columns);\n }\n\n /**\n * Execute a numeric aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return float|int\n * @static\n */\n public static function numericAggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->numericAggregate($function, $columns);\n }\n\n /**\n * Insert new records into the database.\n *\n * @return bool\n * @static\n */\n public static function insert($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insert($values);\n }\n\n /**\n * Insert new records into the database while ignoring errors.\n *\n * @return int<0, max>\n * @static\n */\n public static function insertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnore($values);\n }\n\n /**\n * Insert a new record and get the value of the primary key.\n *\n * @param string|null $sequence\n * @return int\n * @static\n */\n public static function insertGetId($values, $sequence = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertGetId($values, $sequence);\n }\n\n /**\n * Insert new records into the table using a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertUsing($columns, $query);\n }\n\n /**\n * Insert new records into the table using a subquery while ignoring errors.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertOrIgnoreUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnoreUsing($columns, $query);\n }\n\n /**\n * Update records in a PostgreSQL database using the update from syntax.\n *\n * @return int\n * @static\n */\n public static function updateFrom($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateFrom($values);\n }\n\n /**\n * Insert or update a record matching the attributes, and fill it with values.\n *\n * @return bool\n * @static\n */\n public static function updateOrInsert($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateOrInsert($attributes, $values);\n }\n\n /**\n * Increment the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function incrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->incrementEach($columns, $extra);\n }\n\n /**\n * Decrement the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function decrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->decrementEach($columns, $extra);\n }\n\n /**\n * Run a truncate statement on the table.\n *\n * @return void\n * @static\n */\n public static function truncate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->truncate();\n }\n\n /**\n * Get all of the query builder's columns in a text-only array with all expressions evaluated.\n *\n * @return list<string>\n * @static\n */\n public static function getColumns()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getColumns();\n }\n\n /**\n * Create a raw database expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->raw($value);\n }\n\n /**\n * Get the current query value bindings in a flattened array.\n *\n * @return list<mixed>\n * @static\n */\n public static function getBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the raw array of bindings.\n *\n * @return \\Illuminate\\Database\\Query\\array{ select: list<mixed>,\n * from: list<mixed>,\n * join: list<mixed>,\n * where: list<mixed>,\n * groupBy: list<mixed>,\n * having: list<mixed>,\n * order: list<mixed>,\n * union: list<mixed>,\n * unionOrder: list<mixed>,\n * }\n * @static\n */\n public static function getRawBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getRawBindings();\n }\n\n /**\n * Set the bindings on the query builder.\n *\n * @param list<mixed> $bindings\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setBindings($bindings, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->setBindings($bindings, $type);\n }\n\n /**\n * Add a binding to the query.\n *\n * @param mixed $value\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function addBinding($value, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addBinding($value, $type);\n }\n\n /**\n * Cast the given binding value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function castBinding($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->castBinding($value);\n }\n\n /**\n * Merge an array of bindings into our bindings.\n *\n * @param self $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeBindings($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeBindings($query);\n }\n\n /**\n * Remove all of the expressions from a list of bindings.\n *\n * @param array<mixed> $bindings\n * @return list<mixed>\n * @static\n */\n public static function cleanBindings($bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cleanBindings($bindings);\n }\n\n /**\n * Get the database query processor instance.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getProcessor()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getProcessor();\n }\n\n /**\n * Get the query grammar instance.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getGrammar()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getGrammar();\n }\n\n /**\n * Use the \"write\" PDO connection when executing the query.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useWritePdo()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useWritePdo();\n }\n\n /**\n * Clone the query without the given properties.\n *\n * @return static\n * @static\n */\n public static function cloneWithout($properties)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithout($properties);\n }\n\n /**\n * Clone the query without the given bindings.\n *\n * @return static\n * @static\n */\n public static function cloneWithoutBindings($except)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithoutBindings($except);\n }\n\n /**\n * Dump the current SQL and bindings.\n *\n * @param mixed $args\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dump(...$args)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dump(...$args);\n }\n\n /**\n * Dump the raw current SQL with embedded bindings.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dumpRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dumpRawSql();\n }\n\n /**\n * Die and dump the current SQL and bindings.\n *\n * @return never\n * @static\n */\n public static function dd()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dd();\n }\n\n /**\n * Die and dump the current SQL with embedded bindings.\n *\n * @return never\n * @static\n */\n public static function ddRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ddRawSql();\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function wherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->wherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrPast($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrPast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFuture($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrFuture($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereToday($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereToday($columns, $boolean);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBeforeToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrBefore($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAfterToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrAfter($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBeforeToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrBefore($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAfterToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrAfter($columns);\n }\n\n /**\n * Explains the query.\n *\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function explain()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->explain();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\Query\\Builder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\Query\\Builder::mixin($mixin, $replace);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\Query\\Builder::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n}\n class Event extends \\Illuminate\\Support\\Facades\\Event {}\n class File extends \\Illuminate\\Support\\Facades\\File {}\n class Gate extends \\Illuminate\\Support\\Facades\\Gate {}\n class Hash extends \\Illuminate\\Support\\Facades\\Hash {}\n class Http extends \\Illuminate\\Support\\Facades\\Http {}\n class Js extends \\Illuminate\\Support\\Js {}\n class Lang extends \\Illuminate\\Support\\Facades\\Lang {}\n class Log extends \\Illuminate\\Support\\Facades\\Log {}\n class Mail extends \\Illuminate\\Support\\Facades\\Mail {}\n class Notification extends \\Illuminate\\Support\\Facades\\Notification {}\n class Number extends \\Illuminate\\Support\\Number {}\n class Password extends \\Illuminate\\Support\\Facades\\Password {}\n class Process extends \\Illuminate\\Support\\Facades\\Process {}\n class Queue extends \\Illuminate\\Support\\Facades\\Queue {}\n class RateLimiter extends \\Illuminate\\Support\\Facades\\RateLimiter {}\n class Redirect extends \\Illuminate\\Support\\Facades\\Redirect {}\n class Request extends \\Illuminate\\Support\\Facades\\Request {}\n class Response extends \\Illuminate\\Support\\Facades\\Response {}\n class Route extends \\Illuminate\\Support\\Facades\\Route {}\n class Schedule extends \\Illuminate\\Support\\Facades\\Schedule {}\n class Schema extends \\Illuminate\\Support\\Facades\\Schema {}\n class Session extends \\Illuminate\\Support\\Facades\\Session {}\n class Storage extends \\Illuminate\\Support\\Facades\\Storage {}\n class Str extends \\Illuminate\\Support\\Str {}\n class Uri extends \\Illuminate\\Support\\Uri {}\n class URL extends \\Illuminate\\Support\\Facades\\URL {}\n class Validator extends \\Illuminate\\Support\\Facades\\Validator {}\n class View extends \\Illuminate\\Support\\Facades\\View {}\n class Vite extends \\Illuminate\\Support\\Facades\\Vite {}\n class AWS extends \\Aws\\Laravel\\AwsFacade {}\n class Avatar extends \\Laravolt\\Avatar\\Facade {}\n class Fractal extends \\Spatie\\Fractal\\Facades\\Fractal {}\n class Laratrust extends \\Laratrust\\LaratrustFacade {}\n class RedisManager extends \\Illuminate\\Support\\Facades\\Redis {}\n class Sentry extends \\Sentry\\Laravel\\Facade {}\n class Statsd extends \\League\\StatsD\\Laravel5\\Facade\\StatsdFacade {}\n class Debugbar extends \\Barryvdh\\Debugbar\\Facades\\Debugbar {}\n class PDF extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Pdf extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Datadog extends \\ChaseConey\\LaravelDatadogHelper\\Datadog {}\n class Flare extends \\Spatie\\LaravelIgnition\\Facades\\Flare {}\n class Hashids extends \\Vinkla\\Hashids\\Facades\\Hashids {}\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"19","depth":4,"bounds":{"left":0.6296542,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6409575,"top":0.09896249,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.64827126,"top":0.09896249,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\n\"headers\":{\n\"Date\":[\"Thu,07 May 2026 14:21:15 GMT\"],\n \"Content-Type\":[\"application/json;charset=utf-8\"],\n \"Transfer-Encoding\":[\"chunked\"],\n \"Connection\":[\"keep-alive\"],\n \"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\n \"CF-Cache-Status\":[\"DYNAMIC\"],\n \"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\n \"Vary\":[\"origin,\n accept-encoding\"],\n \"access-control-allow-credentials\":[\"false\"],\n \"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\",\n cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\n \"x-content-type-options\":[\"nosniff\"],\n \"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\n \"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,\n 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\n \"Report-To\":[\"{\n\\\"endpoints\\\":[{\n\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\n\\\"group\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"NEL\":[\"{\n\\\"success_fraction\\\":0.01,\n\\\"report_to\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"Server\":[\"cloudflare\"]}} {\n\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\n\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","depth":4,"bounds":{"left":0.42885637,"top":0.09736632,"width":0.5711436,"height":0.8818835},"on_screen":true,"value":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\n\"headers\":{\n\"Date\":[\"Thu,07 May 2026 14:21:15 GMT\"],\n \"Content-Type\":[\"application/json;charset=utf-8\"],\n \"Transfer-Encoding\":[\"chunked\"],\n \"Connection\":[\"keep-alive\"],\n \"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\n \"CF-Cache-Status\":[\"DYNAMIC\"],\n \"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\n \"Vary\":[\"origin,\n accept-encoding\"],\n \"access-control-allow-credentials\":[\"false\"],\n \"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\",\n cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\n \"x-content-type-options\":[\"nosniff\"],\n \"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\n \"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,\n 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\n \"Report-To\":[\"{\n\\\"endpoints\\\":[{\n\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\n\\\"group\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"NEL\":[\"{\n\\\"success_fraction\\\":0.01,\n\\\"report_to\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"Server\":[\"cloudflare\"]}} {\n\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\n\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-4205700763318631190
|
-4461000910654451772
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
/* @noinspection ALL */
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 12.33.0.
*
* This file should not be included in your code, only analyzed by your IDE!
*
* @author Barry vd. Heuvel <[EMAIL]>
* @see [URL_WITH_CREDENTIALS] string
* @static
*/
public static function inferBasePath()
{
return \Illuminate\Foundation\Application::inferBasePath();
}
/**
* Get the version number of the application.
*
* @return string
* @static
*/
public static function version()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->version();
}
/**
* Run the given array of bootstrap classes.
*
* @param string[] $bootstrappers
* @return void
* @static
*/
public static function bootstrapWith($bootstrappers)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->bootstrapWith($bootstrappers);
}
/**
* Register a callback to run after loading the environment.
*
* @param \Closure $callback
* @return void
* @static
*/
public static function afterLoadingEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterLoadingEnvironment($callback);
}
/**
* Register a callback to run before a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function beforeBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->beforeBootstrapping($bootstrapper, $callback);
}
/**
* Register a callback to run after a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function afterBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterBootstrapping($bootstrapper, $callback);
}
/**
* Determine if the application has been bootstrapped before.
*
* @return bool
* @static
*/
public static function hasBeenBootstrapped()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasBeenBootstrapped();
}
/**
* Set the base path for the application.
*
* @param string $basePath
* @return \Illuminate\Foundation\Application
* @static
*/
public static function setBasePath($basePath)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->setBasePath($basePath);
}
/**
* Get the path to the application "app" directory.
*
* @param string $path
* @return string
* @static
*/
public static function path($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->path($path);
}
/**
* Set the application directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useAppPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useAppPath($path);
}
/**
* Get the base path of the Laravel installation.
*
* @param string $path
* @return string
* @static
*/
public static function basePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->basePath($path);
}
/**
* Get the path to the bootstrap directory.
*
* @param string $path
* @return string
* @static
*/
public static function bootstrapPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bootstrapPath($path);
}
/**
* Get the path to the service provider list in the bootstrap directory.
*
* @return string
* @static
*/
public static function getBootstrapProvidersPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getBootstrapProvidersPath();
}
/**
* Set the bootstrap file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useBootstrapPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useBootstrapPath($path);
}
/**
* Get the path to the application configuration files.
*
* @param string $path
* @return string
* @static
*/
public static function configPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configPath($path);
}
/**
* Set the configuration directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useConfigPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useConfigPath($path);
}
/**
* Get the path to the database directory.
*
* @param string $path
* @return string
* @static
*/
public static function databasePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->databasePath($path);
}
/**
* Set the database directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useDatabasePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useDatabasePath($path);
}
/**
* Get the path to the language files.
*
* @param string $path
* @return string
* @static
*/
public static function langPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->langPath($path);
}
/**
* Set the language file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useLangPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useLangPath($path);
}
/**
* Get the path to the public / web directory.
*
* @param string $path
* @return string
* @static
*/
public static function publicPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->publicPath($path);
}
/**
* Set the public / web directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function usePublicPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->usePublicPath($path);
}
/**
* Get the path to the storage directory.
*
* @param string $path
* @return string
* @static
*/
public static function storagePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->storagePath($path);
}
/**
* Set the storage directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useStoragePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useStoragePath($path);
}
/**
* Get the path to the resources directory.
*
* @param string $path
* @return string
* @static
*/
public static function resourcePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resourcePath($path);
}
/**
* Get the path to the views directory.
*
* This method returns the first configured path in the array of view paths.
*
* @param string $path
* @return string
* @static
*/
public static function viewPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->viewPath($path);
}
/**
* Join the given paths together.
*
* @param string $basePath
* @param string $path
* @return string
* @static
*/
public static function joinPaths($basePath, $path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->joinPaths($basePath, $path);
}
/**
* Get the path to the environment file directory.
*
* @return string
* @static
*/
public static function environmentPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentPath();
}
/**
* Set the directory for the environment file.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useEnvironmentPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useEnvironmentPath($path);
}
/**
* Set the environment file to be loaded during bootstrapping.
*
* @param string $file
* @return \Illuminate\Foundation\Application
* @static
*/
public static function loadEnvironmentFrom($file)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->loadEnvironmentFrom($file);
}
/**
* Get the environment file the application is using.
*
* @return string
* @static
*/
public static function environmentFile()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFile();
}
/**
* Get the fully qualified path to the environment file.
*
* @return string
* @static
*/
public static function environmentFilePath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFilePath();
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
* @static
*/
public static function environment(...$environments)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environment(...$environments);
}
/**
* Determine if the application is in the local environment.
*
* @return bool
* @static
*/
public static function isLocal()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocal();
}
/**
* Determine if the application is in the production environment.
*
* @return bool
* @static
*/
public static function isProduction()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isProduction();
}
/**
* Detect the application's current environment.
*
* @param \Closure $callback
* @return string
* @static
*/
public static function detectEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->detectEnvironment($callback);
}
/**
* Determine if the application is running in the console.
*
* @return bool
* @static
*/
public static function runningInConsole()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningInConsole();
}
/**
* Determine if the application is running any of the given console commands.
*
* @param string|array $commands
* @return bool
* @static
*/
public static function runningConsoleCommand(...$commands)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningConsoleCommand(...$commands);
}
/**
* Determine if the application is running unit tests.
*
* @return bool
* @static
*/
public static function runningUnitTests()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningUnitTests();
}
/**
* Determine if the application is running with debug mode enabled.
*
* @return bool
* @static
*/
public static function hasDebugModeEnabled()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasDebugModeEnabled();
}
/**
* Register a new registered listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function registered($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registered($callback);
}
/**
* Register all of the configured providers.
*
* @return void
* @static
*/
public static function registerConfiguredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerConfiguredProviders();
}
/**
* Register a service provider with the application.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function register($provider, $force = false)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->register($provider, $force);
}
/**
* Get the registered service provider instance if it exists.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return \Illuminate\Support\ServiceProvider|null
* @static
*/
public static function getProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProvider($provider);
}
/**
* Get the registered service provider instances if any exist.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return array
* @static
*/
public static function getProviders($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProviders($provider);
}
/**
* Resolve a service provider instance from the class name.
*
* @param string $provider
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function resolveProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolveProvider($provider);
}
/**
* Load and boot all of the remaining deferred providers.
*
* @return void
* @static
*/
public static function loadDeferredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProviders();
}
/**
* Load the provider for a deferred service.
*
* @param string $service
* @return void
* @static
*/
public static function loadDeferredProvider($service)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProvider($service);
}
/**
* Register a deferred provider and service.
*
* @param string $provider
* @param string|null $service
* @return void
* @static
*/
public static function registerDeferredProvider($provider, $service = null)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerDeferredProvider($provider, $service);
}
/**
* Resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function make($abstract, $parameters = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->make($abstract, $parameters);
}
/**
* Determine if the given abstract type has been bound.
*
* @param string $abstract
* @return bool
* @static
*/
public static function bound($abstract)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bound($abstract);
}
/**
* Determine if the application has booted.
*
* @return bool
* @static
*/
public static function isBooted()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isBooted();
}
/**
* Boot the application's service providers.
*
* @return void
* @static
*/
public static function boot()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->boot();
}
/**
* Register a new boot listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booting($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booting($callback);
}
/**
* Register a new "booted" listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booted($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booted($callback);
}
/**
* {@inheritdoc}
*
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function handle($request, $type = 1, $catch = true)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handle($request, $type, $catch);
}
/**
* Handle the incoming HTTP request and send the response to the browser.
*
* @param \Illuminate\Http\Request $request
* @return void
* @static
*/
public static function handleRequest($request)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->handleRequest($request);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
* @static
*/
public static function handleCommand($input)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handleCommand($input);
}
/**
* Determine if the framework's base configuration should be merged.
*
* @return bool
* @static
*/
public static function shouldMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldMergeFrameworkConfiguration();
}
/**
* Indicate that the framework's base configuration should not be merged.
*
* @return \Illuminate\Foundation\Application
* @static
*/
public static function dontMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->dontMergeFrameworkConfiguration();
}
/**
* Determine if middleware has been disabled for the application.
*
* @return bool
* @static
*/
public static function shouldSkipMiddleware()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldSkipMiddleware();
}
/**
* Get the path to the cached services.php file.
*
* @return string
* @static
*/
public static function getCachedServicesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedServicesPath();
}
/**
* Get the path to the cached packages.php file.
*
* @return string
* @static
*/
public static function getCachedPackagesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedPackagesPath();
}
/**
* Determine if the application configuration is cached.
*
* @return bool
* @static
*/
public static function configurationIsCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configurationIsCached();
}
/**
* Get the path to the configuration cache file.
*
* @return string
* @static
*/
public static function getCachedConfigPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedConfigPath();
}
/**
* Determine if the application routes are cached.
*
* @return bool
* @static
*/
public static function routesAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->routesAreCached();
}
/**
* Get the path to the routes cache file.
*
* @return string
* @static
*/
public static function getCachedRoutesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedRoutesPath();
}
/**
* Determine if the application events are cached.
*
* @return bool
* @static
*/
public static function eventsAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->eventsAreCached();
}
/**
* Get the path to the events cache file.
*
* @return string
* @static
*/
public static function getCachedEventsPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedEventsPath();
}
/**
* Add new prefix to list of absolute path prefixes.
*
* @param string $prefix
* @return \Illuminate\Foundation\Application
* @static
*/
public static function addAbsoluteCachePathPrefix($prefix)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->addAbsoluteCachePathPrefix($prefix);
}
/**
* Get an instance of the maintenance mode manager implementation.
*
* @return \Illuminate\Contracts\Foundation\MaintenanceMode
* @static
*/
public static function maintenanceMode()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->maintenanceMode();
}
/**
* Determine if the application is currently down for maintenance.
*
* @return bool
* @static
*/
public static function isDownForMaintenance()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDownForMaintenance();
}
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return never
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
* @static
*/
public static function abort($code, $message = '', $headers = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->abort($code, $message, $headers);
}
/**
* Register a terminating callback with the application.
*
* @param callable|string $callback
* @return \Illuminate\Foundation\Application
* @static
*/
public static function terminating($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->terminating($callback);
}
/**
* Terminate the application.
*
* @return void
* @static
*/
public static function terminate()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->terminate();
}
/**
* Get the service providers that have been loaded.
*
* @return array<string, bool>
* @static
*/
public static function getLoadedProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLoadedProviders();
}
/**
* Determine if the given service provider is loaded.
*
* @param string $provider
* @return bool
* @static
*/
public static function providerIsLoaded($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->providerIsLoaded($provider);
}
/**
* Get the application's deferred services.
*
* @return array
* @static
*/
public static function getDeferredServices()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getDeferredServices();
}
/**
* Set the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function setDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setDeferredServices($services);
}
/**
* Determine if the given service is a deferred service.
*
* @param string $service
* @return bool
* @static
*/
public static function isDeferredService($service)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDeferredService($service);
}
/**
* Add an array of services to the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function addDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->addDeferredServices($services);
}
/**
* Remove an array of services from the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function removeDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->removeDeferredServices($services);
}
/**
* Configure the real-time facade namespace.
*
* @param string $namespace
* @return void
* @static
*/
public static function provideFacades($namespace)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->provideFacades($namespace);
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function getLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLocale();
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function currentLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->currentLocale();
}
/**
* Get the current application fallback locale.
*
* @return string
* @static
*/
public static function getFallbackLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getFallbackLocale();
}
/**
* Set the current application locale.
*
* @param string $locale
* @return void
* @static
*/
public static function setLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setLocale($locale);
}
/**
* Set the current application fallback locale.
*
* @param string $fallbackLocale
* @return void
* @static
*/
public static function setFallbackLocale($fallbackLocale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setFallbackLocale($fallbackLocale);
}
/**
* Determine if the application locale is the given locale.
*
* @param string $locale
* @return bool
* @static
*/
public static function isLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocale($locale);
}
/**
* Register the core class aliases in the container.
*
* @return void
* @static
*/
public static function registerCoreContainerAliases()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerCoreContainerAliases();
}
/**
* Flush the container of all bindings and resolved instances.
*
* @return void
* @static
*/
public static function flush()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->flush();
}
/**
* Get the application namespace.
*
* @return string
* @throws \RuntimeException
* @static
*/
public static function getNamespace()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getNamespace();
}
/**
* Define a contextual binding.
*
* @param array|string $concrete
* @return \Illuminate\Contracts\Container\ContextualBindingBuilder
* @static
*/
public static function when($concrete)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->when($concrete);
}
/**
* Define a contextual binding based on an attribute.
*
* @param string $attribute
* @param \Closure $handler
* @return void
* @static
*/
public static function whenHasAttribute($attribute, $handler)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->whenHasAttribute($attribute, $handler);
}
/**
* Returns true if the container can return an entry for the given identifier.
*
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
*
* @return bool
* @param string $id Identifier of the entry to look for.
* @return bool
* @static
*/
public static function has($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->has($id);
}
/**
* Determine if the given abstract type has been resolved.
*
* @param string $abstract
* @return bool
* @static
*/
public static function resolved($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolved($abstract);
}
/**
* Determine if a given type is shared.
*
* @param string $abstract
* @return bool
* @static
*/
public static function isShared($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isShared($abstract);
}
/**
* Determine if a given string is an alias.
*
* @param string $name
* @return bool
* @static
*/
public static function isAlias($name)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isAlias($name);
}
/**
* Register a binding with the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @throws \TypeError
* @throws ReflectionException
* @static
*/
public static function bind($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bind($abstract, $concrete, $shared);
}
/**
* Determine if the container has a method binding.
*
* @param string $method
* @return bool
* @static
*/
public static function hasMethodBinding($method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasMethodBinding($method);
}
/**
* Bind a callback to resolve with Container::call.
*
* @param array|string $method
* @param \Closure $callback
* @return void
* @static
*/
public static function bindMethod($method, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindMethod($method, $callback);
}
/**
* Get the method binding for the given method.
*
* @param string $method
* @param mixed $instance
* @return mixed
* @static
*/
public static function callMethodBinding($method, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->callMethodBinding($method, $instance);
}
/**
* Add a contextual binding to the container.
*
* @param string $concrete
* @param \Closure|string $abstract
* @param \Closure|string $implementation
* @return void
* @static
*/
public static function addContextualBinding($concrete, $abstract, $implementation)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->addContextualBinding($concrete, $abstract, $implementation);
}
/**
* Register a binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @static
*/
public static function bindIf($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindIf($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singleton($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singleton($abstract, $concrete);
}
/**
* Register a shared binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singletonIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singletonIf($abstract, $concrete);
}
/**
* Register a scoped binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scoped($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scoped($abstract, $concrete);
}
/**
* Register a scoped binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scopedIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scopedIf($abstract, $concrete);
}
/**
* "Extend" an abstract type in the container.
*
* @param string $abstract
* @param \Closure $closure
* @return void
* @throws \InvalidArgumentException
* @static
*/
public static function extend($abstract, $closure)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->extend($abstract, $closure);
}
/**
* Register an existing instance as shared in the container.
*
* @template TInstance of mixed
* @param string $abstract
* @param TInstance $instance
* @return TInstance
* @static
*/
public static function instance($abstract, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->instance($abstract, $instance);
}
/**
* Assign a set of tags to a given binding.
*
* @param array|string $abstracts
* @param mixed $tags
* @return void
* @static
*/
public static function tag($abstracts, $tags)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->tag($abstracts, $tags);
}
/**
* Resolve all of the bindings for a given tag.
*
* @param string $tag
* @return iterable
* @static
*/
public static function tagged($tag)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->tagged($tag);
}
/**
* Alias a type to a different name.
*
* @param string $abstract
* @param string $alias
* @return void
* @throws \LogicException
* @static
*/
public static function alias($abstract, $alias)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->alias($abstract, $alias);
}
/**
* Bind a new callback to an abstract's rebind event.
*
* @param string $abstract
* @param \Closure $callback
* @return mixed
* @static
*/
public static function rebinding($abstract, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->rebinding($abstract, $callback);
}
/**
* Refresh an instance on the given target and method.
*
* @param string $abstract
* @param mixed $target
* @param string $method
* @return mixed
* @static
*/
public static function refresh($abstract, $target, $method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->refresh($abstract, $target, $method);
}
/**
* Wrap the given closure such that its dependencies will be injected when executed.
*
* @param \Closure $callback
* @param array $parameters
* @return \Closure
* @static
*/
public static function wrap($callback, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->wrap($callback, $parameters);
}
/**
* Call the given Closure / class@method and inject its dependencies.
*
* @param callable|string $callback
* @param array<string, mixed> $parameters
* @param string|null $defaultMethod
* @return mixed
* @throws \InvalidArgumentException
* @static
*/
public static function call($callback, $parameters = [], $defaultMethod = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->call($callback, $parameters, $defaultMethod);
}
/**
* Get a closure to resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @return ($abstract is class-string<TClass> ? \Closure(): TClass : \Closure(): mixed)
* @static
*/
public static function factory($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->factory($abstract);
}
/**
* An alias function name for make().
*
* @template TClass of object
* @param string|class-string<TClass>|callable $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function makeWith($abstract, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->makeWith($abstract, $parameters);
}
/**
* {@inheritdoc}
*
* @template TClass of object
* @param string|class-string<TClass> $id
* @return ($id is class-string<TClass> ? TClass : mixed)
* @static
*/
public static function get($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
16365
|
735
|
11
|
2026-05-11T08:46:33.967966+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778489193967_m2.jpg...
|
PhpStorm
|
faVsco.js – _ide_helper.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
Analyzing…
<?php
/* @noinspection ALL */
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 12.33.0.
*
* This file should not be included in your code, only analyzed by your IDE!
*
* @author Barry vd. Heuvel <[EMAIL]>
* @see [URL_WITH_CREDENTIALS] string
* @static
*/
public static function inferBasePath()
{
return \Illuminate\Foundation\Application::inferBasePath();
}
/**
* Get the version number of the application.
*
* @return string
* @static
*/
public static function version()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->version();
}
/**
* Run the given array of bootstrap classes.
*
* @param string[] $bootstrappers
* @return void
* @static
*/
public static function bootstrapWith($bootstrappers)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->bootstrapWith($bootstrappers);
}
/**
* Register a callback to run after loading the environment.
*
* @param \Closure $callback
* @return void
* @static
*/
public static function afterLoadingEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterLoadingEnvironment($callback);
}
/**
* Register a callback to run before a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function beforeBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->beforeBootstrapping($bootstrapper, $callback);
}
/**
* Register a callback to run after a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function afterBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterBootstrapping($bootstrapper, $callback);
}
/**
* Determine if the application has been bootstrapped before.
*
* @return bool
* @static
*/
public static function hasBeenBootstrapped()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasBeenBootstrapped();
}
/**
* Set the base path for the application.
*
* @param string $basePath
* @return \Illuminate\Foundation\Application
* @static
*/
public static function setBasePath($basePath)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->setBasePath($basePath);
}
/**
* Get the path to the application "app" directory.
*
* @param string $path
* @return string
* @static
*/
public static function path($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->path($path);
}
/**
* Set the application directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useAppPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useAppPath($path);
}
/**
* Get the base path of the Laravel installation.
*
* @param string $path
* @return string
* @static
*/
public static function basePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->basePath($path);
}
/**
* Get the path to the bootstrap directory.
*
* @param string $path
* @return string
* @static
*/
public static function bootstrapPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bootstrapPath($path);
}
/**
* Get the path to the service provider list in the bootstrap directory.
*
* @return string
* @static
*/
public static function getBootstrapProvidersPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getBootstrapProvidersPath();
}
/**
* Set the bootstrap file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useBootstrapPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useBootstrapPath($path);
}
/**
* Get the path to the application configuration files.
*
* @param string $path
* @return string
* @static
*/
public static function configPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configPath($path);
}
/**
* Set the configuration directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useConfigPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useConfigPath($path);
}
/**
* Get the path to the database directory.
*
* @param string $path
* @return string
* @static
*/
public static function databasePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->databasePath($path);
}
/**
* Set the database directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useDatabasePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useDatabasePath($path);
}
/**
* Get the path to the language files.
*
* @param string $path
* @return string
* @static
*/
public static function langPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->langPath($path);
}
/**
* Set the language file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useLangPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useLangPath($path);
}
/**
* Get the path to the public / web directory.
*
* @param string $path
* @return string
* @static
*/
public static function publicPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->publicPath($path);
}
/**
* Set the public / web directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function usePublicPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->usePublicPath($path);
}
/**
* Get the path to the storage directory.
*
* @param string $path
* @return string
* @static
*/
public static function storagePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->storagePath($path);
}
/**
* Set the storage directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useStoragePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useStoragePath($path);
}
/**
* Get the path to the resources directory.
*
* @param string $path
* @return string
* @static
*/
public static function resourcePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resourcePath($path);
}
/**
* Get the path to the views directory.
*
* This method returns the first configured path in the array of view paths.
*
* @param string $path
* @return string
* @static
*/
public static function viewPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->viewPath($path);
}
/**
* Join the given paths together.
*
* @param string $basePath
* @param string $path
* @return string
* @static
*/
public static function joinPaths($basePath, $path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->joinPaths($basePath, $path);
}
/**
* Get the path to the environment file directory.
*
* @return string
* @static
*/
public static function environmentPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentPath();
}
/**
* Set the directory for the environment file.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useEnvironmentPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useEnvironmentPath($path);
}
/**
* Set the environment file to be loaded during bootstrapping.
*
* @param string $file
* @return \Illuminate\Foundation\Application
* @static
*/
public static function loadEnvironmentFrom($file)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->loadEnvironmentFrom($file);
}
/**
* Get the environment file the application is using.
*
* @return string
* @static
*/
public static function environmentFile()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFile();
}
/**
* Get the fully qualified path to the environment file.
*
* @return string
* @static
*/
public static function environmentFilePath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFilePath();
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
* @static
*/
public static function environment(...$environments)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environment(...$environments);
}
/**
* Determine if the application is in the local environment.
*
* @return bool
* @static
*/
public static function isLocal()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocal();
}
/**
* Determine if the application is in the production environment.
*
* @return bool
* @static
*/
public static function isProduction()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isProduction();
}
/**
* Detect the application's current environment.
*
* @param \Closure $callback
* @return string
* @static
*/
public static function detectEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->detectEnvironment($callback);
}
/**
* Determine if the application is running in the console.
*
* @return bool
* @static
*/
public static function runningInConsole()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningInConsole();
}
/**
* Determine if the application is running any of the given console commands.
*
* @param string|array $commands
* @return bool
* @static
*/
public static function runningConsoleCommand(...$commands)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningConsoleCommand(...$commands);
}
/**
* Determine if the application is running unit tests.
*
* @return bool
* @static
*/
public static function runningUnitTests()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningUnitTests();
}
/**
* Determine if the application is running with debug mode enabled.
*
* @return bool
* @static
*/
public static function hasDebugModeEnabled()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasDebugModeEnabled();
}
/**
* Register a new registered listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function registered($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registered($callback);
}
/**
* Register all of the configured providers.
*
* @return void
* @static
*/
public static function registerConfiguredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerConfiguredProviders();
}
/**
* Register a service provider with the application.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function register($provider, $force = false)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->register($provider, $force);
}
/**
* Get the registered service provider instance if it exists.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return \Illuminate\Support\ServiceProvider|null
* @static
*/
public static function getProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProvider($provider);
}
/**
* Get the registered service provider instances if any exist.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return array
* @static
*/
public static function getProviders($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProviders($provider);
}
/**
* Resolve a service provider instance from the class name.
*
* @param string $provider
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function resolveProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolveProvider($provider);
}
/**
* Load and boot all of the remaining deferred providers.
*
* @return void
* @static
*/
public static function loadDeferredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProviders();
}
/**
* Load the provider for a deferred service.
*
* @param string $service
* @return void
* @static
*/
public static function loadDeferredProvider($service)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProvider($service);
}
/**
* Register a deferred provider and service.
*
* @param string $provider
* @param string|null $service
* @return void
* @static
*/
public static function registerDeferredProvider($provider, $service = null)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerDeferredProvider($provider, $service);
}
/**
* Resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function make($abstract, $parameters = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->make($abstract, $parameters);
}
/**
* Determine if the given abstract type has been bound.
*
* @param string $abstract
* @return bool
* @static
*/
public static function bound($abstract)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bound($abstract);
}
/**
* Determine if the application has booted.
*
* @return bool
* @static
*/
public static function isBooted()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isBooted();
}
/**
* Boot the application's service providers.
*
* @return void
* @static
*/
public static function boot()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->boot();
}
/**
* Register a new boot listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booting($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booting($callback);
}
/**
* Register a new "booted" listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booted($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booted($callback);
}
/**
* {@inheritdoc}
*
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function handle($request, $type = 1, $catch = true)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handle($request, $type, $catch);
}
/**
* Handle the incoming HTTP request and send the response to the browser.
*
* @param \Illuminate\Http\Request $request
* @return void
* @static
*/
public static function handleRequest($request)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->handleRequest($request);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
* @static
*/
public static function handleCommand($input)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handleCommand($input);
}
/**
* Determine if the framework's base configuration should be merged.
*
* @return bool
* @static
*/
public static function shouldMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldMergeFrameworkConfiguration();
}
/**
* Indicate that the framework's base configuration should not be merged.
*
* @return \Illuminate\Foundation\Application
* @static
*/
public static function dontMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->dontMergeFrameworkConfiguration();
}
/**
* Determine if middleware has been disabled for the application.
*
* @return bool
* @static
*/
public static function shouldSkipMiddleware()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldSkipMiddleware();
}
/**
* Get the path to the cached services.php file.
*
* @return string
* @static
*/
public static function getCachedServicesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedServicesPath();
}
/**
* Get the path to the cached packages.php file.
*
* @return string
* @static
*/
public static function getCachedPackagesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedPackagesPath();
}
/**
* Determine if the application configuration is cached.
*
* @return bool
* @static
*/
public static function configurationIsCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configurationIsCached();
}
/**
* Get the path to the configuration cache file.
*
* @return string
* @static
*/
public static function getCachedConfigPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedConfigPath();
}
/**
* Determine if the application routes are cached.
*
* @return bool
* @static
*/
public static function routesAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->routesAreCached();
}
/**
* Get the path to the routes cache file.
*
* @return string
* @static
*/
public static function getCachedRoutesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedRoutesPath();
}
/**
* Determine if the application events are cached.
*
* @return bool
* @static
*/
public static function eventsAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->eventsAreCached();
}
/**
* Get the path to the events cache file.
*
* @return string
* @static
*/
public static function getCachedEventsPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedEventsPath();
}
/**
* Add new prefix to list of absolute path prefixes.
*
* @param string $prefix
* @return \Illuminate\Foundation\Application
* @static
*/
public static function addAbsoluteCachePathPrefix($prefix)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->addAbsoluteCachePathPrefix($prefix);
}
/**
* Get an instance of the maintenance mode manager implementation.
*
* @return \Illuminate\Contracts\Foundation\MaintenanceMode
* @static
*/
public static function maintenanceMode()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->maintenanceMode();
}
/**
* Determine if the application is currently down for maintenance.
*
* @return bool
* @static
*/
public static function isDownForMaintenance()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDownForMaintenance();
}
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return never
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
* @static
*/
public static function abort($code, $message = '', $headers = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->abort($code, $message, $headers);
}
/**
* Register a terminating callback with the application.
*
* @param callable|string $callback
* @return \Illuminate\Foundation\Application
* @static
*/
public static function terminating($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->terminating($callback);
}
/**
* Terminate the application.
*
* @return void
* @static
*/
public static function terminate()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->terminate();
}
/**
* Get the service providers that have been loaded.
*
* @return array<string, bool>
* @static
*/
public static function getLoadedProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLoadedProviders();
}
/**
* Determine if the given service provider is loaded.
*
* @param string $provider
* @return bool
* @static
*/
public static function providerIsLoaded($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->providerIsLoaded($provider);
}
/**
* Get the application's deferred services.
*
* @return array
* @static
*/
public static function getDeferredServices()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getDeferredServices();
}
/**
* Set the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function setDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setDeferredServices($services);
}
/**
* Determine if the given service is a deferred service.
*
* @param string $service
* @return bool
* @static
*/
public static function isDeferredService($service)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDeferredService($service);
}
/**
* Add an array of services to the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function addDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->addDeferredServices($services);
}
/**
* Remove an array of services from the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function removeDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->removeDeferredServices($services);
}
/**
* Configure the real-time facade namespace.
*
* @param string $namespace
* @return void
* @static
*/
public static function provideFacades($namespace)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->provideFacades($namespace);
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function getLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLocale();
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function currentLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->currentLocale();
}
/**
* Get the current application fallback locale.
*
* @return string
* @static
*/
public static function getFallbackLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getFallbackLocale();
}
/**
* Set the current application locale.
*
* @param string $locale
* @return void
* @static
*/
public static function setLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setLocale($locale);
}
/**
* Set the current application fallback locale.
*
* @param string $fallbackLocale
* @return void
* @static
*/
public static function setFallbackLocale($fallbackLocale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setFallbackLocale($fallbackLocale);
}
/**
* Determine if the application locale is the given locale.
*
* @param string $locale
* @return bool
* @static
*/
public static function isLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocale($locale);
}
/**
* Register the core class aliases in the container.
*
* @return void
* @static
*/
public static function registerCoreContainerAliases()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerCoreContainerAliases();
}
/**
* Flush the container of all bindings and resolved instances.
*
* @return void
* @static
*/
public static function flush()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->flush();
}
/**
* Get the application namespace.
*
* @return string
* @throws \RuntimeException
* @static
*/
public static function getNamespace()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getNamespace();
}
/**
* Define a contextual binding.
*
* @param array|string $concrete
* @return \Illuminate\Contracts\Container\ContextualBindingBuilder
* @static
*/
public static function when($concrete)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->when($concrete);
}
/**
* Define a contextual binding based on an attribute.
*
* @param string $attribute
* @param \Closure $handler
* @return void
* @static
*/
public static function whenHasAttribute($attribute, $handler)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->whenHasAttribute($attribute, $handler);
}
/**
* Returns true if the container can return an entry for the given identifier.
*
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
*
* @return bool
* @param string $id Identifier of the entry to look for.
* @return bool
* @static
*/
public static function has($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->has($id);
}
/**
* Determine if the given abstract type has been resolved.
*
* @param string $abstract
* @return bool
* @static
*/
public static function resolved($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolved($abstract);
}
/**
* Determine if a given type is shared.
*
* @param string $abstract
* @return bool
* @static
*/
public static function isShared($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isShared($abstract);
}
/**
* Determine if a given string is an alias.
*
* @param string $name
* @return bool
* @static
*/
public static function isAlias($name)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isAlias($name);
}
/**
* Register a binding with the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @throws \TypeError
* @throws ReflectionException
* @static
*/
public static function bind($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bind($abstract, $concrete, $shared);
}
/**
* Determine if the container has a method binding.
*
* @param string $method
* @return bool
* @static
*/
public static function hasMethodBinding($method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasMethodBinding($method);
}
/**
* Bind a callback to resolve with Container::call.
*
* @param array|string $method
* @param \Closure $callback
* @return void
* @static
*/
public static function bindMethod($method, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindMethod($method, $callback);
}
/**
* Get the method binding for the given method.
*
* @param string $method
* @param mixed $instance
* @return mixed
* @static
*/
public static function callMethodBinding($method, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->callMethodBinding($method, $instance);
}
/**
* Add a contextual binding to the container.
*
* @param string $concrete
* @param \Closure|string $abstract
* @param \Closure|string $implementation
* @return void
* @static
*/
public static function addContextualBinding($concrete, $abstract, $implementation)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->addContextualBinding($concrete, $abstract, $implementation);
}
/**
* Register a binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @static
*/
public static function bindIf($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindIf($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singleton($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singleton($abstract, $concrete);
}
/**
* Register a shared binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singletonIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singletonIf($abstract, $concrete);
}
/**
* Register a scoped binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scoped($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scoped($abstract, $concrete);
}
/**
* Register a scoped binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scopedIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scopedIf($abstract, $concrete);
}
/**
* "Extend" an abstract type in the container.
*
* @param string $abstract
* @param \Closure $closure
* @return void
* @throws \InvalidArgumentException
* @static
*/
public static function extend($abstract, $closure)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->extend($abstract, $closure);
}
/**
* Register an existing instance as shared in the container.
*
* @template TInstance of mixed
* @param string $abstract
* @param TInstance $instance
* @return TInstance
* @static
*/
public static function instance($abstract, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->instance($abstract, $instance);
}
/**
* Assign a set of tags to a given binding.
*
* @param array|string $abstracts
* @param mixed $tags
* @return void
* @static
*/
public static function tag($abstracts, $tags)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->tag($abstracts, $tags);
}
/**
* Resolve all of the bindings for a given tag.
*
* @param string $tag
* @return iterable
* @static
*/
public static function tagged($tag)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->tagged($tag);
}
/**
* Alias a type to a different name.
*
* @param string $abstract
* @param string $alias
* @return void
* @throws \LogicException
* @static
*/
public static function alias($abstract, $alias)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->alias($abstract, $alias);
}
/**
* Bind a new callback to an abstract's rebind event.
*
* @param string $abstract
* @param \Closure $callback
* @return mixed
* @static
*/
public static function rebinding($abstract, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->rebinding($abstract, $callback);
}
/**
* Refresh an instance on the given target and method.
*
* @param string $abstract
* @param mixed $target
* @param string $method
* @return mixed
* @static
*/
public static function refresh($abstract, $target, $method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->refresh($abstract, $target, $method);
}
/**
* Wrap the given closure such that its dependencies will be injected when executed.
*
* @param \Closure $callback
* @param array $parameters
* @return \Closure
* @static
*/
public static function wrap($callback, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->wrap($callback, $parameters);
}
/**
* Call the given Closure / class@method and inject its dependencies.
*
* @param callable|string $callback
* @param array<string, mixed> $parameters
* @param string|null $defaultMethod
* @return mixed
* @throws \InvalidArgumentException
* @static
*/
public static function call($callback, $parameters = [], $defaultMethod = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->call($callback, $parameters, $defaultMethod);
}
/**
* Get a closure to resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @return ($abstract is class-string<TClass> ? \Closure(): TClass : \Closure(): mixed)
* @static
*/
public static function factory($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->factory($abstract);
}
/**
* An alias function name for make().
*
* @template TClass of object
* @param string|class-string<TClass>|callable $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function makeWith($abstract, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->makeWith($abstract, $parameters);
}
/**
* {@inheritdoc}
*
* @template TClass of object
* @param string|class-string<TClass> $id
* @return ($id is class-string<TClass> ? TClass : mixed)
* @static
*/
public static function get($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $i...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20725-handle-HS-search-rate-limit, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.09541223,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: JY-20725-handle-HS-search-rate-limit","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzing…","depth":4,"bounds":{"left":0.3879654,"top":0.19952115,"width":0.019946808,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"<?php\n/* @noinspection ALL */\n// @formatter:off\n// phpcs:ignoreFile\n\n/**\n * A helper file for Laravel, to provide autocomplete information to your IDE\n * Generated for Laravel 12.33.0.\n *\n * This file should not be included in your code, only analyzed by your IDE!\n *\n * @author Barry vd. Heuvel <barryvdh@gmail.com>\n * @see https://github.com/barryvdh/laravel-ide-helper\n */\nnamespace Illuminate\\Support\\Facades {\n /**\n * @see \\Illuminate\\Foundation\\Application\n */\n class App {\n /**\n * Begin configuring a new Laravel application instance.\n *\n * @param string|null $basePath\n * @return \\Illuminate\\Foundation\\Configuration\\ApplicationBuilder\n * @static\n */\n public static function configure($basePath = null)\n {\n return \\Illuminate\\Foundation\\Application::configure($basePath);\n }\n\n /**\n * Infer the application's base directory from the environment.\n *\n * @return string\n * @static\n */\n public static function inferBasePath()\n {\n return \\Illuminate\\Foundation\\Application::inferBasePath();\n }\n\n /**\n * Get the version number of the application.\n *\n * @return string\n * @static\n */\n public static function version()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->version();\n }\n\n /**\n * Run the given array of bootstrap classes.\n *\n * @param string[] $bootstrappers\n * @return void\n * @static\n */\n public static function bootstrapWith($bootstrappers)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bootstrapWith($bootstrappers);\n }\n\n /**\n * Register a callback to run after loading the environment.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterLoadingEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterLoadingEnvironment($callback);\n }\n\n /**\n * Register a callback to run before a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function beforeBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Register a callback to run after a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Determine if the application has been bootstrapped before.\n *\n * @return bool\n * @static\n */\n public static function hasBeenBootstrapped()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasBeenBootstrapped();\n }\n\n /**\n * Set the base path for the application.\n *\n * @param string $basePath\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function setBasePath($basePath)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->setBasePath($basePath);\n }\n\n /**\n * Get the path to the application \"app\" directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->path($path);\n }\n\n /**\n * Set the application directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useAppPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useAppPath($path);\n }\n\n /**\n * Get the base path of the Laravel installation.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->basePath($path);\n }\n\n /**\n * Get the path to the bootstrap directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function bootstrapPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bootstrapPath($path);\n }\n\n /**\n * Get the path to the service provider list in the bootstrap directory.\n *\n * @return string\n * @static\n */\n public static function getBootstrapProvidersPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBootstrapProvidersPath();\n }\n\n /**\n * Set the bootstrap file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useBootstrapPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useBootstrapPath($path);\n }\n\n /**\n * Get the path to the application configuration files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function configPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configPath($path);\n }\n\n /**\n * Set the configuration directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useConfigPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useConfigPath($path);\n }\n\n /**\n * Get the path to the database directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function databasePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->databasePath($path);\n }\n\n /**\n * Set the database directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useDatabasePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useDatabasePath($path);\n }\n\n /**\n * Get the path to the language files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function langPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->langPath($path);\n }\n\n /**\n * Set the language file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useLangPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useLangPath($path);\n }\n\n /**\n * Get the path to the public / web directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function publicPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->publicPath($path);\n }\n\n /**\n * Set the public / web directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function usePublicPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->usePublicPath($path);\n }\n\n /**\n * Get the path to the storage directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function storagePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->storagePath($path);\n }\n\n /**\n * Set the storage directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useStoragePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useStoragePath($path);\n }\n\n /**\n * Get the path to the resources directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function resourcePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resourcePath($path);\n }\n\n /**\n * Get the path to the views directory.\n * \n * This method returns the first configured path in the array of view paths.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function viewPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->viewPath($path);\n }\n\n /**\n * Join the given paths together.\n *\n * @param string $basePath\n * @param string $path\n * @return string\n * @static\n */\n public static function joinPaths($basePath, $path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->joinPaths($basePath, $path);\n }\n\n /**\n * Get the path to the environment file directory.\n *\n * @return string\n * @static\n */\n public static function environmentPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentPath();\n }\n\n /**\n * Set the directory for the environment file.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useEnvironmentPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useEnvironmentPath($path);\n }\n\n /**\n * Set the environment file to be loaded during bootstrapping.\n *\n * @param string $file\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function loadEnvironmentFrom($file)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->loadEnvironmentFrom($file);\n }\n\n /**\n * Get the environment file the application is using.\n *\n * @return string\n * @static\n */\n public static function environmentFile()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFile();\n }\n\n /**\n * Get the fully qualified path to the environment file.\n *\n * @return string\n * @static\n */\n public static function environmentFilePath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFilePath();\n }\n\n /**\n * Get or check the current application environment.\n *\n * @param string|array $environments\n * @return string|bool\n * @static\n */\n public static function environment(...$environments)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environment(...$environments);\n }\n\n /**\n * Determine if the application is in the local environment.\n *\n * @return bool\n * @static\n */\n public static function isLocal()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocal();\n }\n\n /**\n * Determine if the application is in the production environment.\n *\n * @return bool\n * @static\n */\n public static function isProduction()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isProduction();\n }\n\n /**\n * Detect the application's current environment.\n *\n * @param \\Closure $callback\n * @return string\n * @static\n */\n public static function detectEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->detectEnvironment($callback);\n }\n\n /**\n * Determine if the application is running in the console.\n *\n * @return bool\n * @static\n */\n public static function runningInConsole()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningInConsole();\n }\n\n /**\n * Determine if the application is running any of the given console commands.\n *\n * @param string|array $commands\n * @return bool\n * @static\n */\n public static function runningConsoleCommand(...$commands)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningConsoleCommand(...$commands);\n }\n\n /**\n * Determine if the application is running unit tests.\n *\n * @return bool\n * @static\n */\n public static function runningUnitTests()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningUnitTests();\n }\n\n /**\n * Determine if the application is running with debug mode enabled.\n *\n * @return bool\n * @static\n */\n public static function hasDebugModeEnabled()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasDebugModeEnabled();\n }\n\n /**\n * Register a new registered listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function registered($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registered($callback);\n }\n\n /**\n * Register all of the configured providers.\n *\n * @return void\n * @static\n */\n public static function registerConfiguredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerConfiguredProviders();\n }\n\n /**\n * Register a service provider with the application.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @param bool $force\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function register($provider, $force = false)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->register($provider, $force);\n }\n\n /**\n * Get the registered service provider instance if it exists.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return \\Illuminate\\Support\\ServiceProvider|null\n * @static\n */\n public static function getProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProvider($provider);\n }\n\n /**\n * Get the registered service provider instances if any exist.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return array\n * @static\n */\n public static function getProviders($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProviders($provider);\n }\n\n /**\n * Resolve a service provider instance from the class name.\n *\n * @param string $provider\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function resolveProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveProvider($provider);\n }\n\n /**\n * Load and boot all of the remaining deferred providers.\n *\n * @return void\n * @static\n */\n public static function loadDeferredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProviders();\n }\n\n /**\n * Load the provider for a deferred service.\n *\n * @param string $service\n * @return void\n * @static\n */\n public static function loadDeferredProvider($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProvider($service);\n }\n\n /**\n * Register a deferred provider and service.\n *\n * @param string $provider\n * @param string|null $service\n * @return void\n * @static\n */\n public static function registerDeferredProvider($provider, $service = null)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerDeferredProvider($provider, $service);\n }\n\n /**\n * Resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function make($abstract, $parameters = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->make($abstract, $parameters);\n }\n\n /**\n * Determine if the given abstract type has been bound.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function bound($abstract)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bound($abstract);\n }\n\n /**\n * Determine if the application has booted.\n *\n * @return bool\n * @static\n */\n public static function isBooted()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isBooted();\n }\n\n /**\n * Boot the application's service providers.\n *\n * @return void\n * @static\n */\n public static function boot()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->boot();\n }\n\n /**\n * Register a new boot listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booting($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booting($callback);\n }\n\n /**\n * Register a new \"booted\" listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booted($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booted($callback);\n }\n\n /**\n * {@inheritdoc}\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function handle($request, $type = 1, $catch = true)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handle($request, $type, $catch);\n }\n\n /**\n * Handle the incoming HTTP request and send the response to the browser.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function handleRequest($request)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->handleRequest($request);\n }\n\n /**\n * Handle the incoming Artisan command.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @return int\n * @static\n */\n public static function handleCommand($input)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handleCommand($input);\n }\n\n /**\n * Determine if the framework's base configuration should be merged.\n *\n * @return bool\n * @static\n */\n public static function shouldMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldMergeFrameworkConfiguration();\n }\n\n /**\n * Indicate that the framework's base configuration should not be merged.\n *\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function dontMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->dontMergeFrameworkConfiguration();\n }\n\n /**\n * Determine if middleware has been disabled for the application.\n *\n * @return bool\n * @static\n */\n public static function shouldSkipMiddleware()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldSkipMiddleware();\n }\n\n /**\n * Get the path to the cached services.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedServicesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedServicesPath();\n }\n\n /**\n * Get the path to the cached packages.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedPackagesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedPackagesPath();\n }\n\n /**\n * Determine if the application configuration is cached.\n *\n * @return bool\n * @static\n */\n public static function configurationIsCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configurationIsCached();\n }\n\n /**\n * Get the path to the configuration cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedConfigPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedConfigPath();\n }\n\n /**\n * Determine if the application routes are cached.\n *\n * @return bool\n * @static\n */\n public static function routesAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->routesAreCached();\n }\n\n /**\n * Get the path to the routes cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedRoutesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedRoutesPath();\n }\n\n /**\n * Determine if the application events are cached.\n *\n * @return bool\n * @static\n */\n public static function eventsAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->eventsAreCached();\n }\n\n /**\n * Get the path to the events cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedEventsPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedEventsPath();\n }\n\n /**\n * Add new prefix to list of absolute path prefixes.\n *\n * @param string $prefix\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function addAbsoluteCachePathPrefix($prefix)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->addAbsoluteCachePathPrefix($prefix);\n }\n\n /**\n * Get an instance of the maintenance mode manager implementation.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\MaintenanceMode\n * @static\n */\n public static function maintenanceMode()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->maintenanceMode();\n }\n\n /**\n * Determine if the application is currently down for maintenance.\n *\n * @return bool\n * @static\n */\n public static function isDownForMaintenance()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDownForMaintenance();\n }\n\n /**\n * Throw an HttpException with the given data.\n *\n * @param int $code\n * @param string $message\n * @param array $headers\n * @return never\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\HttpException\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException\n * @static\n */\n public static function abort($code, $message = '', $headers = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->abort($code, $message, $headers);\n }\n\n /**\n * Register a terminating callback with the application.\n *\n * @param callable|string $callback\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function terminating($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->terminating($callback);\n }\n\n /**\n * Terminate the application.\n *\n * @return void\n * @static\n */\n public static function terminate()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->terminate();\n }\n\n /**\n * Get the service providers that have been loaded.\n *\n * @return array<string, bool>\n * @static\n */\n public static function getLoadedProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLoadedProviders();\n }\n\n /**\n * Determine if the given service provider is loaded.\n *\n * @param string $provider\n * @return bool\n * @static\n */\n public static function providerIsLoaded($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->providerIsLoaded($provider);\n }\n\n /**\n * Get the application's deferred services.\n *\n * @return array\n * @static\n */\n public static function getDeferredServices()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getDeferredServices();\n }\n\n /**\n * Set the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function setDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setDeferredServices($services);\n }\n\n /**\n * Determine if the given service is a deferred service.\n *\n * @param string $service\n * @return bool\n * @static\n */\n public static function isDeferredService($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDeferredService($service);\n }\n\n /**\n * Add an array of services to the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function addDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addDeferredServices($services);\n }\n\n /**\n * Remove an array of services from the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function removeDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->removeDeferredServices($services);\n }\n\n /**\n * Configure the real-time facade namespace.\n *\n * @param string $namespace\n * @return void\n * @static\n */\n public static function provideFacades($namespace)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->provideFacades($namespace);\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLocale();\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function currentLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentLocale();\n }\n\n /**\n * Get the current application fallback locale.\n *\n * @return string\n * @static\n */\n public static function getFallbackLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getFallbackLocale();\n }\n\n /**\n * Set the current application locale.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Set the current application fallback locale.\n *\n * @param string $fallbackLocale\n * @return void\n * @static\n */\n public static function setFallbackLocale($fallbackLocale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setFallbackLocale($fallbackLocale);\n }\n\n /**\n * Determine if the application locale is the given locale.\n *\n * @param string $locale\n * @return bool\n * @static\n */\n public static function isLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocale($locale);\n }\n\n /**\n * Register the core class aliases in the container.\n *\n * @return void\n * @static\n */\n public static function registerCoreContainerAliases()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerCoreContainerAliases();\n }\n\n /**\n * Flush the container of all bindings and resolved instances.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->flush();\n }\n\n /**\n * Get the application namespace.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Define a contextual binding.\n *\n * @param array|string $concrete\n * @return \\Illuminate\\Contracts\\Container\\ContextualBindingBuilder\n * @static\n */\n public static function when($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->when($concrete);\n }\n\n /**\n * Define a contextual binding based on an attribute.\n *\n * @param string $attribute\n * @param \\Closure $handler\n * @return void\n * @static\n */\n public static function whenHasAttribute($attribute, $handler)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->whenHasAttribute($attribute, $handler);\n }\n\n /**\n * Returns true if the container can return an entry for the given identifier.\n * \n * Returns false otherwise.\n * \n * `has($id)` returning true does not mean that `get($id)` will not throw an exception.\n * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.\n *\n * @return bool\n * @param string $id Identifier of the entry to look for.\n * @return bool\n * @static\n */\n public static function has($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->has($id);\n }\n\n /**\n * Determine if the given abstract type has been resolved.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function resolved($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolved($abstract);\n }\n\n /**\n * Determine if a given type is shared.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function isShared($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isShared($abstract);\n }\n\n /**\n * Determine if a given string is an alias.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function isAlias($name)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isAlias($name);\n }\n\n /**\n * Register a binding with the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @throws \\TypeError\n * @throws ReflectionException\n * @static\n */\n public static function bind($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bind($abstract, $concrete, $shared);\n }\n\n /**\n * Determine if the container has a method binding.\n *\n * @param string $method\n * @return bool\n * @static\n */\n public static function hasMethodBinding($method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasMethodBinding($method);\n }\n\n /**\n * Bind a callback to resolve with Container::call.\n *\n * @param array|string $method\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function bindMethod($method, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindMethod($method, $callback);\n }\n\n /**\n * Get the method binding for the given method.\n *\n * @param string $method\n * @param mixed $instance\n * @return mixed\n * @static\n */\n public static function callMethodBinding($method, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->callMethodBinding($method, $instance);\n }\n\n /**\n * Add a contextual binding to the container.\n *\n * @param string $concrete\n * @param \\Closure|string $abstract\n * @param \\Closure|string $implementation\n * @return void\n * @static\n */\n public static function addContextualBinding($concrete, $abstract, $implementation)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addContextualBinding($concrete, $abstract, $implementation);\n }\n\n /**\n * Register a binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @static\n */\n public static function bindIf($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindIf($abstract, $concrete, $shared);\n }\n\n /**\n * Register a shared binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singleton($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singleton($abstract, $concrete);\n }\n\n /**\n * Register a shared binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singletonIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singletonIf($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scoped($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scoped($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scopedIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scopedIf($abstract, $concrete);\n }\n\n /**\n * \"Extend\" an abstract type in the container.\n *\n * @param string $abstract\n * @param \\Closure $closure\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function extend($abstract, $closure)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->extend($abstract, $closure);\n }\n\n /**\n * Register an existing instance as shared in the container.\n *\n * @template TInstance of mixed\n * @param string $abstract\n * @param TInstance $instance\n * @return TInstance\n * @static\n */\n public static function instance($abstract, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->instance($abstract, $instance);\n }\n\n /**\n * Assign a set of tags to a given binding.\n *\n * @param array|string $abstracts\n * @param mixed $tags\n * @return void\n * @static\n */\n public static function tag($abstracts, $tags)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->tag($abstracts, $tags);\n }\n\n /**\n * Resolve all of the bindings for a given tag.\n *\n * @param string $tag\n * @return iterable\n * @static\n */\n public static function tagged($tag)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->tagged($tag);\n }\n\n /**\n * Alias a type to a different name.\n *\n * @param string $abstract\n * @param string $alias\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function alias($abstract, $alias)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->alias($abstract, $alias);\n }\n\n /**\n * Bind a new callback to an abstract's rebind event.\n *\n * @param string $abstract\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function rebinding($abstract, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->rebinding($abstract, $callback);\n }\n\n /**\n * Refresh an instance on the given target and method.\n *\n * @param string $abstract\n * @param mixed $target\n * @param string $method\n * @return mixed\n * @static\n */\n public static function refresh($abstract, $target, $method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->refresh($abstract, $target, $method);\n }\n\n /**\n * Wrap the given closure such that its dependencies will be injected when executed.\n *\n * @param \\Closure $callback\n * @param array $parameters\n * @return \\Closure\n * @static\n */\n public static function wrap($callback, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->wrap($callback, $parameters);\n }\n\n /**\n * Call the given Closure / class@method and inject its dependencies.\n *\n * @param callable|string $callback\n * @param array<string, mixed> $parameters\n * @param string|null $defaultMethod\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function call($callback, $parameters = [], $defaultMethod = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->call($callback, $parameters, $defaultMethod);\n }\n\n /**\n * Get a closure to resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @return ($abstract is class-string<TClass> ? \\Closure(): TClass : \\Closure(): mixed)\n * @static\n */\n public static function factory($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->factory($abstract);\n }\n\n /**\n * An alias function name for make().\n *\n * @template TClass of object\n * @param string|class-string<TClass>|callable $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function makeWith($abstract, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->makeWith($abstract, $parameters);\n }\n\n /**\n * {@inheritdoc}\n *\n * @template TClass of object\n * @param string|class-string<TClass> $id\n * @return ($id is class-string<TClass> ? TClass : mixed)\n * @static\n */\n public static function get($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->get($id);\n }\n\n /**\n * Instantiate a concrete instance of the given type.\n *\n * @template TClass of object\n * @param \\Closure(static, array): TClass|class-string<TClass> $concrete\n * @return TClass\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @throws \\Illuminate\\Contracts\\Container\\CircularDependencyException\n * @static\n */\n public static function build($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->build($concrete);\n }\n\n /**\n * Resolve a dependency based on an attribute.\n *\n * @param \\ReflectionAttribute $attribute\n * @return mixed\n * @static\n */\n public static function resolveFromAttribute($attribute)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveFromAttribute($attribute);\n }\n\n /**\n * Register a new before resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function beforeResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeResolving($abstract, $callback);\n }\n\n /**\n * Register a new resolving callback.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function resolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function afterResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving attribute callback for all types.\n *\n * @param string $attribute\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterResolvingAttribute($attribute, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolvingAttribute($attribute, $callback);\n }\n\n /**\n * Fire all of the after resolving attribute callbacks.\n *\n * @param \\ReflectionAttribute[] $attributes\n * @param mixed $object\n * @return void\n * @static\n */\n public static function fireAfterResolvingAttributeCallbacks($attributes, $object)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->fireAfterResolvingAttributeCallbacks($attributes, $object);\n }\n\n /**\n * Get the name of the binding the container is currently resolving.\n *\n * @return class-string|string|null\n * @static\n */\n public static function currentlyResolving()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentlyResolving();\n }\n\n /**\n * Get the container's bindings.\n *\n * @return array\n * @static\n */\n public static function getBindings()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the alias for an abstract if available.\n *\n * @param string $abstract\n * @return string\n * @static\n */\n public static function getAlias($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getAlias($abstract);\n }\n\n /**\n * Remove all of the extender callbacks for a given type.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetExtenders($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetExtenders($abstract);\n }\n\n /**\n * Remove a resolved instance from the instance cache.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetInstance($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstance($abstract);\n }\n\n /**\n * Clear all of the instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstances();\n }\n\n /**\n * Clear all of the scoped instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetScopedInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetScopedInstances();\n }\n\n /**\n * Set the callback which determines the current container environment.\n *\n * @param (callable(array<int, string>|string): bool|string)|null $callback\n * @return void\n * @static\n */\n public static function resolveEnvironmentUsing($callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolveEnvironmentUsing($callback);\n }\n\n /**\n * Determine the environment for the container.\n *\n * @param array<int, string>|string $environments\n * @return bool\n * @static\n */\n public static function currentEnvironmentIs($environments)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentEnvironmentIs($environments);\n }\n\n /**\n * Get the globally available instance of the container.\n *\n * @return static\n * @static\n */\n public static function getInstance()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::getInstance();\n }\n\n /**\n * Set the shared instance of the container.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container|null $container\n * @return \\Illuminate\\Contracts\\Container\\Container|static\n * @static\n */\n public static function setInstance($container = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::setInstance($container);\n }\n\n /**\n * Determine if a given offset exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get the value at a given offset.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set the value at a given offset.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset the value at a given offset.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Application::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Application::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Application::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Application::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Console\\Kernel\n */\n class Artisan {\n /**\n * Re-route the Symfony command events to their Laravel counterparts.\n *\n * @internal\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function rerouteSymfonyCommandEvents()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->rerouteSymfonyCommandEvents();\n }\n\n /**\n * Run the console application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $output\n * @return int\n * @static\n */\n public static function handle($input, $output = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->handle($input, $output);\n }\n\n /**\n * Terminate the application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param int $status\n * @return void\n * @static\n */\n public static function terminate($input, $status)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->terminate($input, $status);\n }\n\n /**\n * Register a callback to be invoked when the command lifecycle duration exceeds a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param callable $handler\n * @return void\n * @static\n */\n public static function whenCommandLifecycleIsLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->whenCommandLifecycleIsLongerThan($threshold, $handler);\n }\n\n /**\n * When the command being handled started.\n *\n * @return \\Illuminate\\Support\\Carbon|null\n * @static\n */\n public static function commandStartedAt()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->commandStartedAt();\n }\n\n /**\n * Resolve a console schedule instance.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function resolveConsoleSchedule()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->resolveConsoleSchedule();\n }\n\n /**\n * Register a Closure based command with the application.\n *\n * @param string $signature\n * @param \\Closure $callback\n * @return \\Illuminate\\Foundation\\Console\\ClosureCommand\n * @static\n */\n public static function command($signature, $callback)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->command($signature, $callback);\n }\n\n /**\n * Register the given command with the console application.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command $command\n * @return void\n * @static\n */\n public static function registerCommand($command)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->registerCommand($command);\n }\n\n /**\n * Run an Artisan console command by name.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $outputBuffer\n * @return int\n * @throws \\Symfony\\Component\\Console\\Exception\\CommandNotFoundException\n * @static\n */\n public static function call($command, $parameters = [], $outputBuffer = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->call($command, $parameters, $outputBuffer);\n }\n\n /**\n * Queue the given console command.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Foundation\\Bus\\PendingDispatch\n * @static\n */\n public static function queue($command, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->queue($command, $parameters);\n }\n\n /**\n * Get all of the commands registered with the console.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->all();\n }\n\n /**\n * Get the output for the last run command.\n *\n * @return string\n * @static\n */\n public static function output()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->output();\n }\n\n /**\n * Bootstrap the application for artisan commands.\n *\n * @return void\n * @static\n */\n public static function bootstrap()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrap();\n }\n\n /**\n * Bootstrap the application without booting service providers.\n *\n * @return void\n * @static\n */\n public static function bootstrapWithoutBootingProviders()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrapWithoutBootingProviders();\n }\n\n /**\n * Set the Artisan application instance.\n *\n * @param \\Illuminate\\Console\\Application|null $artisan\n * @return void\n * @static\n */\n public static function setArtisan($artisan)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->setArtisan($artisan);\n }\n\n /**\n * Set the Artisan commands provided by the application.\n *\n * @param array $commands\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommands($commands)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommands($commands);\n }\n\n /**\n * Set the paths that should have their Artisan commands automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandPaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandPaths($paths);\n }\n\n /**\n * Set the paths that should have their Artisan \"routes\" automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandRoutePaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandRoutePaths($paths);\n }\n\n /**\n * Confirm before proceeding with the action.\n * \n * This method only asks for confirmation in production.\n *\n * @param string $warning\n * @param \\Closure|bool|null $callback\n * @return bool\n * @static\n */\n public static function confirmToProceed($warning = 'Application In Production', $callback = null)\n {\n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->confirmToProceed($warning, $callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\AuthManager\n * @see \\Illuminate\\Auth\\SessionGuard\n */\n class Auth {\n /**\n * Attempt to get the guard from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\Guard|\\Illuminate\\Contracts\\Auth\\StatefulGuard\n * @static\n */\n public static function guard($name = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->guard($name);\n }\n\n /**\n * Create a session based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function createSessionDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createSessionDriver($name, $config);\n }\n\n /**\n * Create a token based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\TokenGuard\n * @static\n */\n public static function createTokenDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createTokenDriver($name, $config);\n }\n\n /**\n * Get the default authentication driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default guard driver the factory should serve.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function shouldUse($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->shouldUse($name);\n }\n\n /**\n * Set the default authentication driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a new callback based request guard.\n *\n * @param string $driver\n * @param callable $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function viaRequest($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->viaRequest($driver, $callback);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function userResolver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->userResolver();\n }\n\n /**\n * Set the callback to be used to resolve users.\n *\n * @param \\Closure $userResolver\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function resolveUsersUsing($userResolver)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->resolveUsersUsing($userResolver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Register a custom provider creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function provider($name, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->provider($name, $callback);\n }\n\n /**\n * Determines if any guards have already been resolved.\n *\n * @return bool\n * @static\n */\n public static function hasResolvedGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->hasResolvedGuards();\n }\n\n /**\n * Forget all of the resolved guard instances.\n *\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function forgetGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->forgetGuards();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Create the user provider implementation for the driver.\n *\n * @param string|null $provider\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider|null\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createUserProvider($provider = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createUserProvider($provider);\n }\n\n /**\n * Get the default user provider name.\n *\n * @return string\n * @static\n */\n public static function getDefaultUserProvider()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultUserProvider();\n }\n\n /**\n * Get the currently authenticated user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function user()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->user();\n }\n\n /**\n * Get the ID for the currently authenticated user.\n *\n * @return int|string|null\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->id();\n }\n\n /**\n * Log a user into the application without sessions or cookies.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function once($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->once($credentials);\n }\n\n /**\n * Log the given user ID into the application without sessions or cookies.\n *\n * @param mixed $id\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function onceUsingId($id)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceUsingId($id);\n }\n\n /**\n * Validate a user's credentials.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function validate($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->validate($credentials);\n }\n\n /**\n * Attempt to authenticate using HTTP Basic Auth.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function basic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->basic($field, $extraConditions);\n }\n\n /**\n * Perform a stateless HTTP Basic login attempt.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function onceBasic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceBasic($field, $extraConditions);\n }\n\n /**\n * Attempt to authenticate a user using the given credentials.\n *\n * @param array $credentials\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attempt($credentials = [], $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attempt($credentials, $remember);\n }\n\n /**\n * Attempt to authenticate a user with credentials and additional callbacks.\n *\n * @param array $credentials\n * @param array|callable|null $callbacks\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attemptWhen($credentials = [], $callbacks = null, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attemptWhen($credentials, $callbacks, $remember);\n }\n\n /**\n * Log the given user ID into the application.\n *\n * @param mixed $id\n * @param bool $remember\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function loginUsingId($id, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->loginUsingId($id, $remember);\n }\n\n /**\n * Log a user into the application.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @param bool $remember\n * @return void\n * @static\n */\n public static function login($user, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->login($user, $remember);\n }\n\n /**\n * Log the user out of the application.\n *\n * @return void\n * @static\n */\n public static function logout()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logout();\n }\n\n /**\n * Log the user out of the application on their current device only.\n * \n * This method does not cycle the \"remember\" token.\n *\n * @return void\n * @static\n */\n public static function logoutCurrentDevice()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logoutCurrentDevice();\n }\n\n /**\n * Invalidate other sessions for the current user.\n * \n * The application must be using the AuthenticateSession middleware.\n *\n * @param string $password\n * @return \\Jiminny\\Models\\User|null\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function logoutOtherDevices($password)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->logoutOtherDevices($password);\n }\n\n /**\n * Register an authentication attempt event listener.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function attempting($callback)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->attempting($callback);\n }\n\n /**\n * Get the last user we attempted to authenticate.\n *\n * @return \\Jiminny\\Models\\User\n * @static\n */\n public static function getLastAttempted()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getLastAttempted();\n }\n\n /**\n * Get a unique identifier for the auth session value.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getName();\n }\n\n /**\n * Get the name of the cookie used to store the \"recaller\".\n *\n * @return string\n * @static\n */\n public static function getRecallerName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRecallerName();\n }\n\n /**\n * Determine if the user was authenticated via \"remember me\" cookie.\n *\n * @return bool\n * @static\n */\n public static function viaRemember()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->viaRemember();\n }\n\n /**\n * Set the number of minutes the remember me cookie should be valid for.\n *\n * @param int $minutes\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRememberDuration($minutes)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRememberDuration($minutes);\n }\n\n /**\n * Get the cookie creator instance used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Cookie\\QueueingFactory\n * @throws \\RuntimeException\n * @static\n */\n public static function getCookieJar()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getCookieJar();\n }\n\n /**\n * Set the cookie creator instance used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Cookie\\QueueingFactory $cookie\n * @return void\n * @static\n */\n public static function setCookieJar($cookie)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setCookieJar($cookie);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the session store used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getSession();\n }\n\n /**\n * Return the currently cached user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function getUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getUser();\n }\n\n /**\n * Set the current user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setUser($user)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setUser($user);\n }\n\n /**\n * Get the current request instance.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRequest($request);\n }\n\n /**\n * Get the timebox instance used by the guard.\n *\n * @return \\Illuminate\\Support\\Timebox\n * @static\n */\n public static function getTimebox()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getTimebox();\n }\n\n /**\n * Determine if the current user is authenticated. If not, throw an exception.\n *\n * @return \\Jiminny\\Models\\User\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function authenticate()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->authenticate();\n }\n\n /**\n * Determine if the guard has a user instance.\n *\n * @return bool\n * @static\n */\n public static function hasUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->hasUser();\n }\n\n /**\n * Determine if the current user is authenticated.\n *\n * @return bool\n * @static\n */\n public static function check()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->check();\n }\n\n /**\n * Determine if the current user is a guest.\n *\n * @return bool\n * @static\n */\n public static function guest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->guest();\n }\n\n /**\n * Forget the current user.\n *\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function forgetUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->forgetUser();\n }\n\n /**\n * Get the user provider used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider\n * @static\n */\n public static function getProvider()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getProvider();\n }\n\n /**\n * Set the user provider used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Auth\\UserProvider $provider\n * @return void\n * @static\n */\n public static function setProvider($provider)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setProvider($provider);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Auth\\SessionGuard::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Auth\\SessionGuard::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Auth\\SessionGuard::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Auth\\SessionGuard::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Compilers\\BladeCompiler\n */\n class Blade {\n /**\n * Compile the view at the given path.\n *\n * @param string|null $path\n * @return void\n * @static\n */\n public static function compile($path = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->compile($path);\n }\n\n /**\n * Get the path currently being compiled.\n *\n * @return string\n * @static\n */\n public static function getPath()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getPath();\n }\n\n /**\n * Set the path currently being compiled.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function setPath($path)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setPath($path);\n }\n\n /**\n * Compile the given Blade template contents.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileString($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileString($value);\n }\n\n /**\n * Evaluate and render a Blade string to HTML.\n *\n * @param string $string\n * @param array $data\n * @param bool $deleteCachedView\n * @return string\n * @static\n */\n public static function render($string, $data = [], $deleteCachedView = false)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::render($string, $data, $deleteCachedView);\n }\n\n /**\n * Render a component instance to HTML.\n *\n * @param \\Illuminate\\View\\Component $component\n * @return string\n * @static\n */\n public static function renderComponent($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::renderComponent($component);\n }\n\n /**\n * Strip the parentheses from the given expression.\n *\n * @param string $expression\n * @return string\n * @static\n */\n public static function stripParentheses($expression)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->stripParentheses($expression);\n }\n\n /**\n * Register a custom Blade compiler.\n *\n * @param callable $compiler\n * @return void\n * @static\n */\n public static function extend($compiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->extend($compiler);\n }\n\n /**\n * Get the extensions used by the compiler.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Register an \"if\" statement directive.\n *\n * @param string $name\n * @param callable $callback\n * @return void\n * @static\n */\n public static function if($name, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->if($name, $callback);\n }\n\n /**\n * Check the result of a condition.\n *\n * @param string $name\n * @param mixed $parameters\n * @return bool\n * @static\n */\n public static function check($name, ...$parameters)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->check($name, ...$parameters);\n }\n\n /**\n * Register a class-based component alias directive.\n *\n * @param string $class\n * @param string|null $alias\n * @param string $prefix\n * @return void\n * @static\n */\n public static function component($class, $alias = null, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->component($class, $alias, $prefix);\n }\n\n /**\n * Register an array of class-based components.\n *\n * @param array $components\n * @param string $prefix\n * @return void\n * @static\n */\n public static function components($components, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->components($components, $prefix);\n }\n\n /**\n * Get the registered class component aliases.\n *\n * @return array\n * @static\n */\n public static function getClassComponentAliases()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentAliases();\n }\n\n /**\n * Register a new anonymous component path.\n *\n * @param string $path\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentPath($path, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentPath($path, $prefix);\n }\n\n /**\n * Register an anonymous component namespace.\n *\n * @param string $directory\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentNamespace($directory, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentNamespace($directory, $prefix);\n }\n\n /**\n * Register a class-based component namespace.\n *\n * @param string $namespace\n * @param string $prefix\n * @return void\n * @static\n */\n public static function componentNamespace($namespace, $prefix)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->componentNamespace($namespace, $prefix);\n }\n\n /**\n * Get the registered anonymous component paths.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentPaths()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentPaths();\n }\n\n /**\n * Get the registered anonymous component namespaces.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentNamespaces();\n }\n\n /**\n * Get the registered class component namespaces.\n *\n * @return array\n * @static\n */\n public static function getClassComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentNamespaces();\n }\n\n /**\n * Register a component alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasComponent($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasComponent($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function include($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->include($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasInclude($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasInclude($path, $alias);\n }\n\n /**\n * Register a handler for custom directives, binding the handler to the compiler.\n *\n * @param string $name\n * @param callable $handler\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function bindDirective($name, $handler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->bindDirective($name, $handler);\n }\n\n /**\n * Register a handler for custom directives.\n *\n * @param string $name\n * @param callable $handler\n * @param bool $bind\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function directive($name, $handler, $bind = false)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->directive($name, $handler, $bind);\n }\n\n /**\n * Get the list of custom directives.\n *\n * @return array\n * @static\n */\n public static function getCustomDirectives()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCustomDirectives();\n }\n\n /**\n * Indicate that the following callable should be used to prepare strings for compilation.\n *\n * @param callable $callback\n * @return \\Illuminate\\View\\Compilers\\BladeCompiler\n * @static\n */\n public static function prepareStringsForCompilationUsing($callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->prepareStringsForCompilationUsing($callback);\n }\n\n /**\n * Register a new precompiler.\n *\n * @param callable $precompiler\n * @return void\n * @static\n */\n public static function precompiler($precompiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->precompiler($precompiler);\n }\n\n /**\n * Execute the given callback using a custom echo format.\n *\n * @param string $format\n * @param callable $callback\n * @return string\n * @static\n */\n public static function usingEchoFormat($format, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->usingEchoFormat($format, $callback);\n }\n\n /**\n * Set the echo format to be used by the compiler.\n *\n * @param string $format\n * @return void\n * @static\n */\n public static function setEchoFormat($format)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setEchoFormat($format);\n }\n\n /**\n * Set the \"echo\" format to double encode entities.\n *\n * @return void\n * @static\n */\n public static function withDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withDoubleEncoding();\n }\n\n /**\n * Set the \"echo\" format to not double encode entities.\n *\n * @return void\n * @static\n */\n public static function withoutDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutDoubleEncoding();\n }\n\n /**\n * Indicate that component tags should not be compiled.\n *\n * @return void\n * @static\n */\n public static function withoutComponentTags()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutComponentTags();\n }\n\n /**\n * Get the path to the compiled version of a view.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getCompiledPath($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCompiledPath($path);\n }\n\n /**\n * Determine if the view at the given path is expired.\n *\n * @param string $path\n * @return bool\n * @throws \\ErrorException\n * @static\n */\n public static function isExpired($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->isExpired($path);\n }\n\n /**\n * Get a new component hash for a component name.\n *\n * @param string $component\n * @return string\n * @static\n */\n public static function newComponentHash($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::newComponentHash($component);\n }\n\n /**\n * Compile a class component opening.\n *\n * @param string $component\n * @param string $alias\n * @param string $data\n * @param string $hash\n * @return string\n * @static\n */\n public static function compileClassComponentOpening($component, $alias, $data, $hash)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash);\n }\n\n /**\n * Compile the end-component statements into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndComponentClass()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndComponentClass();\n }\n\n /**\n * Sanitize the given component attribute value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function sanitizeComponentAttribute($value)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::sanitizeComponentAttribute($value);\n }\n\n /**\n * Compile an end-once block into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndOnce()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndOnce();\n }\n\n /**\n * Add a handler to be executed before echoing a given class.\n *\n * @param string|callable $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Compile Blade echos into valid PHP.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileEchos($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEchos($value);\n }\n\n /**\n * Apply the echo handler for the value if it exists.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function applyEchoHandler($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->applyEchoHandler($value);\n }\n\n }\n /**\n * @method static mixed auth(\\Illuminate\\Http\\Request $request)\n * @method static mixed validAuthenticationResponse(\\Illuminate\\Http\\Request $request, mixed $result)\n * @method static void broadcast(array $channels, string $event, array $payload = [])\n * @method static array|null resolveAuthenticatedUser(\\Illuminate\\Http\\Request $request)\n * @method static void resolveAuthenticatedUserUsing(\\Closure $callback)\n * @method static \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster channel(\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel|string $channel, callable|string $callback, array $options = [])\n * @method static \\Illuminate\\Support\\Collection getChannels()\n * @see \\Illuminate\\Broadcasting\\BroadcastManager\n * @see \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster\n */\n class Broadcast {\n /**\n * Register the routes for handling broadcast channel authentication and sockets.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function routes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->routes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast user authentication.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function userRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->userRoutes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast authentication and sockets.\n * \n * Alias of \"routes\" method.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function channelRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->channelRoutes($attributes);\n }\n\n /**\n * Get the socket ID for the given request.\n *\n * @param \\Illuminate\\Http\\Request|null $request\n * @return string|null\n * @static\n */\n public static function socket($request = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->socket($request);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given channels.\n *\n * @static\n */\n public static function on($channels)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->on($channels);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given private channels.\n *\n * @static\n */\n public static function private($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->private($channel);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given presence channels.\n *\n * @static\n */\n public static function presence($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->presence($channel);\n }\n\n /**\n * Begin broadcasting an event.\n *\n * @param mixed $event\n * @return \\Illuminate\\Broadcasting\\PendingBroadcast\n * @static\n */\n public static function event($event = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->event($event);\n }\n\n /**\n * Queue the given event for broadcast.\n *\n * @param mixed $event\n * @return void\n * @static\n */\n public static function queue($event)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->queue($event);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @static\n */\n public static function connection($driver = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->connection($driver);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Get a Pusher instance for the given configuration.\n *\n * @param array $config\n * @return \\Pusher\\Pusher\n * @static\n */\n public static function pusher($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->pusher($config);\n }\n\n /**\n * Get an Ably instance for the given configuration.\n *\n * @param array $config\n * @return \\Ably\\AblyRest\n * @static\n */\n public static function ably($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->ably($config);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function forgetDrivers()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @see \\Illuminate\\Bus\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n */\n class Bus {\n /**\n * Dispatch a command to its appropriate handler.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function dispatch($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatch($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process.\n * \n * Queueable jobs will be dispatched to the \"sync\" queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchSync($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchSync($command, $handler);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process without using the synchronous queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchNow($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchNow($command, $handler);\n }\n\n /**\n * Attempt to find the batch with the given ID.\n *\n * @param string $batchId\n * @return \\Illuminate\\Bus\\Batch|null\n * @static\n */\n public static function findBatch($batchId)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->findBatch($batchId);\n }\n\n /**\n * Create a new batch of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $jobs\n * @return \\Illuminate\\Bus\\PendingBatch\n * @static\n */\n public static function batch($jobs)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->batch($jobs);\n }\n\n /**\n * Create a new chain of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|array|null $jobs\n * @return \\Illuminate\\Foundation\\Bus\\PendingChain\n * @static\n */\n public static function chain($jobs = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->chain($jobs);\n }\n\n /**\n * Determine if the given command has a handler.\n *\n * @param mixed $command\n * @return bool\n * @static\n */\n public static function hasCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->hasCommandHandler($command);\n }\n\n /**\n * Retrieve the handler for a command.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function getCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->getCommandHandler($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler behind a queue.\n *\n * @param mixed $command\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function dispatchToQueue($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchToQueue($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler after the current process.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return void\n * @static\n */\n public static function dispatchAfterResponse($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n $instance->dispatchAfterResponse($command, $handler);\n }\n\n /**\n * Set the pipes through which commands should be piped before dispatching.\n *\n * @param array $pipes\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function pipeThrough($pipes)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->pipeThrough($pipes);\n }\n\n /**\n * Map a command to a handler.\n *\n * @param array $map\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function map($map)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->map($map);\n }\n\n /**\n * Allow dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withDispatchingAfterResponses();\n }\n\n /**\n * Disable dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withoutDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withoutDispatchingAfterResponses();\n }\n\n /**\n * Specify the jobs that should be dispatched instead of faked.\n *\n * @param array|string $jobsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function except($jobsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->except($jobsToDispatch);\n }\n\n /**\n * Assert if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatched($command, $callback);\n }\n\n /**\n * Assert if a job was pushed exactly once.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedOnce($command);\n }\n\n /**\n * Assert if a job was pushed a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatched($command, $callback);\n }\n\n /**\n * Assert that no jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Assert if a job was explicitly dispatched synchronously based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was pushed synchronously a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedSyncTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSyncTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was dispatched after the response was sent based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a job was pushed after the response was sent a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponseTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponseTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a chain of jobs was dispatched.\n *\n * @param array $expectedChain\n * @return void\n * @static\n */\n public static function assertChained($expectedChain)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertChained($expectedChain);\n }\n\n /**\n * Assert no chained jobs was dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingChained()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingChained();\n }\n\n /**\n * Assert if a job was dispatched with an empty chain based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedWithoutChain($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedWithoutChain($command, $callback);\n }\n\n /**\n * Create a new assertion about a chained batch.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Support\\Testing\\Fakes\\ChainedBatchTruthTest\n * @static\n */\n public static function chainedBatch($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->chainedBatch($callback);\n }\n\n /**\n * Assert if a batch was dispatched based on a truth-test callback.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function assertBatched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatched($callback);\n }\n\n /**\n * Assert the number of batches that have been dispatched.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertBatchCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatchCount($count);\n }\n\n /**\n * Assert that no batched jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingBatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingBatched();\n }\n\n /**\n * Assert that no jobs were dispatched, chained, or batched.\n *\n * @return void\n * @static\n */\n public static function assertNothingPlaced()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingPlaced();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatched($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched synchronously matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedSync($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched after the response was sent matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Get all of the pending batches matching a truth-test callback.\n *\n * @param callable $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function batched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->batched($callback);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatched($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatched($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedSync($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedSync($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedAfterResponse($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedAfterResponse($command);\n }\n\n /**\n * Dispatch an empty job batch for testing.\n *\n * @param string $name\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function dispatchFakeBatch($name = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchFakeBatch($name);\n }\n\n /**\n * Record the fake pending batch dispatch.\n *\n * @param \\Illuminate\\Bus\\PendingBatch $pendingBatch\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function recordPendingBatch($pendingBatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->recordPendingBatch($pendingBatch);\n }\n\n /**\n * Specify if commands should be serialized and restored when being batched.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the batches that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedBatches()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedBatches();\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\CacheManager\n * @see \\Illuminate\\Cache\\Repository\n */\n class Cache {\n /**\n * Get a cache store instance by name, wrapped in a repository.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function store($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->store($name);\n }\n\n /**\n * Get a cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Get a memoized cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function memo($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->memo($driver);\n }\n\n /**\n * Resolve the given store.\n *\n * @param string $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Build a cache repository with the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new cache repository with the given implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function repository($store, $config = [])\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->repository($store, $config);\n }\n\n /**\n * Re-set the event dispatcher on all resolved cache repositories.\n *\n * @return void\n * @static\n */\n public static function refreshEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->refreshEventDispatcher();\n }\n\n /**\n * Get the default cache driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default cache driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Unset the given driver instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function forgetDriver($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->forgetDriver($name);\n }\n\n /**\n * Disconnect the given driver and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if an item exists in the cache.\n *\n * @param array|string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if an item doesn't exist in the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve multiple items from the cache by key.\n * \n * Items not found in the cache will have a null value.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function many($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->many($keys);\n }\n\n /**\n * Obtains multiple cache items by their unique keys.\n *\n * @return iterable\n * @param iterable<string> $keys A list of keys that can be obtained in a single operation.\n * @param mixed $default Default value to return for keys that do not exist.\n * @return iterable<string, mixed> A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function getMultiple($keys, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getMultiple($keys, $default);\n }\n\n /**\n * Retrieve an item from the cache and delete it.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Store an item in the cache.\n *\n * @param array|string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function put($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->put($key, $value, $ttl);\n }\n\n /**\n * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.\n *\n * @return bool\n * @param string $key The key of the item to store.\n * @param mixed $value The value of the item to store, must be serializable.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function set($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->set($key, $value, $ttl);\n }\n\n /**\n * Store multiple items in the cache for a given number of seconds.\n *\n * @param array $values\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function putMany($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->putMany($values, $ttl);\n }\n\n /**\n * Persists a set of key => value pairs in the cache, with an optional TTL.\n *\n * @return bool\n * @param iterable $values A list of key => value pairs for a multiple-set operation.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $values is neither an array nor a Traversable,\n * or if any of the $values are not a legal value.\n * @static\n */\n public static function setMultiple($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setMultiple($values, $ttl);\n }\n\n /**\n * Store an item in the cache if the key does not exist.\n *\n * @param string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function add($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->add($key, $value, $ttl);\n }\n\n /**\n * Increment the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function increment($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->increment($key, $value);\n }\n\n /**\n * Decrement the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function decrement($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->decrement($key, $value);\n }\n\n /**\n * Store an item in the cache indefinitely.\n *\n * @param string $key\n * @param mixed $value\n * @return bool\n * @static\n */\n public static function forever($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forever($key, $value);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure|\\DateTimeInterface|\\DateInterval|int|null $ttl\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function remember($key, $ttl, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->remember($key, $ttl, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function sear($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->sear($key, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function rememberForever($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->rememberForever($key, $callback);\n }\n\n /**\n * Retrieve an item from the cache by key, refreshing it in the background if it is stale.\n *\n * @template TCacheValue\n * @param string $key\n * @param array{ 0: \\DateTimeInterface|\\DateInterval|int, 1: \\DateTimeInterface|\\DateInterval|int } $ttl\n * @param (callable(): TCacheValue) $callback\n * @param array{ seconds?: int, owner?: string }|null $lock\n * @param bool $alwaysDefer\n * @return TCacheValue\n * @static\n */\n public static function flexible($key, $ttl, $callback, $lock = null, $alwaysDefer = false)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->flexible($key, $ttl, $callback, $lock, $alwaysDefer);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Delete an item from the cache by its unique key.\n *\n * @return bool\n * @param string $key The unique cache key of the item to delete.\n * @return bool True if the item was successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function delete($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->delete($key);\n }\n\n /**\n * Deletes multiple cache items in a single operation.\n *\n * @return bool\n * @param iterable<string> $keys A list of string-based keys to be deleted.\n * @return bool True if the items were successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function deleteMultiple($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->deleteMultiple($keys);\n }\n\n /**\n * Wipes clean the entire cache's keys.\n *\n * @return bool\n * @return bool True on success and false on failure.\n * @static\n */\n public static function clear()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->clear();\n }\n\n /**\n * Begin executing a new tags operation if the store supports it.\n *\n * @param mixed $names\n * @return \\Illuminate\\Cache\\TaggedCache\n * @throws \\BadMethodCallException\n * @static\n */\n public static function tags($names)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->tags($names);\n }\n\n /**\n * Get the name of the cache store.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getName();\n }\n\n /**\n * Determine if the current store supports tags.\n *\n * @return bool\n * @static\n */\n public static function supportsTags()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->supportsTags();\n }\n\n /**\n * Get the default cache time.\n *\n * @return int|null\n * @static\n */\n public static function getDefaultCacheTime()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getDefaultCacheTime();\n }\n\n /**\n * Set the default cache time in seconds.\n *\n * @param int|null $seconds\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function setDefaultCacheTime($seconds)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setDefaultCacheTime($seconds);\n }\n\n /**\n * Get the cache store implementation.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Store\n * @static\n */\n public static function getStore()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getStore();\n }\n\n /**\n * Set the cache store implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @return static\n * @static\n */\n public static function setStore($store)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setStore($store);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setEventDispatcher($events)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->setEventDispatcher($events);\n }\n\n /**\n * Determine if a cached value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Store an item in the cache for the default time.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cache\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cache\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cache\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cache\\Repository::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a lock instance.\n *\n * @param string $name\n * @param int $seconds\n * @param string|null $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function lock($name, $seconds = 0, $owner = null)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lock($name, $seconds, $owner);\n }\n\n /**\n * Restore a lock instance using the owner identifier.\n *\n * @param string $name\n * @param string $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function restoreLock($name, $owner)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->restoreLock($name, $owner);\n }\n\n /**\n * Remove all items from the cache.\n *\n * @return bool\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->flush();\n }\n\n /**\n * Remove all expired tag set entries.\n *\n * @return void\n * @static\n */\n public static function flushStaleTags()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->flushStaleTags();\n }\n\n /**\n * Get the Redis connection instance.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->connection();\n }\n\n /**\n * Get the Redis connection instance that should be used to manage locks.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function lockConnection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lockConnection();\n }\n\n /**\n * Specify the name of the connection that should be used to store data.\n *\n * @param string $connection\n * @return void\n * @static\n */\n public static function setConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setConnection($connection);\n }\n\n /**\n * Specify the name of the connection that should be used to manage locks.\n *\n * @param string $connection\n * @return \\Illuminate\\Cache\\RedisStore\n * @static\n */\n public static function setLockConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->setLockConnection($connection);\n }\n\n /**\n * Get the Redis database instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the cache key prefix.\n *\n * @return string\n * @static\n */\n public static function getPrefix()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getPrefix();\n }\n\n /**\n * Set the cache key prefix.\n *\n * @param string $prefix\n * @return void\n * @static\n */\n public static function setPrefix($prefix)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setPrefix($prefix);\n }\n\n }\n /**\n * @method static array run(\\Closure|array $tasks)\n * @method static \\Illuminate\\Support\\Defer\\DeferredCallback defer(\\Closure|array $tasks)\n * @see \\Illuminate\\Concurrency\\ConcurrencyManager\n */\n class Concurrency {\n /**\n * Get a driver instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Create an instance of the process concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ProcessDriver\n * @static\n */\n public static function createProcessDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createProcessDriver($config);\n }\n\n /**\n * Create an instance of the fork concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ForkDriver\n * @throws \\RuntimeException\n * @static\n */\n public static function createForkDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createForkDriver($config);\n }\n\n /**\n * Create an instance of the sync concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\SyncDriver\n * @static\n */\n public static function createSyncDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createSyncDriver($config);\n }\n\n /**\n * Get the default instance name.\n *\n * @return string\n * @static\n */\n public static function getDefaultInstance()\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getDefaultInstance();\n }\n\n /**\n * Set the default instance name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultInstance($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->setDefaultInstance($name);\n }\n\n /**\n * Get the instance specific configuration.\n *\n * @param string $name\n * @return array\n * @static\n */\n public static function getInstanceConfig($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getInstanceConfig($name);\n }\n\n /**\n * Get an instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function instance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->instance($name);\n }\n\n /**\n * Unset the given instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function forgetInstance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->forgetInstance($name);\n }\n\n /**\n * Disconnect the given instance and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom instance creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function extend($name, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->extend($name, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function setApplication($app)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @see \\Illuminate\\Config\\Repository\n */\n class Config {\n /**\n * Determine if the given configuration value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Get the specified configuration value.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get many configuration values.\n *\n * @param array<string|int,mixed> $keys\n * @return array<string,mixed>\n * @static\n */\n public static function getMany($keys)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->getMany($keys);\n }\n\n /**\n * Get the specified string configuration value.\n *\n * @param string $key\n * @param (\\Closure():(string|null))|string|null $default\n * @return string\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Get the specified integer configuration value.\n *\n * @param string $key\n * @param (\\Closure():(int|null))|int|null $default\n * @return int\n * @static\n */\n public static function integer($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Get the specified float configuration value.\n *\n * @param string $key\n * @param (\\Closure():(float|null))|float|null $default\n * @return float\n * @static\n */\n public static function float($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Get the specified boolean configuration value.\n *\n * @param string $key\n * @param (\\Closure():(bool|null))|bool|null $default\n * @return bool\n * @static\n */\n public static function boolean($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Get the specified array configuration value.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return array<array-key, mixed>\n * @static\n */\n public static function array($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->array($key, $default);\n }\n\n /**\n * Get the specified array configuration value as a collection.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return Collection<array-key, mixed>\n * @static\n */\n public static function collection($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->collection($key, $default);\n }\n\n /**\n * Set a given configuration value.\n *\n * @param array|string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function set($key, $value = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->set($key, $value);\n }\n\n /**\n * Prepend a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function prepend($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->prepend($key, $value);\n }\n\n /**\n * Push a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Get all of the configuration items for the application.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Determine if the given configuration option exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get a configuration option.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set a configuration option.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset a configuration option.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Config\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Config\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Config\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Config\\Repository::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Log\\Context\\Repository\n */\n class Context {\n /**\n * Determine if the given key exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the given key is missing.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if the given key exists within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hasHidden($key);\n }\n\n /**\n * Determine if the given key is missing within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missingHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missingHidden($key);\n }\n\n /**\n * Retrieve all the context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Retrieve all the hidden context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function allHidden()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->allHidden();\n }\n\n /**\n * Retrieve the given key's value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->getHidden($key, $default);\n }\n\n /**\n * Retrieve the given key's value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pullHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pullHidden($key, $default);\n }\n\n /**\n * Retrieve only the values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->only($keys);\n }\n\n /**\n * Retrieve only the hidden values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function onlyHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->onlyHidden($keys);\n }\n\n /**\n * Retrieve all values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->except($keys);\n }\n\n /**\n * Retrieve all hidden values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function exceptHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->exceptHidden($keys);\n }\n\n /**\n * Add a context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function add($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->add($key, $value);\n }\n\n /**\n * Add a hidden context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHidden($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHidden($key, $value);\n }\n\n /**\n * Add a context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function remember($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->remember($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function rememberHidden($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->rememberHidden($key, $value);\n }\n\n /**\n * Forget the given context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Forget the given hidden context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forgetHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forgetHidden($key);\n }\n\n /**\n * Add a context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addIf($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHiddenIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHiddenIf($key, $value);\n }\n\n /**\n * Push the given values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function push($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->push($key, ...$values);\n }\n\n /**\n * Pop the latest value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function pop($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pop($key);\n }\n\n /**\n * Push the given hidden values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function pushHidden($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pushHidden($key, ...$values);\n }\n\n /**\n * Pop the latest hidden value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function popHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->popHidden($key);\n }\n\n /**\n * Increment a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Determine if the given value is in the given stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function stackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->stackContains($key, $value, $strict);\n }\n\n /**\n * Determine if the given value is in the given hidden stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function hiddenStackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hiddenStackContains($key, $value, $strict);\n }\n\n /**\n * Run the callback function with the given context values and restore the original context state when complete.\n *\n * @param callable $callback\n * @param array<string, mixed> $data\n * @param array<string, mixed> $hidden\n * @return mixed\n * @throws \\Throwable\n * @static\n */\n public static function scope($callback, $data = [], $hidden = [])\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->scope($callback, $data, $hidden);\n }\n\n /**\n * Determine if the repository is empty.\n *\n * @return bool\n * @static\n */\n public static function isEmpty()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->isEmpty();\n }\n\n /**\n * Execute the given callback when context is about to be dehydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function dehydrating($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrating($callback);\n }\n\n /**\n * Execute the given callback when context has been hydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function hydrated($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrated($callback);\n }\n\n /**\n * Handle unserialize exceptions using the given callback.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleUnserializeExceptionsUsing($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->handleUnserializeExceptionsUsing($callback);\n }\n\n /**\n * Flush all context data.\n *\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->flush();\n }\n\n /**\n * Dehydrate the context data.\n *\n * @internal\n * @return \\Illuminate\\Log\\Context\\?array\n * @static\n */\n public static function dehydrate()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrate();\n }\n\n /**\n * Hydrate the context instance.\n *\n * @internal\n * @param \\Illuminate\\Log\\Context\\?array $context\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function hydrate($context)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrate($context);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Log\\Context\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Log\\Context\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Log\\Context\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Log\\Context\\Repository::flushMacros();\n }\n\n /**\n * Restore the model from the model identifier instance.\n *\n * @param \\Illuminate\\Contracts\\Database\\ModelIdentifier $value\n * @return \\Illuminate\\Database\\Eloquent\\Model\n * @static\n */\n public static function restoreModel($value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->restoreModel($value);\n }\n\n }\n /**\n * @see \\Illuminate\\Cookie\\CookieJar\n */\n class Cookie {\n /**\n * Create a new cookie instance.\n *\n * @param string $name\n * @param string $value\n * @param int $minutes\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Create a cookie that lasts \"forever\" (400 days).\n *\n * @param string $name\n * @param string $value\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Expire the given cookie.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forget($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forget($name, $path, $domain);\n }\n\n /**\n * Determine if a cookie has been queued.\n *\n * @param string $key\n * @param string|null $path\n * @return bool\n * @static\n */\n public static function hasQueued($key, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->hasQueued($key, $path);\n }\n\n /**\n * Get a queued cookie instance.\n *\n * @param string $key\n * @param mixed $default\n * @param string|null $path\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie|null\n * @static\n */\n public static function queued($key, $default = null, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->queued($key, $default, $path);\n }\n\n /**\n * Queue a cookie to send with the next response.\n *\n * @param mixed $parameters\n * @return void\n * @static\n */\n public static function queue(...$parameters)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->queue(...$parameters);\n }\n\n /**\n * Queue a cookie to expire with the next response.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return void\n * @static\n */\n public static function expire($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->expire($name, $path, $domain);\n }\n\n /**\n * Remove a cookie from the queue.\n *\n * @param string $name\n * @param string|null $path\n * @return void\n * @static\n */\n public static function unqueue($name, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->unqueue($name, $path);\n }\n\n /**\n * Set the default path and domain for the jar.\n *\n * @param string $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param string|null $sameSite\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite);\n }\n\n /**\n * Get the cookies which have been queued for the next request.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie[]\n * @static\n */\n public static function getQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->getQueuedCookies();\n }\n\n /**\n * Flush the cookies which have been queued for the next request.\n *\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function flushQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->flushQueuedCookies();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cookie\\CookieJar::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cookie\\CookieJar::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cookie\\CookieJar::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cookie\\CookieJar::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Encryption\\Encrypter\n */\n class Crypt {\n /**\n * Determine if the given key and cipher combination is valid.\n *\n * @param string $key\n * @param string $cipher\n * @return bool\n * @static\n */\n public static function supported($key, $cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::supported($key, $cipher);\n }\n\n /**\n * Create a new encryption key for the given cipher.\n *\n * @param string $cipher\n * @return string\n * @static\n */\n public static function generateKey($cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::generateKey($cipher);\n }\n\n /**\n * Encrypt the given value.\n *\n * @param mixed $value\n * @param bool $serialize\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encrypt($value, $serialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encrypt($value, $serialize);\n }\n\n /**\n * Encrypt a string without serialization.\n *\n * @param string $value\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encryptString($value)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encryptString($value);\n }\n\n /**\n * Decrypt the given value.\n *\n * @param string $payload\n * @param bool $unserialize\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decrypt($payload, $unserialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decrypt($payload, $unserialize);\n }\n\n /**\n * Decrypt the given string without unserialization.\n *\n * @param string $payload\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decryptString($payload)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decryptString($payload);\n }\n\n /**\n * Get the encryption key that the encrypter is currently using.\n *\n * @return string\n * @static\n */\n public static function getKey()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getKey();\n }\n\n /**\n * Get the current encryption key and all previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getAllKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getAllKeys();\n }\n\n /**\n * Get the previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getPreviousKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getPreviousKeys();\n }\n\n /**\n * Set the previous / legacy encryption keys that should be utilized if decryption fails.\n *\n * @param array $keys\n * @return \\Illuminate\\Encryption\\Encrypter\n * @static\n */\n public static function previousKeys($keys)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->previousKeys($keys);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\DatabaseManager\n */\n class DB {\n /**\n * Get a database connection instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Build a database connection instance from the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Calculate the dynamic connection name for an on-demand connection based on its configuration.\n *\n * @param array $config\n * @return string\n * @static\n */\n public static function calculateDynamicConnectionName($config)\n {\n return \\Illuminate\\Database\\DatabaseManager::calculateDynamicConnectionName($config);\n }\n\n /**\n * Get a database connection instance from the given configuration.\n *\n * @param \\UnitEnum|string $name\n * @param array $config\n * @param bool $force\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function connectUsing($name, $config, $force = false)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connectUsing($name, $config, $force);\n }\n\n /**\n * Disconnect from the given database and remove from local cache.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Disconnect from the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Reconnect to the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function reconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Set the default database connection for the callback execution.\n *\n * @param \\UnitEnum|string $name\n * @param callable $callback\n * @return mixed\n * @static\n */\n public static function usingConnection($name, $callback)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->usingConnection($name, $callback);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Get all of the supported drivers.\n *\n * @return string[]\n * @static\n */\n public static function supportedDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->supportedDrivers();\n }\n\n /**\n * Get all of the drivers that are actually available.\n *\n * @return string[]\n * @static\n */\n public static function availableDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->availableDrivers();\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Remove an extension connection resolver.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function forgetExtension($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->forgetExtension($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string, \\Illuminate\\Database\\Connection>\n * @static\n */\n public static function getConnections()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Set the database reconnector callback.\n *\n * @param callable $reconnector\n * @return void\n * @static\n */\n public static function setReconnector($reconnector)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setReconnector($reconnector);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Database\\DatabaseManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\DatabaseManager::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\DatabaseManager::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Database\\DatabaseManager::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\DatabaseManager::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a human-readable name for the given connection driver.\n *\n * @return string\n * @static\n */\n public static function getDriverTitle()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverTitle();\n }\n\n /**\n * Determine if the connected database is a MariaDB database.\n *\n * @return bool\n * @static\n */\n public static function isMaria()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->isMaria();\n }\n\n /**\n * Get the server version for the connection.\n *\n * @return string\n * @static\n */\n public static function getServerVersion()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getServerVersion();\n }\n\n /**\n * Get a schema builder instance for the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\MariaDbBuilder\n * @static\n */\n public static function getSchemaBuilder()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaBuilder();\n }\n\n /**\n * Get the schema state for the connection.\n *\n * @param \\Illuminate\\Filesystem\\Filesystem|null $files\n * @param callable|null $processFactory\n * @return \\Illuminate\\Database\\Schema\\MariaDbSchemaState\n * @static\n */\n public static function getSchemaState($files = null, $processFactory = null)\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaState($files, $processFactory);\n }\n\n /**\n * Run an insert statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param string|null $sequence\n * @return bool\n * @static\n */\n public static function insert($query, $bindings = [], $sequence = null)\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->insert($query, $bindings, $sequence);\n }\n\n /**\n * Get the connection's last insert ID.\n *\n * @return string|int|null\n * @static\n */\n public static function getLastInsertId()\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getLastInsertId();\n }\n\n /**\n * Set the query grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultQueryGrammar();\n }\n\n /**\n * Set the schema grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultSchemaGrammar();\n }\n\n /**\n * Set the query post processor to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultPostProcessor();\n }\n\n /**\n * Begin a fluent query against a database table.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|\\UnitEnum|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function table($table, $as = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->table($table, $as);\n }\n\n /**\n * Get a new query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function query()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->query();\n }\n\n /**\n * Run a select statement and return a single result.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @static\n */\n public static function selectOne($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectOne($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement and return the first column of the first row.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @throws \\Illuminate\\Database\\MultipleColumnsSelectedException\n * @static\n */\n public static function scalar($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->scalar($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return array\n * @static\n */\n public static function selectFromWriteConnection($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectFromWriteConnection($query, $bindings);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function select($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->select($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns all of the result sets.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function selectResultSets($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectResultSets($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns a generator.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return \\Generator<int, \\stdClass>\n * @static\n */\n public static function cursor($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->cursor($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run an update statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function update($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->update($query, $bindings);\n }\n\n /**\n * Run a delete statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function delete($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->delete($query, $bindings);\n }\n\n /**\n * Execute an SQL statement and return the boolean result.\n *\n * @param string $query\n * @param array $bindings\n * @return bool\n * @static\n */\n public static function statement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->statement($query, $bindings);\n }\n\n /**\n * Run an SQL statement and get the number of rows affected.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function affectingStatement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->affectingStatement($query, $bindings);\n }\n\n /**\n * Run a raw, unprepared query against the PDO connection.\n *\n * @param string $query\n * @return bool\n * @static\n */\n public static function unprepared($query)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->unprepared($query);\n }\n\n /**\n * Get the number of open connections for the database.\n *\n * @return int|null\n * @static\n */\n public static function threadCount()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->threadCount();\n }\n\n /**\n * Execute the given callback in \"dry run\" mode.\n *\n * @param (\\Closure(\\Illuminate\\Database\\Connection): mixed) $callback\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function pretend($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretend($callback);\n }\n\n /**\n * Execute the given callback without \"pretending\".\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutPretending($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutPretending($callback);\n }\n\n /**\n * Bind values to their parameters in the given statement.\n *\n * @param \\PDOStatement $statement\n * @param array $bindings\n * @return void\n * @static\n */\n public static function bindValues($statement, $bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->bindValues($statement, $bindings);\n }\n\n /**\n * Prepare the query bindings for execution.\n *\n * @param array $bindings\n * @return array\n * @static\n */\n public static function prepareBindings($bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->prepareBindings($bindings);\n }\n\n /**\n * Log a query in the connection's query log.\n *\n * @param string $query\n * @param array $bindings\n * @param float|null $time\n * @return void\n * @static\n */\n public static function logQuery($query, $bindings, $time = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->logQuery($query, $bindings, $time);\n }\n\n /**\n * Register a callback to be invoked when the connection queries for longer than a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param (callable(\\Illuminate\\Database\\Connection, \\Illuminate\\Database\\Events\\QueryExecuted): mixed) $handler\n * @return void\n * @static\n */\n public static function whenQueryingForLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->whenQueryingForLongerThan($threshold, $handler);\n }\n\n /**\n * Allow all the query duration handlers to run again, even if they have already run.\n *\n * @return void\n * @static\n */\n public static function allowQueryDurationHandlersToRunAgain()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->allowQueryDurationHandlersToRunAgain();\n }\n\n /**\n * Get the duration of all run queries in milliseconds.\n *\n * @return float\n * @static\n */\n public static function totalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->totalQueryDuration();\n }\n\n /**\n * Reset the duration of all run queries.\n *\n * @return void\n * @static\n */\n public static function resetTotalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->resetTotalQueryDuration();\n }\n\n /**\n * Reconnect to the database if a PDO connection is missing.\n *\n * @return void\n * @static\n */\n public static function reconnectIfMissingConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->reconnectIfMissingConnection();\n }\n\n /**\n * Register a hook to be run just before a database transaction is started.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeStartingTransaction($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeStartingTransaction($callback);\n }\n\n /**\n * Register a hook to be run just before a database query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeExecuting($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeExecuting($callback);\n }\n\n /**\n * Register a database query listener with the connection.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function listen($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->listen($callback);\n }\n\n /**\n * Get a new raw query expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->raw($value);\n }\n\n /**\n * Escape a value for safe SQL embedding.\n *\n * @param string|float|int|bool|null $value\n * @param bool $binary\n * @return string\n * @static\n */\n public static function escape($value, $binary = false)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->escape($value, $binary);\n }\n\n /**\n * Determine if the database connection has modified any database records.\n *\n * @return bool\n * @static\n */\n public static function hasModifiedRecords()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->hasModifiedRecords();\n }\n\n /**\n * Indicate if any records have been modified.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function recordsHaveBeenModified($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->recordsHaveBeenModified($value);\n }\n\n /**\n * Set the record modification state.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setRecordModificationState($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setRecordModificationState($value);\n }\n\n /**\n * Reset the record modification state.\n *\n * @return void\n * @static\n */\n public static function forgetRecordModificationState()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->forgetRecordModificationState();\n }\n\n /**\n * Indicate that the connection should use the write PDO connection for reads.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function useWriteConnectionWhenReading($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->useWriteConnectionWhenReading($value);\n }\n\n /**\n * Get the current PDO connection.\n *\n * @return \\PDO\n * @static\n */\n public static function getPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPdo();\n }\n\n /**\n * Get the current PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawPdo();\n }\n\n /**\n * Get the current PDO connection used for reading.\n *\n * @return \\PDO\n * @static\n */\n public static function getReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getReadPdo();\n }\n\n /**\n * Get the current read PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawReadPdo();\n }\n\n /**\n * Set the PDO connection.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPdo($pdo);\n }\n\n /**\n * Set the PDO connection used for reading.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadPdo($pdo);\n }\n\n /**\n * Get the database connection name.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getName();\n }\n\n /**\n * Get the database connection full name.\n *\n * @return string|null\n * @static\n */\n public static function getNameWithReadWriteType()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getNameWithReadWriteType();\n }\n\n /**\n * Get an option from the configuration options.\n *\n * @param string|null $option\n * @return mixed\n * @static\n */\n public static function getConfig($option = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getConfig($option);\n }\n\n /**\n * Get the PDO driver name.\n *\n * @return string\n * @static\n */\n public static function getDriverName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverName();\n }\n\n /**\n * Get the query grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryGrammar();\n }\n\n /**\n * Set the query grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setQueryGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setQueryGrammar($grammar);\n }\n\n /**\n * Get the schema grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\Grammars\\Grammar\n * @static\n */\n public static function getSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaGrammar();\n }\n\n /**\n * Set the schema grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Schema\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setSchemaGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setSchemaGrammar($grammar);\n }\n\n /**\n * Get the query post processor used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPostProcessor();\n }\n\n /**\n * Set the query post processor used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Processors\\Processor $processor\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPostProcessor($processor)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPostProcessor($processor);\n }\n\n /**\n * Get the event dispatcher used by the connection.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance on the connection.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setEventDispatcher($events)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setEventDispatcher($events);\n }\n\n /**\n * Unset the event dispatcher for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetEventDispatcher();\n }\n\n /**\n * Set the transaction manager instance on the connection.\n *\n * @param \\Illuminate\\Database\\DatabaseTransactionsManager $manager\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTransactionManager($manager)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTransactionManager($manager);\n }\n\n /**\n * Unset the transaction manager for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetTransactionManager()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetTransactionManager();\n }\n\n /**\n * Determine if the connection is in a \"dry run\".\n *\n * @return bool\n * @static\n */\n public static function pretending()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretending();\n }\n\n /**\n * Get the connection query log.\n *\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function getQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryLog();\n }\n\n /**\n * Get the connection query log with embedded bindings.\n *\n * @return array\n * @static\n */\n public static function getRawQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawQueryLog();\n }\n\n /**\n * Clear the query log.\n *\n * @return void\n * @static\n */\n public static function flushQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->flushQueryLog();\n }\n\n /**\n * Enable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function enableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->enableQueryLog();\n }\n\n /**\n * Disable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function disableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->disableQueryLog();\n }\n\n /**\n * Determine whether we're logging queries.\n *\n * @return bool\n * @static\n */\n public static function logging()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->logging();\n }\n\n /**\n * Get the name of the connected database.\n *\n * @return string\n * @static\n */\n public static function getDatabaseName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDatabaseName();\n }\n\n /**\n * Set the name of the connected database.\n *\n * @param string $database\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setDatabaseName($database)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setDatabaseName($database);\n }\n\n /**\n * Set the read / write type of the connection.\n *\n * @param string|null $readWriteType\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadWriteType($readWriteType)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadWriteType($readWriteType);\n }\n\n /**\n * Get the table prefix for the connection.\n *\n * @return string\n * @static\n */\n public static function getTablePrefix()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getTablePrefix();\n }\n\n /**\n * Set the table prefix in use by the connection.\n *\n * @param string $prefix\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTablePrefix($prefix)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTablePrefix($prefix);\n }\n\n /**\n * Execute the given callback without table prefix.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutTablePrefix($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutTablePrefix($callback);\n }\n\n /**\n * Register a connection resolver.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function resolverFor($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n \\Illuminate\\Database\\MariaDbConnection::resolverFor($driver, $callback);\n }\n\n /**\n * Get the connection resolver for the given driver.\n *\n * @param string $driver\n * @return \\Closure|null\n * @static\n */\n public static function getResolver($driver)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n return \\Illuminate\\Database\\MariaDbConnection::getResolver($driver);\n }\n\n /**\n * @template TReturn of mixed\n * \n * Execute a Closure within a transaction.\n * @param (\\Closure(static): TReturn) $callback\n * @param int $attempts\n * @return TReturn\n * @throws \\Throwable\n * @static\n */\n public static function transaction($callback, $attempts = 1)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transaction($callback, $attempts);\n }\n\n /**\n * Start a new database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function beginTransaction()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->beginTransaction();\n }\n\n /**\n * Commit the active database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function commit()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->commit();\n }\n\n /**\n * Rollback the active database transaction.\n *\n * @param int|null $toLevel\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function rollBack($toLevel = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->rollBack($toLevel);\n }\n\n /**\n * Get the number of active transactions.\n *\n * @return int\n * @static\n */\n public static function transactionLevel()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transactionLevel();\n }\n\n /**\n * Execute the callback after a transaction commits.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterCommit($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterCommit($callback);\n }\n\n /**\n * Execute the callback after a transaction rolls back.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterRollBack($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterRollBack($callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Events\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n */\n class Event {\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|string $events\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|null $listener\n * @return void\n * @static\n */\n public static function listen($events, $listener = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->listen($events, $listener);\n }\n\n /**\n * Determine if a given event has listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasListeners($eventName);\n }\n\n /**\n * Determine if the given event has any wildcard listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasWildcardListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasWildcardListeners($eventName);\n }\n\n /**\n * Register an event and payload to be fired later.\n *\n * @param string $event\n * @param object|array $payload\n * @return void\n * @static\n */\n public static function push($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->push($event, $payload);\n }\n\n /**\n * Flush a set of pushed events.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function flush($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->flush($event);\n }\n\n /**\n * Register an event subscriber with the dispatcher.\n *\n * @param object|string $subscriber\n * @return void\n * @static\n */\n public static function subscribe($subscriber)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->subscribe($subscriber);\n }\n\n /**\n * Fire an event until the first non-null response is returned.\n *\n * @param string|object $event\n * @param mixed $payload\n * @return mixed\n * @static\n */\n public static function until($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->until($event, $payload);\n }\n\n /**\n * Fire an event and call the listeners.\n *\n * @param string|object $event\n * @param mixed $payload\n * @param bool $halt\n * @return array|null\n * @static\n */\n public static function dispatch($event, $payload = [], $halt = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->dispatch($event, $payload, $halt);\n }\n\n /**\n * Get all of the listeners for a given event name.\n *\n * @param string $eventName\n * @return array\n * @static\n */\n public static function getListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getListeners($eventName);\n }\n\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Closure|string|array $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function makeListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->makeListener($listener, $wildcard);\n }\n\n /**\n * Create a class based listener using the IoC container.\n *\n * @param string $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function createClassListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->createClassListener($listener, $wildcard);\n }\n\n /**\n * Remove a set of listeners from the dispatcher.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function forget($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forget($event);\n }\n\n /**\n * Forget all of the pushed listeners.\n *\n * @return void\n * @static\n */\n public static function forgetPushed()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forgetPushed();\n }\n\n /**\n * Set the queue resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setQueueResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setQueueResolver($resolver);\n }\n\n /**\n * Set the database transaction manager resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setTransactionManagerResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setTransactionManagerResolver($resolver);\n }\n\n /**\n * Execute the given callback while deferring events, then dispatch all deferred events.\n *\n * @param callable $callback\n * @param array|null $events\n * @return mixed\n * @static\n */\n public static function defer($callback, $events = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->defer($callback, $events);\n }\n\n /**\n * Gets the raw, unprepared listeners.\n *\n * @return array\n * @static\n */\n public static function getRawListeners()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getRawListeners();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Events\\Dispatcher::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Events\\Dispatcher::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Events\\Dispatcher::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Events\\Dispatcher::flushMacros();\n }\n\n /**\n * Specify the events that should be dispatched instead of faked.\n *\n * @param array|string $eventsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n * @static\n */\n public static function except($eventsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->except($eventsToDispatch);\n }\n\n /**\n * Assert if an event has a listener attached to it.\n *\n * @param string $expectedEvent\n * @param string|array $expectedListener\n * @return void\n * @static\n */\n public static function assertListening($expectedEvent, $expectedListener)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertListening($expectedEvent, $expectedListener);\n }\n\n /**\n * Assert if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatched($event, $callback);\n }\n\n /**\n * Assert if an event was dispatched exactly once.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedOnce($event);\n }\n\n /**\n * Assert if an event was dispatched a number of times.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($event, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedTimes($event, $times);\n }\n\n /**\n * Determine if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNotDispatched($event, $callback);\n }\n\n /**\n * Assert that no events were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Get all of the events matching a truth-test callback.\n *\n * @param string $event\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatched($event, $callback);\n }\n\n /**\n * Determine if the given event has been dispatched.\n *\n * @param string $event\n * @return bool\n * @static\n */\n public static function hasDispatched($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->hasDispatched($event);\n }\n\n /**\n * Get the events that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedEvents()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatchedEvents();\n }\n\n }\n /**\n * @see \\Illuminate\\Filesystem\\Filesystem\n */\n class File {\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->missing($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @param bool $lock\n * @return string\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function get($path, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->get($path, $lock);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @param bool $lock\n * @return array\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function json($path, $flags = 0, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->json($path, $flags, $lock);\n }\n\n /**\n * Get contents of a file with shared access.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function sharedGet($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->sharedGet($path);\n }\n\n /**\n * Get the returned value of a file.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function getRequire($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->getRequire($path, $data);\n }\n\n /**\n * Require the given file once.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function requireOnce($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->requireOnce($path, $data);\n }\n\n /**\n * Get the contents of a file one line at a time.\n *\n * @param string $path\n * @return \\Illuminate\\Support\\LazyCollection\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function lines($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lines($path);\n }\n\n /**\n * Get the hash of the file at the given path.\n *\n * @param string $path\n * @param string $algorithm\n * @return string|false\n * @static\n */\n public static function hash($path, $algorithm = 'md5')\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hash($path, $algorithm);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param string $contents\n * @param bool $lock\n * @return int|bool\n * @static\n */\n public static function put($path, $contents, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->put($path, $contents, $lock);\n }\n\n /**\n * Write the contents of a file, replacing it atomically if it already exists.\n *\n * @param string $path\n * @param string $content\n * @param int|null $mode\n * @return void\n * @static\n */\n public static function replace($path, $content, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replace($path, $content, $mode);\n }\n\n /**\n * Replace a given string within a given file.\n *\n * @param array|string $search\n * @param array|string $replace\n * @param string $path\n * @return void\n * @static\n */\n public static function replaceInFile($search, $replace, $path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replaceInFile($search, $replace, $path);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @return int\n * @static\n */\n public static function prepend($path, $data)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->prepend($path, $data);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param bool $lock\n * @return int\n * @static\n */\n public static function append($path, $data, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->append($path, $data, $lock);\n }\n\n /**\n * Get or set UNIX mode of a file or directory.\n *\n * @param string $path\n * @param int|null $mode\n * @return mixed\n * @static\n */\n public static function chmod($path, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->chmod($path, $mode);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function move($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->move($path, $target);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function copy($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copy($path, $target);\n }\n\n /**\n * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file.\n *\n * @param string $target\n * @param string $link\n * @return bool|null\n * @static\n */\n public static function link($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->link($target, $link);\n }\n\n /**\n * Create a relative symlink to the target file or directory.\n *\n * @param string $target\n * @param string $link\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function relativeLink($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->relativeLink($target, $link);\n }\n\n /**\n * Extract the file name from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function name($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->name($path);\n }\n\n /**\n * Extract the trailing name component from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basename($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->basename($path);\n }\n\n /**\n * Extract the parent directory from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function dirname($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->dirname($path);\n }\n\n /**\n * Extract the file extension from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function extension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->extension($path);\n }\n\n /**\n * Guess the file extension from the mime-type of a given file.\n *\n * @param string $path\n * @return string|null\n * @throws \\RuntimeException\n * @static\n */\n public static function guessExtension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->guessExtension($path);\n }\n\n /**\n * Get the file type of a given file.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function type($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->type($path);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Determine if the given path is a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function isDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isDirectory($directory);\n }\n\n /**\n * Determine if the given path is a directory that does not contain any other files or directories.\n *\n * @param string $directory\n * @param bool $ignoreDotFiles\n * @return bool\n * @static\n */\n public static function isEmptyDirectory($directory, $ignoreDotFiles = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isEmptyDirectory($directory, $ignoreDotFiles);\n }\n\n /**\n * Determine if the given path is readable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isReadable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isReadable($path);\n }\n\n /**\n * Determine if the given path is writable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isWritable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isWritable($path);\n }\n\n /**\n * Determine if two files are the same by comparing their hashes.\n *\n * @param string $firstFile\n * @param string $secondFile\n * @return bool\n * @static\n */\n public static function hasSameHash($firstFile, $secondFile)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hasSameHash($firstFile, $secondFile);\n }\n\n /**\n * Determine if the given path is a file.\n *\n * @param string $file\n * @return bool\n * @static\n */\n public static function isFile($file)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isFile($file);\n }\n\n /**\n * Find path names matching a given pattern.\n *\n * @param string $pattern\n * @param int $flags\n * @return array\n * @static\n */\n public static function glob($pattern, $flags = 0)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->glob($pattern, $flags);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function files($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->files($directory, $hidden);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function allFiles($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->allFiles($directory, $hidden);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string $directory\n * @return array\n * @static\n */\n public static function directories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->directories($directory);\n }\n\n /**\n * Ensure a directory exists.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @return void\n * @static\n */\n public static function ensureDirectoryExists($path, $mode = 493, $recursive = true)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->ensureDirectoryExists($path, $mode, $recursive);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @param bool $force\n * @return bool\n * @static\n */\n public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->makeDirectory($path, $mode, $recursive, $force);\n }\n\n /**\n * Move a directory.\n *\n * @param string $from\n * @param string $to\n * @param bool $overwrite\n * @return bool\n * @static\n */\n public static function moveDirectory($from, $to, $overwrite = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->moveDirectory($from, $to, $overwrite);\n }\n\n /**\n * Copy a directory from one location to another.\n *\n * @param string $directory\n * @param string $destination\n * @param int|null $options\n * @return bool\n * @static\n */\n public static function copyDirectory($directory, $destination, $options = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copyDirectory($directory, $destination, $options);\n }\n\n /**\n * Recursively delete a directory.\n * \n * The directory itself may be optionally preserved.\n *\n * @param string $directory\n * @param bool $preserve\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory, $preserve = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectory($directory, $preserve);\n }\n\n /**\n * Remove all of the directories within a given directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectories($directory);\n }\n\n /**\n * Empty the specified directory of all files and folders.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function cleanDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->cleanDirectory($directory);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Filesystem\\Filesystem::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Filesystem\\Filesystem::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Filesystem\\Filesystem::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Filesystem\\Filesystem::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\Access\\Gate\n */\n class Gate {\n /**\n * Determine if a given ability has been defined.\n *\n * @param string|array $ability\n * @return bool\n * @static\n */\n public static function has($ability)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->has($ability);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function allowIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allowIf($condition, $message, $code);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function denyIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyIf($condition, $message, $code);\n }\n\n /**\n * Define a new ability.\n *\n * @param \\UnitEnum|string $ability\n * @param callable|array|string $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function define($ability, $callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->define($ability, $callback);\n }\n\n /**\n * Define abilities for a resource.\n *\n * @param string $name\n * @param string $class\n * @param array|null $abilities\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function resource($name, $class, $abilities = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resource($name, $class, $abilities);\n }\n\n /**\n * Define a policy class for a given class type.\n *\n * @param string $class\n * @param string $policy\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function policy($class, $policy)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policy($class, $policy);\n }\n\n /**\n * Register a callback to run before all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->before($callback);\n }\n\n /**\n * Register a callback to run after all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->after($callback);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function allows($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allows($ability, $arguments);\n }\n\n /**\n * Determine if any of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function denies($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denies($ability, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function check($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->check($abilities, $arguments);\n }\n\n /**\n * Determine if any one of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function any($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->any($abilities, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function none($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->none($abilities, $arguments);\n }\n\n /**\n * Determine if the given ability should be granted for the current user.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function authorize($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->authorize($ability, $arguments);\n }\n\n /**\n * Inspect the user for the given ability.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function inspect($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->inspect($ability, $arguments);\n }\n\n /**\n * Get the raw result from the authorization callback.\n *\n * @param string $ability\n * @param mixed $arguments\n * @return mixed\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function raw($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->raw($ability, $arguments);\n }\n\n /**\n * Get a policy instance for a given class.\n *\n * @param object|string $class\n * @return mixed\n * @static\n */\n public static function getPolicyFor($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->getPolicyFor($class);\n }\n\n /**\n * Specify a callback to be used to guess policy names.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function guessPolicyNamesUsing($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->guessPolicyNamesUsing($callback);\n }\n\n /**\n * Build a policy class instance of the given type.\n *\n * @param object|string $class\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function resolvePolicy($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resolvePolicy($class);\n }\n\n /**\n * Get a gate instance for the given user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable|mixed $user\n * @return static\n * @static\n */\n public static function forUser($user)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->forUser($user);\n }\n\n /**\n * Get all of the defined abilities.\n *\n * @return array\n * @static\n */\n public static function abilities()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->abilities();\n }\n\n /**\n * Get all of the defined policies.\n *\n * @return array\n * @static\n */\n public static function policies()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policies();\n }\n\n /**\n * Set the default denial response for gates and policies.\n *\n * @param \\Illuminate\\Auth\\Access\\Response $response\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function defaultDenialResponse($response)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->defaultDenialResponse($response);\n }\n\n /**\n * Set the container instance used by the gate.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Deny with a HTTP status code.\n *\n * @param int $status\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyWithStatus($status, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyWithStatus($status, $message, $code);\n }\n\n /**\n * Deny with a 404 HTTP status code.\n *\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyAsNotFound($message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyAsNotFound($message, $code);\n }\n\n }\n /**\n * @see \\Illuminate\\Hashing\\HashManager\n * @see \\Illuminate\\Hashing\\AbstractHasher\n */\n class Hash {\n /**\n * Create an instance of the Bcrypt hash Driver.\n *\n * @return \\Illuminate\\Hashing\\BcryptHasher\n * @static\n */\n public static function createBcryptDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createBcryptDriver();\n }\n\n /**\n * Create an instance of the Argon2i hash Driver.\n *\n * @return \\Illuminate\\Hashing\\ArgonHasher\n * @static\n */\n public static function createArgonDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgonDriver();\n }\n\n /**\n * Create an instance of the Argon2id hash Driver.\n *\n * @return \\Illuminate\\Hashing\\Argon2IdHasher\n * @static\n */\n public static function createArgon2idDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgon2idDriver();\n }\n\n /**\n * Get information about the given hashed value.\n *\n * @param string $hashedValue\n * @return array\n * @static\n */\n public static function info($hashedValue)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->info($hashedValue);\n }\n\n /**\n * Hash the given value.\n *\n * @param string $value\n * @param array $options\n * @return string\n * @static\n */\n public static function make($value, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->make($value, $options);\n }\n\n /**\n * Check the given plain value against a hash.\n *\n * @param string $value\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function check($value, $hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->check($value, $hashedValue, $options);\n }\n\n /**\n * Check if the given hash has been hashed using the given options.\n *\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function needsRehash($hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->needsRehash($hashedValue, $options);\n }\n\n /**\n * Determine if a given string is already hashed.\n *\n * @param string $value\n * @return bool\n * @static\n */\n public static function isHashed($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->isHashed($value);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Verifies that the configuration is less than or equal to what is configured.\n *\n * @param array $value\n * @return bool\n * @internal\n * @static\n */\n public static function verifyConfiguration($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->verifyConfiguration($value);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @method static \\Illuminate\\Http\\Client\\PendingRequest baseUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBody(\\Psr\\Http\\Message\\StreamInterface|string $content, string $contentType = 'application/json')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asForm()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest attach(string|array $name, string|resource $contents = '', string|null $filename = null, array $headers = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asMultipart()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest bodyFormat(string $format)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withQueryParameters(array $parameters)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest contentType(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest acceptJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest accept(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeader(string $name, mixed $value)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest replaceHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBasicAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withDigestAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withNtlmAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withToken(string $token, string $type = 'Bearer')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUserAgent(string|bool $userAgent)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUrlParameters(array $parameters = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withCookies(array $cookies, string $domain)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest maxRedirects(int $max)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutRedirecting()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutVerifying()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest sink(string|resource $to)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest timeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest connectTimeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest retry(array|int $times, \\Closure|int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withOptions(array $options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withRequestMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withResponseMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest beforeSending(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throw(callable|null $callback = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwIf(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwUnless(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dump()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dd()\n * @method static \\Illuminate\\Http\\Client\\Response get(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response head(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response post(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response patch(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response put(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response delete(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static array pool(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Batch batch(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Response send(string $method, string $url, array $options = [])\n * @method static \\GuzzleHttp\\Client buildClient()\n * @method static \\GuzzleHttp\\Client createClient(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\GuzzleHttp\\HandlerStack buildHandlerStack()\n * @method static \\GuzzleHttp\\HandlerStack pushHandlers(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\Closure buildBeforeSendingHandler()\n * @method static \\Closure buildRecorderHandler()\n * @method static \\Closure buildStubHandler()\n * @method static \\GuzzleHttp\\Psr7\\RequestInterface runBeforeSendingCallbacks(\\GuzzleHttp\\Psr7\\RequestInterface $request, array $options)\n * @method static array mergeOptions(array ...$options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest stub(callable $callback)\n * @method static bool isAllowedRequestUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest async(bool $async = true)\n * @method static \\GuzzleHttp\\Promise\\PromiseInterface|null getPromise()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest truncateExceptionsAt(int $length)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dontTruncateExceptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setClient(\\GuzzleHttp\\Client $client)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setHandler(callable $handler)\n * @method static array getOptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Http\\Client\\Factory\n */\n class Http {\n /**\n * Add middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalMiddleware($middleware);\n }\n\n /**\n * Add request middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalRequestMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalRequestMiddleware($middleware);\n }\n\n /**\n * Add response middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalResponseMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalResponseMiddleware($middleware);\n }\n\n /**\n * Set the options to apply to every request.\n *\n * @param \\Closure|array $options\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalOptions($options)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalOptions($options);\n }\n\n /**\n * Create a new response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array $headers\n * @return \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::response($body, $status, $headers);\n }\n\n /**\n * Create a new PSR-7 response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\GuzzleHttp\\Psr7\\Response\n * @static\n */\n public static function psr7Response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::psr7Response($body, $status, $headers);\n }\n\n /**\n * Create a new RequestException instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\Illuminate\\Http\\Client\\RequestException\n * @static\n */\n public static function failedRequest($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::failedRequest($body, $status, $headers);\n }\n\n /**\n * Create a new connection exception for use during stubbing.\n *\n * @param string|null $message\n * @return \\Closure(\\Illuminate\\Http\\Client\\Request): \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function failedConnection($message = null)\n {\n return \\Illuminate\\Http\\Client\\Factory::failedConnection($message);\n }\n\n /**\n * Get an invokable object that returns a sequence of responses in order for use during stubbing.\n *\n * @param array $responses\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function sequence($responses = [])\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->sequence($responses);\n }\n\n /**\n * Register a stub callable that will intercept requests and be able to return stub responses.\n *\n * @param callable|array<string, mixed>|null $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Register a response sequence for the given URL pattern.\n *\n * @param string $url\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function fakeSequence($url = '*')\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fakeSequence($url);\n }\n\n /**\n * Stub the given URL using the given callback.\n *\n * @param string $url\n * @param \\Illuminate\\Http\\Client\\Response|\\GuzzleHttp\\Promise\\PromiseInterface|callable|int|string|array|\\Illuminate\\Http\\Client\\ResponseSequence $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function stubUrl($url, $callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->stubUrl($url, $callback);\n }\n\n /**\n * Indicate that an exception should be thrown if any request is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function preventStrayRequests($prevent = true)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventStrayRequests($prevent);\n }\n\n /**\n * Determine if stray requests are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayRequests()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventingStrayRequests();\n }\n\n /**\n * Allow stray, unfaked requests entirely, or optionally allow only specific URLs.\n *\n * @param array<int, string>|null $only\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function allowStrayRequests($only = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->allowStrayRequests($only);\n }\n\n /**\n * Begin recording request / response pairs.\n *\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function record()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->record();\n }\n\n /**\n * Record a request response pair.\n *\n * @param \\Illuminate\\Http\\Client\\Request $request\n * @param \\Illuminate\\Http\\Client\\Response|null $response\n * @return void\n * @static\n */\n public static function recordRequestResponsePair($request, $response)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->recordRequestResponsePair($request, $response);\n }\n\n /**\n * Assert that a request / response pair was recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSent($callback);\n }\n\n /**\n * Assert that the given request was sent in the given order.\n *\n * @param list<string|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable> $callbacks\n * @return void\n * @static\n */\n public static function assertSentInOrder($callbacks)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentInOrder($callbacks);\n }\n\n /**\n * Assert that a request / response pair was not recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertNotSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNotSent($callback);\n }\n\n /**\n * Assert that no request / response pair was recorded.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert how many requests have been recorded.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert that every created response sequence is empty.\n *\n * @return void\n * @static\n */\n public static function assertSequencesAreEmpty()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSequencesAreEmpty();\n }\n\n /**\n * Get a collection of the request / response pairs matching the given truth test.\n *\n * @param (\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable $callback\n * @return \\Illuminate\\Support\\Collection<int, array{0: \\Illuminate\\Http\\Client\\Request, 1: \\Illuminate\\Http\\Client\\Response|null}>\n * @static\n */\n public static function recorded($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->recorded($callback);\n }\n\n /**\n * Create a new pending request instance for this factory.\n *\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function createPendingRequest()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->createPendingRequest();\n }\n\n /**\n * Get the current event dispatcher implementation.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Get the array of global middleware.\n *\n * @return array\n * @static\n */\n public static function getGlobalMiddleware()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getGlobalMiddleware();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Client\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Client\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Client\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Client\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n /**\n * @see \\Illuminate\\Translation\\Translator\n */\n class Lang {\n /**\n * Determine if a translation exists for a given locale.\n *\n * @param string $key\n * @param string|null $locale\n * @return bool\n * @static\n */\n public static function hasForLocale($key, $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->hasForLocale($key, $locale);\n }\n\n /**\n * Determine if a translation exists.\n *\n * @param string $key\n * @param string|null $locale\n * @param bool $fallback\n * @return bool\n * @static\n */\n public static function has($key, $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->has($key, $locale, $fallback);\n }\n\n /**\n * Get the translation for the given key.\n *\n * @param string $key\n * @param array $replace\n * @param string|null $locale\n * @param bool $fallback\n * @return string|array\n * @static\n */\n public static function get($key, $replace = [], $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->get($key, $replace, $locale, $fallback);\n }\n\n /**\n * Get a translation according to an integer value.\n *\n * @param string $key\n * @param \\Countable|int|float|array $number\n * @param array $replace\n * @param string|null $locale\n * @return string\n * @static\n */\n public static function choice($key, $number, $replace = [], $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->choice($key, $number, $replace, $locale);\n }\n\n /**\n * Add translation lines to the given locale.\n *\n * @param array $lines\n * @param string $locale\n * @param string $namespace\n * @return void\n * @static\n */\n public static function addLines($lines, $locale, $namespace = '*')\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addLines($lines, $locale, $namespace);\n }\n\n /**\n * Load the specified language group.\n *\n * @param string $namespace\n * @param string $group\n * @param string $locale\n * @return void\n * @static\n */\n public static function load($namespace, $group, $locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->load($namespace, $group, $locale);\n }\n\n /**\n * Register a callback that is responsible for handling missing translation keys.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleMissingKeysUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->handleMissingKeysUsing($callback);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string $hint\n * @return void\n * @static\n */\n public static function addNamespace($namespace, $hint)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addNamespace($namespace, $hint);\n }\n\n /**\n * Add a new path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addPath($path);\n }\n\n /**\n * Add a new JSON path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addJsonPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addJsonPath($path);\n }\n\n /**\n * Parse a key into namespace, group, and item.\n *\n * @param string $key\n * @return array\n * @static\n */\n public static function parseKey($key)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->parseKey($key);\n }\n\n /**\n * Specify a callback that should be invoked to determined the applicable locale array.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function determineLocalesUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->determineLocalesUsing($callback);\n }\n\n /**\n * Get the message selector instance.\n *\n * @return \\Illuminate\\Translation\\MessageSelector\n * @static\n */\n public static function getSelector()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getSelector();\n }\n\n /**\n * Set the message selector instance.\n *\n * @param \\Illuminate\\Translation\\MessageSelector $selector\n * @return void\n * @static\n */\n public static function setSelector($selector)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setSelector($selector);\n }\n\n /**\n * Get the language line loader implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Loader\n * @static\n */\n public static function getLoader()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLoader();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function locale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->locale();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLocale();\n }\n\n /**\n * Set the default locale.\n *\n * @param string $locale\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Get the fallback locale being used.\n *\n * @return string\n * @static\n */\n public static function getFallback()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getFallback();\n }\n\n /**\n * Set the fallback locale being used.\n *\n * @param string $fallback\n * @return void\n * @static\n */\n public static function setFallback($fallback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setFallback($fallback);\n }\n\n /**\n * Set the loaded translation groups.\n *\n * @param array $loaded\n * @return void\n * @static\n */\n public static function setLoaded($loaded)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLoaded($loaded);\n }\n\n /**\n * Add a handler to be executed in order to format a given class to a string during translation replacements.\n *\n * @param callable|string $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Set the parsed value of a key.\n *\n * @param string $key\n * @param array $parsed\n * @return void\n * @static\n */\n public static function setParsedKey($key, $parsed)\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setParsedKey($key, $parsed);\n }\n\n /**\n * Flush the cache of parsed keys.\n *\n * @return void\n * @static\n */\n public static function flushParsedKeys()\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->flushParsedKeys();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Translation\\Translator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Translation\\Translator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Translation\\Translator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Translation\\Translator::flushMacros();\n }\n\n }\n /**\n * @method static void write(string $level, \\Illuminate\\Contracts\\Support\\Arrayable|\\Illuminate\\Contracts\\Support\\Jsonable|\\Illuminate\\Support\\Stringable|array|string $message, array $context = [])\n * @method static \\Illuminate\\Log\\Logger withContext(array $context = [])\n * @method static void listen(\\Closure $callback)\n * @method static \\Psr\\Log\\LoggerInterface getLogger()\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $dispatcher)\n * @method static \\Illuminate\\Log\\Logger|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Log\\Logger|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Log\\LogManager\n */\n class Log {\n /**\n * Build an on-demand log channel.\n *\n * @param array $config\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new, on-demand aggregate logger instance.\n *\n * @param array $channels\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function stack($channels, $channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->stack($channels, $channel);\n }\n\n /**\n * Get a log channel instance.\n *\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function channel($channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->channel($channel);\n }\n\n /**\n * Get a log driver instance.\n *\n * @param string|null $driver\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Share context across channels and stacks.\n *\n * @param array $context\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function shareContext($context)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->shareContext($context);\n }\n\n /**\n * The context shared across channels and stacks.\n *\n * @return array\n * @static\n */\n public static function sharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->sharedContext();\n }\n\n /**\n * Flush the log context on all currently resolved channels.\n *\n * @param string[]|null $keys\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function withoutContext($keys = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->withoutContext($keys);\n }\n\n /**\n * Flush the shared context.\n *\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function flushSharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->flushSharedContext();\n }\n\n /**\n * Get the default log driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default log driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Unset the given channel instance.\n *\n * @param string|null $driver\n * @return void\n * @static\n */\n public static function forgetChannel($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->forgetChannel($driver);\n }\n\n /**\n * Get all of the resolved log channels.\n *\n * @return array\n * @static\n */\n public static function getChannels()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getChannels();\n }\n\n /**\n * System is unusable.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function emergency($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->emergency($message, $context);\n }\n\n /**\n * Action must be taken immediately.\n * \n * Example: Entire website down, database unavailable, etc. This should\n * trigger the SMS alerts and wake you up.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function alert($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->alert($message, $context);\n }\n\n /**\n * Critical conditions.\n * \n * Example: Application component unavailable, unexpected exception.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function critical($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->critical($message, $context);\n }\n\n /**\n * Runtime errors that do not require immediate action but should typically\n * be logged and monitored.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function error($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->error($message, $context);\n }\n\n /**\n * Exceptional occurrences that are not errors.\n * \n * Example: Use of deprecated APIs, poor use of an API, undesirable things\n * that are not necessarily wrong.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function warning($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->warning($message, $context);\n }\n\n /**\n * Normal but significant events.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function notice($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->notice($message, $context);\n }\n\n /**\n * Interesting events.\n * \n * Example: User logs in, SQL logs.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function info($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->info($message, $context);\n }\n\n /**\n * Detailed debug information.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function debug($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->debug($message, $context);\n }\n\n /**\n * Logs with an arbitrary level.\n *\n * @param mixed $level\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function log($level, $message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->log($level, $message, $context);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @method static void alwaysFrom(string $address, string|null $name = null)\n * @method static void alwaysReplyTo(string $address, string|null $name = null)\n * @method static void alwaysReturnPath(string $address)\n * @method static void alwaysTo(string $address, string|null $name = null)\n * @method static \\Illuminate\\Mail\\SentMessage|null html(string $html, mixed $callback)\n * @method static \\Illuminate\\Mail\\SentMessage|null plain(string $view, array $data, mixed $callback)\n * @method static string render(string|array $view, array $data = [])\n * @method static mixed onQueue(\\BackedEnum|string|null $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed queueOn(string $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed laterOn(string $queue, \\DateTimeInterface|\\DateInterval|int $delay, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static \\Symfony\\Component\\Mailer\\Transport\\TransportInterface getSymfonyTransport()\n * @method static \\Illuminate\\Contracts\\View\\Factory getViewFactory()\n * @method static void setSymfonyTransport(\\Symfony\\Component\\Mailer\\Transport\\TransportInterface $transport)\n * @method static \\Illuminate\\Mail\\Mailer setQueue(\\Illuminate\\Contracts\\Queue\\Factory $queue)\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @see \\Illuminate\\Mail\\MailManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\MailFake\n */\n class Mail {\n /**\n * Get a mailer instance by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Mail\\Mailer\n * @static\n */\n public static function mailer($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->mailer($name);\n }\n\n /**\n * Get a mailer driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Build a new mailer instance.\n *\n * @param array $config\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new transport instance.\n *\n * @param array $config\n * @return \\Symfony\\Component\\Mailer\\Transport\\TransportInterface\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createSymfonyTransport($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->createSymfonyTransport($config);\n }\n\n /**\n * Get the default mail driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default mail driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given mailer and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom transport creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved mailer instances.\n *\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function forgetMailers()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->forgetMailers();\n }\n\n /**\n * Assert if a mailable was sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSent($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent or queued to be sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotOutgoing($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotOutgoing($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotSent($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were sent or queued to be sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingOutgoing()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingOutgoing();\n }\n\n /**\n * Assert that no mailables were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert if a mailable was queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueued($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotQueued($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were queued.\n *\n * @return void\n * @static\n */\n public static function assertNothingQueued()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingQueued();\n }\n\n /**\n * Assert the total number of mailables that were sent.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert the total number of mailables that were queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertQueuedCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueuedCount($count);\n }\n\n /**\n * Assert the total number of mailables that were sent or queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertOutgoingCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertOutgoingCount($count);\n }\n\n /**\n * Get all of the mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->sent($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been sent.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasSent($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasSent($mailable);\n }\n\n /**\n * Get all of the queued mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function queued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queued($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been queued.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasQueued($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasQueued($mailable);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function to($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->to($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function cc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->cc($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function bcc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->bcc($users);\n }\n\n /**\n * Send a new message with only a raw text part.\n *\n * @param string $text\n * @param \\Closure|string $callback\n * @return void\n * @static\n */\n public static function raw($text, $callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->raw($text, $callback);\n }\n\n /**\n * Send a new message using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return mixed|void\n * @static\n */\n public static function send($view, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->send($view, $data, $callback);\n }\n\n /**\n * Send a new message synchronously using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $mailable\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return void\n * @static\n */\n public static function sendNow($mailable, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->sendNow($mailable, $data, $callback);\n }\n\n /**\n * Queue a new message for sending.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function queue($view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queue($view, $queue);\n }\n\n /**\n * Queue a new e-mail message for sending after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->later($delay, $view, $queue);\n }\n\n }\n /**\n * @see \\Illuminate\\Notifications\\ChannelManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n */\n class Notification {\n /**\n * Send the given notification to the given notifiable entities.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @return void\n * @static\n */\n public static function send($notifiables, $notification)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->send($notifiables, $notification);\n }\n\n /**\n * Send the given notification immediately.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @param array|null $channels\n * @return void\n * @static\n */\n public static function sendNow($notifiables, $notification, $channels = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->sendNow($notifiables, $notification, $channels);\n }\n\n /**\n * Get a channel instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function channel($name = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->channel($name);\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function deliversVia()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->deliversVia();\n }\n\n /**\n * Set the default channel driver name.\n *\n * @param string $channel\n * @return void\n * @static\n */\n public static function deliverVia($channel)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->deliverVia($channel);\n }\n\n /**\n * Set the locale of notifications.\n *\n * @param string $locale\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function locale($locale)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->locale($locale);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Assert if a notification was sent on-demand based on a truth-test callback.\n *\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentOnDemand($notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemand($notification, $callback);\n }\n\n /**\n * Assert if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert if a notification was sent on-demand a number of times.\n *\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentOnDemandTimes($notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemandTimes($notification, $times);\n }\n\n /**\n * Assert if a notification was sent a number of times.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentToTimes($notifiable, $notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentToTimes($notifiable, $notification, $times);\n }\n\n /**\n * Determine if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNotSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNotSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert that no notifications were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert that no notifications were sent to the given notifiable.\n *\n * @param mixed $notifiable\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNothingSentTo($notifiable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSentTo($notifiable);\n }\n\n /**\n * Assert the total amount of times a notification was sent.\n *\n * @param string $notification\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertSentTimes($notification, $expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTimes($notification, $expectedCount);\n }\n\n /**\n * Assert the total count of notification that were sent.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Get all of the notifications matching a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sent($notifiable, $notification, $callback);\n }\n\n /**\n * Determine if there are more notifications left to inspect.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @return bool\n * @static\n */\n public static function hasSent($notifiable, $notification)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->hasSent($notifiable, $notification);\n }\n\n /**\n * Specify if notification should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the notifications that have been sent.\n *\n * @return array\n * @static\n */\n public static function sentNotifications()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sentNotifications();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::flushMacros();\n }\n\n }\n /**\n * @method static string sendResetLink(array $credentials, \\Closure|null $callback = null)\n * @method static mixed reset(array $credentials, \\Closure $callback)\n * @method static \\Illuminate\\Contracts\\Auth\\CanResetPassword|null getUser(array $credentials)\n * @method static string createToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static void deleteToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static bool tokenExists(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user, string $token)\n * @method static \\Illuminate\\Auth\\Passwords\\TokenRepositoryInterface getRepository()\n * @method static \\Illuminate\\Support\\Timebox getTimebox()\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBroker\n */\n class Password {\n /**\n * Attempt to get the broker from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\PasswordBroker\n * @static\n */\n public static function broker($name = null)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->broker($name);\n }\n\n /**\n * Get the default password broker name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default password broker name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n }\n /**\n * @method static \\Illuminate\\Process\\PendingProcess command(array|string $command)\n * @method static \\Illuminate\\Process\\PendingProcess path(string $path)\n * @method static \\Illuminate\\Process\\PendingProcess timeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess idleTimeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess forever()\n * @method static \\Illuminate\\Process\\PendingProcess env(array $environment)\n * @method static \\Illuminate\\Process\\PendingProcess input(\\Traversable|resource|string|int|float|bool|null $input)\n * @method static \\Illuminate\\Process\\PendingProcess quietly()\n * @method static \\Illuminate\\Process\\PendingProcess tty(bool $tty = true)\n * @method static \\Illuminate\\Process\\PendingProcess options(array $options)\n * @method static \\Illuminate\\Contracts\\Process\\ProcessResult run(array|string|null $command = null, callable|null $output = null)\n * @method static \\Illuminate\\Process\\InvokedProcess start(array|string|null $command = null, callable|null $output = null)\n * @method static bool supportsTty()\n * @method static \\Illuminate\\Process\\PendingProcess withFakeHandlers(array $fakeHandlers)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Process\\PendingProcess\n * @see \\Illuminate\\Process\\Factory\n */\n class Process {\n /**\n * Create a new fake process response for testing purposes.\n *\n * @param array|string $output\n * @param array|string $errorOutput\n * @param int $exitCode\n * @return \\Illuminate\\Process\\FakeProcessResult\n * @static\n */\n public static function result($output = '', $errorOutput = '', $exitCode = 0)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->result($output, $errorOutput, $exitCode);\n }\n\n /**\n * Begin describing a fake process lifecycle.\n *\n * @return \\Illuminate\\Process\\FakeProcessDescription\n * @static\n */\n public static function describe()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->describe();\n }\n\n /**\n * Begin describing a fake process sequence.\n *\n * @param array $processes\n * @return \\Illuminate\\Process\\FakeProcessSequence\n * @static\n */\n public static function sequence($processes = [])\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->sequence($processes);\n }\n\n /**\n * Indicate that the process factory should fake processes.\n *\n * @param \\Closure|array|null $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Determine if the process factory has fake process handlers and is recording processes.\n *\n * @return bool\n * @static\n */\n public static function isRecording()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->isRecording();\n }\n\n /**\n * Record the given process if processes should be recorded.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function recordIfRecording($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->recordIfRecording($process, $result);\n }\n\n /**\n * Record the given process.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function record($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->record($process, $result);\n }\n\n /**\n * Indicate that an exception should be thrown if any process is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function preventStrayProcesses($prevent = true)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventStrayProcesses($prevent);\n }\n\n /**\n * Determine if stray processes are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayProcesses()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventingStrayProcesses();\n }\n\n /**\n * Assert that a process was recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRan($callback);\n }\n\n /**\n * Assert that a process was recorded a given number of times matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @param int $times\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRanTimes($callback, $times = 1)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRanTimes($callback, $times);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNotRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNotRan($callback);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertDidntRun($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertDidntRun($callback);\n }\n\n /**\n * Assert that no processes were recorded.\n *\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNothingRan()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNothingRan();\n }\n\n /**\n * Start defining a pool of processes.\n *\n * @param callable $callback\n * @return \\Illuminate\\Process\\Pool\n * @static\n */\n public static function pool($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pool($callback);\n }\n\n /**\n * Start defining a series of piped processes.\n *\n * @param callable|array $callback\n * @return \\Illuminate\\Contracts\\Process\\ProcessResult\n * @static\n */\n public static function pipe($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pipe($callback, $output);\n }\n\n /**\n * Run a pool of processes and wait for them to finish executing.\n *\n * @param callable $callback\n * @param callable|null $output\n * @return \\Illuminate\\Process\\ProcessPoolResults\n * @static\n */\n public static function concurrently($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->concurrently($callback, $output);\n }\n\n /**\n * Create a new pending process associated with this factory.\n *\n * @return \\Illuminate\\Process\\PendingProcess\n * @static\n */\n public static function newPendingProcess()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->newPendingProcess();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Process\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Process\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Process\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Process\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Queue\\QueueManager\n * @see \\Illuminate\\Queue\\Queue\n * @see \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n */\n class Queue {\n /**\n * Register an event listener for the before job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->before($callback);\n }\n\n /**\n * Register an event listener for the after job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->after($callback);\n }\n\n /**\n * Register an event listener for the exception occurred job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function exceptionOccurred($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->exceptionOccurred($callback);\n }\n\n /**\n * Register an event listener for the daemon queue loop.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function looping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->looping($callback);\n }\n\n /**\n * Register an event listener for the failed job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function failing($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->failing($callback);\n }\n\n /**\n * Register an event listener for the daemon queue starting.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function starting($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->starting($callback);\n }\n\n /**\n * Register an event listener for the daemon queue stopping.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function stopping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->stopping($callback);\n }\n\n /**\n * Determine if the driver is connected.\n *\n * @param string|null $name\n * @return bool\n * @static\n */\n public static function connected($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connected($name);\n }\n\n /**\n * Resolve a queue connection instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Queue\\Queue\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function extend($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->extend($driver, $resolver);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function addConnector($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->addConnector($driver, $resolver);\n }\n\n /**\n * Get the name of the default queue connection.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the name of the default queue connection.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get the full name for the given connection.\n *\n * @param string|null $connection\n * @return string\n * @static\n */\n public static function getName($connection = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getName($connection);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Queue\\QueueManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Specify the jobs that should be queued instead of faked.\n *\n * @param array|string $jobsToBeQueued\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function except($jobsToBeQueued)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->except($jobsToBeQueued);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushed($job, $callback);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string $queue\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedOn($queue, $job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedOn($queue, $job, $callback);\n }\n\n /**\n * Assert if a job was pushed with chained jobs based on a truth-test callback.\n *\n * @param string $job\n * @param array $expectedChain\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithChain($job, $expectedChain = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithChain($job, $expectedChain, $callback);\n }\n\n /**\n * Assert if a job was pushed with an empty chain based on a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithoutChain($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithoutChain($job, $callback);\n }\n\n /**\n * Assert if a closure was pushed based on a truth-test callback.\n *\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertClosurePushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosurePushed($callback);\n }\n\n /**\n * Assert that a closure was not pushed based on a truth-test callback.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertClosureNotPushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosureNotPushed($callback);\n }\n\n /**\n * Determine if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNotPushed($job, $callback);\n }\n\n /**\n * Assert the total count of jobs that were pushed.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Assert that no jobs were pushed.\n *\n * @return void\n * @static\n */\n public static function assertNothingPushed()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNothingPushed();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function pushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushed($job, $callback);\n }\n\n /**\n * Get all of the raw pushes matching a truth-test callback.\n *\n * @param null|\\Closure(string, ?string, array): bool $callback\n * @return \\Illuminate\\Support\\Collection<int, RawPushType>\n * @static\n */\n public static function pushedRaw($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedRaw($callback);\n }\n\n /**\n * Get all of the jobs by listener class, passing an optional truth-test callback.\n *\n * @param class-string $listenerClass\n * @param (\\Closure(mixed, \\Illuminate\\Events\\CallQueuedListener, string|null, mixed): bool)|null $callback\n * @return \\Illuminate\\Support\\Collection<int, \\Illuminate\\Events\\CallQueuedListener>\n * @static\n */\n public static function listenersPushed($listenerClass, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->listenersPushed($listenerClass, $callback);\n }\n\n /**\n * Determine if there are any stored jobs for a given class.\n *\n * @param string $job\n * @return bool\n * @static\n */\n public static function hasPushed($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->hasPushed($job);\n }\n\n /**\n * Get the size of the queue.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function size($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->size($queue);\n }\n\n /**\n * Get the number of pending jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function pendingSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pendingSize($queue);\n }\n\n /**\n * Get the number of delayed jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function delayedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->delayedSize($queue);\n }\n\n /**\n * Get the number of reserved jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function reservedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->reservedSize($queue);\n }\n\n /**\n * Get the creation timestamp of the oldest pending job, excluding delayed jobs.\n *\n * @param string|null $queue\n * @return int|null\n * @static\n */\n public static function creationTimeOfOldestPendingJob($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->creationTimeOfOldestPendingJob($queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function push($job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->push($job, $data, $queue);\n }\n\n /**\n * Determine if a job should be faked or actually dispatched.\n *\n * @param object $job\n * @return bool\n * @static\n */\n public static function shouldFakeJob($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->shouldFakeJob($job);\n }\n\n /**\n * Push a raw payload onto the queue.\n *\n * @param string $payload\n * @param string|null $queue\n * @param array $options\n * @return mixed\n * @static\n */\n public static function pushRaw($payload, $queue = null, $options = [])\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushRaw($payload, $queue, $options);\n }\n\n /**\n * Push a new job onto the queue after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->later($delay, $job, $data, $queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string $queue\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function pushOn($queue, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushOn($queue, $job, $data);\n }\n\n /**\n * Push a new job onto a specific queue after (n) seconds.\n *\n * @param string $queue\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function laterOn($queue, $delay, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->laterOn($queue, $delay, $job, $data);\n }\n\n /**\n * Pop the next job off of the queue.\n *\n * @param string|null $queue\n * @return \\Illuminate\\Contracts\\Queue\\Job|null\n * @static\n */\n public static function pop($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pop($queue);\n }\n\n /**\n * Push an array of jobs onto the queue.\n *\n * @param array $jobs\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function bulk($jobs, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->bulk($jobs, $data, $queue);\n }\n\n /**\n * Get the jobs that have been pushed.\n *\n * @return array\n * @static\n */\n public static function pushedJobs()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedJobs();\n }\n\n /**\n * Get the payloads that were pushed raw.\n *\n * @return list<RawPushType>\n * @static\n */\n public static function rawPushes()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->rawPushes();\n }\n\n /**\n * Specify if jobs should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the connection name for the queue.\n *\n * @return string\n * @static\n */\n public static function getConnectionName()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->getConnectionName();\n }\n\n /**\n * Set the connection name for the queue.\n *\n * @param string $name\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function setConnectionName($name)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->setConnectionName($name);\n }\n\n /**\n * Migrate the delayed jobs that are ready to the regular queue.\n *\n * @param string $from\n * @param string $to\n * @return array\n * @static\n */\n public static function migrateExpiredJobs($from, $to)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->migrateExpiredJobs($from, $to);\n }\n\n /**\n * Delete a reserved job from the queue.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @return void\n * @static\n */\n public static function deleteReserved($queue, $job)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteReserved($queue, $job);\n }\n\n /**\n * Delete a reserved job from the reserved queue and release it.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @param int $delay\n * @return void\n * @static\n */\n public static function deleteAndRelease($queue, $job, $delay)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteAndRelease($queue, $job, $delay);\n }\n\n /**\n * Delete all of the jobs from the queue.\n *\n * @param string $queue\n * @return int\n * @static\n */\n public static function clear($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->clear($queue);\n }\n\n /**\n * Get the queue or return the default.\n *\n * @param string|null $queue\n * @return string\n * @static\n */\n public static function getQueue($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getQueue($queue);\n }\n\n /**\n * Get the connection for the queue.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function getConnection()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getConnection();\n }\n\n /**\n * Get the underlying Redis instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the maximum number of attempts for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobTries($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobTries($job);\n }\n\n /**\n * Get the backoff for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobBackoff($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobBackoff($job);\n }\n\n /**\n * Get the expiration timestamp for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobExpiration($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobExpiration($job);\n }\n\n /**\n * Register a callback to be executed when creating job payloads.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function createPayloadUsing($callback)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n \\Illuminate\\Queue\\RedisQueue::createPayloadUsing($callback);\n }\n\n /**\n * Get the container instance being used by the connection.\n *\n * @return \\Illuminate\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\RateLimiter\n */\n class RateLimiter {\n /**\n * Register a named limiter configuration.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Cache\\RateLimiter\n * @static\n */\n public static function for($name, $callback)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->for($name, $callback);\n }\n\n /**\n * Get the given named rate limiter.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @return \\Closure|null\n * @static\n */\n public static function limiter($name)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->limiter($name);\n }\n\n /**\n * Attempts to execute a callback if it's not limited.\n *\n * @param string $key\n * @param int $maxAttempts\n * @param \\Closure $callback\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return mixed\n * @static\n */\n public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds);\n }\n\n /**\n * Determine if the given key has been \"accessed\" too many times.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return bool\n * @static\n */\n public static function tooManyAttempts($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->tooManyAttempts($key, $maxAttempts);\n }\n\n /**\n * Increment (by 1) the counter for a given key for a given decay time.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return int\n * @static\n */\n public static function hit($key, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->hit($key, $decaySeconds);\n }\n\n /**\n * Increment the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function increment($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->increment($key, $decaySeconds, $amount);\n }\n\n /**\n * Decrement the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->decrement($key, $decaySeconds, $amount);\n }\n\n /**\n * Get the number of attempts for the given key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function attempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempts($key);\n }\n\n /**\n * Reset the number of attempts for the given key.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function resetAttempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->resetAttempts($key);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function remaining($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->remaining($key, $maxAttempts);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function retriesLeft($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->retriesLeft($key, $maxAttempts);\n }\n\n /**\n * Clear the hits and lockout timer for the given key.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function clear($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n $instance->clear($key);\n }\n\n /**\n * Get the number of seconds until the \"key\" is accessible again.\n *\n * @param string $key\n * @return int\n * @static\n */\n public static function availableIn($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->availableIn($key);\n }\n\n /**\n * Clean the rate limiter key from unicode characters.\n *\n * @param string $key\n * @return string\n * @static\n */\n public static function cleanRateLimiterKey($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->cleanRateLimiterKey($key);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\Redirector\n */\n class Redirect {\n /**\n * Create a new redirect response to the previous location.\n *\n * @param int $status\n * @param array $headers\n * @param mixed $fallback\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function back($status = 302, $headers = [], $fallback = false)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->back($status, $headers, $fallback);\n }\n\n /**\n * Create a new redirect response to the current URI.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function refresh($status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->refresh($status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function guest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->guest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param mixed $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function intended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->intended($default, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function to($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->to($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to an external URL (no validation).\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function away($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->away($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to the given HTTPS path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function secure($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->secure($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function route($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->route($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->signedRoute($route, $parameters, $expiration, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function action($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->action($action, $parameters, $status, $headers);\n }\n\n /**\n * Get the URL generator instance.\n *\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function getUrlGenerator()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getUrlGenerator();\n }\n\n /**\n * Set the active session store.\n *\n * @param \\Illuminate\\Session\\Store $session\n * @return void\n * @static\n */\n public static function setSession($session)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n $instance->setSession($session);\n }\n\n /**\n * Get the \"intended\" URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function getIntendedUrl()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getIntendedUrl();\n }\n\n /**\n * Set the \"intended\" URL in the session.\n *\n * @param string $url\n * @return \\Illuminate\\Routing\\Redirector\n * @static\n */\n public static function setIntendedUrl($url)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->setIntendedUrl($url);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Redirector::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Redirector::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Redirector::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Redirector::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Http\\Request\n */\n class Request {\n /**\n * Create a new Illuminate HTTP request from server variables.\n *\n * @return static\n * @static\n */\n public static function capture()\n {\n return \\Illuminate\\Http\\Request::capture();\n }\n\n /**\n * Return the Request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function instance()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->instance();\n }\n\n /**\n * Get the request method.\n *\n * @return string\n * @static\n */\n public static function method()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->method();\n }\n\n /**\n * Get a URI instance for the request.\n *\n * @return \\Illuminate\\Support\\Uri\n * @static\n */\n public static function uri()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->uri();\n }\n\n /**\n * Get the root URL for the application.\n *\n * @return string\n * @static\n */\n public static function root()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->root();\n }\n\n /**\n * Get the URL (no query string) for the request.\n *\n * @return string\n * @static\n */\n public static function url()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->url();\n }\n\n /**\n * Get the full URL for the request.\n *\n * @return string\n * @static\n */\n public static function fullUrl()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrl();\n }\n\n /**\n * Get the full URL for the request with the added query string parameters.\n *\n * @param array $query\n * @return string\n * @static\n */\n public static function fullUrlWithQuery($query)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithQuery($query);\n }\n\n /**\n * Get the full URL for the request without the given query string parameters.\n *\n * @param array|string $keys\n * @return string\n * @static\n */\n public static function fullUrlWithoutQuery($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithoutQuery($keys);\n }\n\n /**\n * Get the current path info for the request.\n *\n * @return string\n * @static\n */\n public static function path()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->path();\n }\n\n /**\n * Get the current decoded path info for the request.\n *\n * @return string\n * @static\n */\n public static function decodedPath()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->decodedPath();\n }\n\n /**\n * Get a segment from the URI (1 based index).\n *\n * @param int $index\n * @param string|null $default\n * @return string|null\n * @static\n */\n public static function segment($index, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segment($index, $default);\n }\n\n /**\n * Get all of the segments for the request path.\n *\n * @return array\n * @static\n */\n public static function segments()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segments();\n }\n\n /**\n * Determine if the current request URI matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the route name matches a given pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function routeIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->routeIs(...$patterns);\n }\n\n /**\n * Determine if the current request URL and query string match a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function fullUrlIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlIs(...$patterns);\n }\n\n /**\n * Get the host name.\n *\n * @return string\n * @static\n */\n public static function host()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->host();\n }\n\n /**\n * Get the HTTP host being requested.\n *\n * @return string\n * @static\n */\n public static function httpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->httpHost();\n }\n\n /**\n * Get the scheme and HTTP host.\n *\n * @return string\n * @static\n */\n public static function schemeAndHttpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->schemeAndHttpHost();\n }\n\n /**\n * Determine if the request is the result of an AJAX call.\n *\n * @return bool\n * @static\n */\n public static function ajax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ajax();\n }\n\n /**\n * Determine if the request is the result of a PJAX call.\n *\n * @return bool\n * @static\n */\n public static function pjax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->pjax();\n }\n\n /**\n * Determine if the request is the result of a prefetch call.\n *\n * @return bool\n * @static\n */\n public static function prefetch()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefetch();\n }\n\n /**\n * Determine if the request is over HTTPS.\n *\n * @return bool\n * @static\n */\n public static function secure()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->secure();\n }\n\n /**\n * Get the client IP address.\n *\n * @return string|null\n * @static\n */\n public static function ip()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ip();\n }\n\n /**\n * Get the client IP addresses.\n *\n * @return array\n * @static\n */\n public static function ips()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ips();\n }\n\n /**\n * Get the client user agent.\n *\n * @return string|null\n * @static\n */\n public static function userAgent()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->userAgent();\n }\n\n /**\n * Merge new input into the current request's input array.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function merge($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->merge($input);\n }\n\n /**\n * Merge new input into the request's input, but only when that key is missing from the request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function mergeIfMissing($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->mergeIfMissing($input);\n }\n\n /**\n * Replace the input values for the current request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function replace($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->replace($input);\n }\n\n /**\n * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel.\n * \n * Instead, you may use the \"input\" method.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the JSON payload for the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? \\Symfony\\Component\\HttpFoundation\\InputBag : mixed)\n * @static\n */\n public static function json($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->json($key, $default);\n }\n\n /**\n * Create a new request instance from the given Laravel request.\n *\n * @param \\Illuminate\\Http\\Request $from\n * @param \\Illuminate\\Http\\Request|null $to\n * @return static\n * @static\n */\n public static function createFrom($from, $to = null)\n {\n return \\Illuminate\\Http\\Request::createFrom($from, $to);\n }\n\n /**\n * Create an Illuminate request from a Symfony instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return static\n * @static\n */\n public static function createFromBase($request)\n {\n return \\Illuminate\\Http\\Request::createFromBase($request);\n }\n\n /**\n * Clones a request and overrides some of its parameters.\n *\n * @return static\n * @param array|null $query The GET parameters\n * @param array|null $request The POST parameters\n * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array|null $cookies The COOKIE parameters\n * @param array|null $files The FILES parameters\n * @param array|null $server The SERVER parameters\n * @static\n */\n public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server);\n }\n\n /**\n * Whether the request contains a Session object.\n * \n * This method does not give any information about the state of the session object,\n * like whether the session is started or not. It is just a way to check if this Request\n * is associated with a Session instance.\n *\n * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory`\n * @static\n */\n public static function hasSession($skipIfUninitialized = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasSession($skipIfUninitialized);\n }\n\n /**\n * Gets the Session.\n *\n * @throws SessionNotFoundException When session is not set properly\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSession();\n }\n\n /**\n * Get the session associated with the request.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @throws \\RuntimeException\n * @static\n */\n public static function session()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->session();\n }\n\n /**\n * Set the session instance on the request.\n *\n * @param \\Illuminate\\Contracts\\Session\\Session $session\n * @return void\n * @static\n */\n public static function setLaravelSession($session)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setLaravelSession($session);\n }\n\n /**\n * Set the locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setRequestLocale($locale);\n }\n\n /**\n * Set the default locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setDefaultRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setDefaultRequestLocale($locale);\n }\n\n /**\n * Get the user making the request.\n *\n * @param string|null $guard\n * @return mixed\n * @static\n */\n public static function user($guard = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->user($guard);\n }\n\n /**\n * Get the route handling the request.\n *\n * @param string|null $param\n * @param mixed $default\n * @return ($param is null ? \\Illuminate\\Routing\\Route : object|string|null)\n * @static\n */\n public static function route($param = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->route($param, $default);\n }\n\n /**\n * Get a unique fingerprint for the request / route / IP address.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function fingerprint()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fingerprint();\n }\n\n /**\n * Set the JSON payload for the request.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\InputBag $json\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setJson($json)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setJson($json);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getUserResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserResolver();\n }\n\n /**\n * Set the user resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setUserResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setUserResolver($callback);\n }\n\n /**\n * Get the route resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getRouteResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRouteResolver();\n }\n\n /**\n * Set the route resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setRouteResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRouteResolver($callback);\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @return array\n * @static\n */\n public static function toArray()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->toArray();\n }\n\n /**\n * Determine if the given offset exists.\n *\n * @param string $offset\n * @return bool\n * @static\n */\n public static function offsetExists($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetExists($offset);\n }\n\n /**\n * Get the value at the given offset.\n *\n * @param string $offset\n * @return mixed\n * @static\n */\n public static function offsetGet($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetGet($offset);\n }\n\n /**\n * Set the value at the given offset.\n *\n * @param string $offset\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($offset, $value)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetSet($offset, $value);\n }\n\n /**\n * Remove the value at the given offset.\n *\n * @param string $offset\n * @return void\n * @static\n */\n public static function offsetUnset($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetUnset($offset);\n }\n\n /**\n * Sets the parameters for this request.\n * \n * This method also re-initializes all properties.\n *\n * @param array $query The GET parameters\n * @param array $request The POST parameters\n * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array $cookies The COOKIE parameters\n * @param array $files The FILES parameters\n * @param array $server The SERVER parameters\n * @param string|resource|null $content The raw body data\n * @static\n */\n public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);\n }\n\n /**\n * Creates a new request with values from PHP's super globals.\n *\n * @static\n */\n public static function createFromGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::createFromGlobals();\n }\n\n /**\n * Creates a Request based on a given URI and configuration.\n * \n * The information contained in the URI always take precedence\n * over the other information (server and parameters).\n *\n * @param string $uri The URI\n * @param string $method The HTTP method\n * @param array $parameters The query (GET) or request (POST) parameters\n * @param array $cookies The request cookies ($_COOKIE)\n * @param array $files The request files ($_FILES)\n * @param array $server The server parameters ($_SERVER)\n * @param string|resource|null $content The raw body data\n * @throws BadRequestException When the URI is invalid\n * @static\n */\n public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);\n }\n\n /**\n * Sets a callable able to create a Request instance.\n * \n * This is mainly useful when you need to override the Request class\n * to keep BC with an existing system. It should not be used for any\n * other purpose.\n *\n * @static\n */\n public static function setFactory($callable)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setFactory($callable);\n }\n\n /**\n * Overrides the PHP global variables according to this request instance.\n * \n * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.\n * $_FILES is never overridden, see rfc1867\n *\n * @static\n */\n public static function overrideGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->overrideGlobals();\n }\n\n /**\n * Sets a list of trusted proxies.\n * \n * You should only list the reverse proxies that you manage directly.\n *\n * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] and 'PRIVATE_SUBNETS' by IpUtils::PRIVATE_SUBNETS\n * @param int-mask-of<Request::HEADER_*> $trustedHeaderSet A bit field to set which headers to trust from your proxies\n * @static\n */\n public static function setTrustedProxies($proxies, $trustedHeaderSet)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedProxies($proxies, $trustedHeaderSet);\n }\n\n /**\n * Gets the list of trusted proxies.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedProxies()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedProxies();\n }\n\n /**\n * Gets the set of trusted headers from trusted proxies.\n *\n * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies\n * @static\n */\n public static function getTrustedHeaderSet()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHeaderSet();\n }\n\n /**\n * Sets a list of trusted host patterns.\n * \n * You should only list the hosts you manage using regexs.\n *\n * @param array $hostPatterns A list of trusted host patterns\n * @static\n */\n public static function setTrustedHosts($hostPatterns)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedHosts($hostPatterns);\n }\n\n /**\n * Gets the list of trusted host patterns.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedHosts()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHosts();\n }\n\n /**\n * Normalizes a query string.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized,\n * have consistent escaping and unneeded delimiters are removed.\n *\n * @static\n */\n public static function normalizeQueryString($qs)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::normalizeQueryString($qs);\n }\n\n /**\n * Enables support for the _method request parameter to determine the intended HTTP method.\n * \n * Be warned that enabling this feature might lead to CSRF issues in your code.\n * Check that you are using CSRF tokens when required.\n * If the HTTP method parameter override is enabled, an html-form with method \"POST\" can be altered\n * and used to send a \"PUT\" or \"DELETE\" request via the _method request parameter.\n * If these methods are not protected against CSRF, this presents a possible vulnerability.\n * \n * The HTTP method can only be overridden when the real HTTP method is POST.\n *\n * @static\n */\n public static function enableHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::enableHttpMethodParameterOverride();\n }\n\n /**\n * Checks whether support for the _method request parameter is enabled.\n *\n * @static\n */\n public static function getHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getHttpMethodParameterOverride();\n }\n\n /**\n * Sets the list of HTTP methods that can be overridden.\n * \n * Set to null to allow all methods to be overridden (default). Set to an\n * empty array to disallow overrides entirely. Otherwise, provide the list\n * of uppercased method names that are allowed.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null $methods\n * @static\n */\n public static function setAllowedHttpMethodOverride($methods)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setAllowedHttpMethodOverride($methods);\n }\n\n /**\n * Gets the list of HTTP methods that can be overridden.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null\n * @static\n */\n public static function getAllowedHttpMethodOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getAllowedHttpMethodOverride();\n }\n\n /**\n * Whether the request contains a Session which was started in one of the\n * previous requests.\n *\n * @static\n */\n public static function hasPreviousSession()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasPreviousSession();\n }\n\n /**\n * @static\n */\n public static function setSession($session)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSession($session);\n }\n\n /**\n * @internal\n * @param callable(): SessionInterface $factory\n * @static\n */\n public static function setSessionFactory($factory)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSessionFactory($factory);\n }\n\n /**\n * Returns the client IP addresses.\n * \n * In the returned array the most trusted IP address is first, and the\n * least trusted one last. The \"real\" client IP address is the last one,\n * but this is also the least trusted one. Trusted proxies are stripped.\n * \n * Use this method carefully; you should use getClientIp() instead.\n *\n * @see getClientIp()\n * @static\n */\n public static function getClientIps()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIps();\n }\n\n /**\n * Returns the client IP address.\n * \n * This method can read the client IP address from the \"X-Forwarded-For\" header\n * when trusted proxies were set via \"setTrustedProxies()\". The \"X-Forwarded-For\"\n * header value is a comma+space separated list of IP addresses, the left-most\n * being the original client, and each successive proxy that passed the request\n * adding the IP address where it received the request from.\n * \n * If your reverse proxy uses a different header name than \"X-Forwarded-For\",\n * (\"Client-Ip\" for instance), configure it via the $trustedHeaderSet\n * argument of the Request::setTrustedProxies() method instead.\n *\n * @see getClientIps()\n * @see https://wikipedia.org/wiki/X-Forwarded-For\n * @static\n */\n public static function getClientIp()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIp();\n }\n\n /**\n * Returns current script name.\n *\n * @static\n */\n public static function getScriptName()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScriptName();\n }\n\n /**\n * Returns the path being requested relative to the executed script.\n * \n * The path info always starts with a /.\n * \n * Suppose this request is instantiated from /mysite on localhost:\n * \n * * http://localhost/mysite returns an empty string\n * * http://localhost/mysite/about returns '/about'\n * * http://localhost/mysite/enco%20ded returns '/enco%20ded'\n * * http://localhost/mysite/about?var=1 returns '/about'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getPathInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPathInfo();\n }\n\n /**\n * Returns the root path from which this request is executed.\n * \n * Suppose that an index.php file instantiates this request object:\n * \n * * http://localhost/index.php returns an empty string\n * * http://localhost/index.php/page returns an empty string\n * * http://localhost/web/index.php returns '/web'\n * * http://localhost/we%20b/index.php returns '/we%20b'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getBasePath()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBasePath();\n }\n\n /**\n * Returns the root URL from which this request is executed.\n * \n * The base URL never ends with a /.\n * \n * This is similar to getBasePath(), except that it also includes the\n * script filename (e.g. index.php) if one exists.\n *\n * @return string The raw URL (i.e. not urldecoded)\n * @static\n */\n public static function getBaseUrl()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBaseUrl();\n }\n\n /**\n * Gets the request's scheme.\n *\n * @static\n */\n public static function getScheme()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScheme();\n }\n\n /**\n * Returns the port on which the request is made.\n * \n * This method can read the client port from the \"X-Forwarded-Port\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Port\" header must contain the client port.\n *\n * @return int|string|null Can be a string if fetched from the server bag\n * @static\n */\n public static function getPort()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPort();\n }\n\n /**\n * Returns the user.\n *\n * @static\n */\n public static function getUser()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUser();\n }\n\n /**\n * Returns the password.\n *\n * @static\n */\n public static function getPassword()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPassword();\n }\n\n /**\n * Gets the user info.\n *\n * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server\n * @static\n */\n public static function getUserInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserInfo();\n }\n\n /**\n * Returns the HTTP host being requested.\n * \n * The port name will be appended to the host if it's non-standard.\n *\n * @static\n */\n public static function getHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHttpHost();\n }\n\n /**\n * Returns the requested URI (path and query string).\n *\n * @return string The raw URI (i.e. not URI decoded)\n * @static\n */\n public static function getRequestUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestUri();\n }\n\n /**\n * Gets the scheme and HTTP host.\n * \n * If the URL was called with basic authentication, the user\n * and the password are not added to the generated string.\n *\n * @static\n */\n public static function getSchemeAndHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSchemeAndHttpHost();\n }\n\n /**\n * Generates a normalized URI (URL) for the Request.\n *\n * @see getQueryString()\n * @static\n */\n public static function getUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUri();\n }\n\n /**\n * Generates a normalized URI for the given path.\n *\n * @param string $path A path to use instead of the current one\n * @static\n */\n public static function getUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUriForPath($path);\n }\n\n /**\n * Returns the path as relative reference from the current Request path.\n * \n * Only the URIs path component (no schema, host etc.) is relevant and must be given.\n * Both paths must be absolute and not contain relative parts.\n * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.\n * Furthermore, they can be used to reduce the link size in documents.\n * \n * Example target paths, given a base path of \"/a/b/c/d\":\n * - \"/a/b/c/d\" -> \"\"\n * - \"/a/b/c/\" -> \"./\"\n * - \"/a/b/\" -> \"../\"\n * - \"/a/b/c/other\" -> \"other\"\n * - \"/a/x/y\" -> \"../../x/y\"\n *\n * @static\n */\n public static function getRelativeUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRelativeUriForPath($path);\n }\n\n /**\n * Generates the normalized query string for the Request.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized\n * and have consistent escaping.\n *\n * @static\n */\n public static function getQueryString()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getQueryString();\n }\n\n /**\n * Checks whether the request is secure or not.\n * \n * This method can read the client protocol from the \"X-Forwarded-Proto\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Proto\" header must contain the protocol: \"https\" or \"http\".\n *\n * @static\n */\n public static function isSecure()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isSecure();\n }\n\n /**\n * Returns the host name.\n * \n * This method can read the client host name from the \"X-Forwarded-Host\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Host\" header must contain the client host name.\n *\n * @throws SuspiciousOperationException when the host name is invalid or not trusted\n * @static\n */\n public static function getHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHost();\n }\n\n /**\n * Sets the request method.\n *\n * @static\n */\n public static function setMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setMethod($method);\n }\n\n /**\n * Gets the request \"intended\" method.\n * \n * If the X-HTTP-Method-Override header is set, and if the method is a POST,\n * then it is used to determine the \"real\" intended HTTP method.\n * \n * The _method request parameter can also be used to determine the HTTP method,\n * but only if enableHttpMethodParameterOverride() has been called.\n * \n * The method is always an uppercased string.\n *\n * @see getRealMethod()\n * @static\n */\n public static function getMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMethod();\n }\n\n /**\n * Gets the \"real\" request method.\n *\n * @see getMethod()\n * @static\n */\n public static function getRealMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRealMethod();\n }\n\n /**\n * Gets the mime type associated with the format.\n *\n * @static\n */\n public static function getMimeType($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMimeType($format);\n }\n\n /**\n * Gets the mime types associated with the format.\n *\n * @return string[]\n * @static\n */\n public static function getMimeTypes($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getMimeTypes($format);\n }\n\n /**\n * Gets the format associated with the mime type.\n * \n * Resolution order:\n * 1) Exact match on the full MIME type (e.g. \"application/json\").\n * 2) Match on the canonical MIME type (i.e. before the first \";\" parameter).\n * 3) If the type is \"application/*+suffix\", use the structured syntax suffix\n * mapping (e.g. \"application/foo+json\" → \"json\"), when available.\n * 4) If $subtypeFallback is true and no match was found:\n * - return the MIME subtype (without \"x-\" prefix), provided it does not\n * contain a \"+\" (e.g. \"application/x-yaml\" → \"yaml\", \"text/csv\" → \"csv\").\n *\n * @param string|null $mimeType The mime type to check\n * @param bool $subtypeFallback Whether to fall back to the subtype if no exact match is found\n * @static\n */\n public static function getFormat($mimeType)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getFormat($mimeType);\n }\n\n /**\n * Associates a format with mime types.\n *\n * @param string $format The format to set\n * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)\n * @static\n */\n public static function setFormat($format, $mimeTypes)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setFormat($format, $mimeTypes);\n }\n\n /**\n * Gets the request format.\n * \n * Here is the process to determine the format:\n * \n * * format defined by the user (with setRequestFormat())\n * * _format request attribute\n * * $default\n *\n * @see getPreferredFormat\n * @static\n */\n public static function getRequestFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestFormat($default);\n }\n\n /**\n * Sets the request format.\n *\n * @static\n */\n public static function setRequestFormat($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRequestFormat($format);\n }\n\n /**\n * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header).\n *\n * @see Request::$formats\n * @static\n */\n public static function getContentTypeFormat()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContentTypeFormat();\n }\n\n /**\n * Sets the default locale.\n *\n * @static\n */\n public static function setDefaultLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setDefaultLocale($locale);\n }\n\n /**\n * Get the default locale.\n *\n * @static\n */\n public static function getDefaultLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getDefaultLocale();\n }\n\n /**\n * Sets the locale.\n *\n * @static\n */\n public static function setLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setLocale($locale);\n }\n\n /**\n * Get the locale.\n *\n * @static\n */\n public static function getLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLocale();\n }\n\n /**\n * Checks if the request method is of specified type.\n *\n * @param string $method Uppercase request method (GET, POST etc)\n * @static\n */\n public static function isMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethod($method);\n }\n\n /**\n * Checks whether or not the method is safe.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.1\n * @static\n */\n public static function isMethodSafe()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodSafe();\n }\n\n /**\n * Checks whether or not the method is idempotent.\n *\n * @static\n */\n public static function isMethodIdempotent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodIdempotent();\n }\n\n /**\n * Checks whether the method is cacheable or not.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.3\n * @static\n */\n public static function isMethodCacheable()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodCacheable();\n }\n\n /**\n * Returns the protocol version.\n * \n * If the application is behind a proxy, the protocol version used in the\n * requests between the client and the proxy and between the proxy and the\n * server might be different. This returns the former (from the \"Via\" header)\n * if the proxy is trusted (see \"setTrustedProxies()\"), otherwise it returns\n * the latter (from the \"SERVER_PROTOCOL\" server parameter).\n *\n * @static\n */\n public static function getProtocolVersion()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getProtocolVersion();\n }\n\n /**\n * Returns the request body content.\n *\n * @param bool $asResource If true, a resource will be returned\n * @return string|resource\n * @psalm-return ($asResource is true ? resource : string)\n * @static\n */\n public static function getContent($asResource = false)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContent($asResource);\n }\n\n /**\n * Gets the decoded form or json request body.\n *\n * @throws JsonException When the body cannot be decoded to an array\n * @static\n */\n public static function getPayload()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPayload();\n }\n\n /**\n * Gets the Etags.\n *\n * @static\n */\n public static function getETags()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getETags();\n }\n\n /**\n * @static\n */\n public static function isNoCache()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNoCache();\n }\n\n /**\n * Gets the preferred format for the response by inspecting, in the following order:\n * * the request format set using setRequestFormat;\n * * the values of the Accept HTTP header.\n * \n * Note that if you use this method, you should send the \"Vary: Accept\" header\n * in the response to prevent any issues with intermediary HTTP caches.\n *\n * @static\n */\n public static function getPreferredFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredFormat($default);\n }\n\n /**\n * Returns the preferred language.\n *\n * @param string[] $locales An array of ordered available locales\n * @static\n */\n public static function getPreferredLanguage($locales = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredLanguage($locales);\n }\n\n /**\n * Gets a list of languages acceptable by the client browser ordered in the user browser preferences.\n *\n * @return string[]\n * @static\n */\n public static function getLanguages()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLanguages();\n }\n\n /**\n * Gets a list of charsets acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getCharsets()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getCharsets();\n }\n\n /**\n * Gets a list of encodings acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getEncodings()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getEncodings();\n }\n\n /**\n * Gets a list of content types acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getAcceptableContentTypes()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getAcceptableContentTypes();\n }\n\n /**\n * Returns true if the request is an XMLHttpRequest.\n * \n * It works if your JavaScript library sets an X-Requested-With HTTP header.\n * It is known to work with common JavaScript frameworks:\n *\n * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript\n * @static\n */\n public static function isXmlHttpRequest()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isXmlHttpRequest();\n }\n\n /**\n * Checks whether the client browser prefers safe content or not according to RFC8674.\n *\n * @see https://tools.ietf.org/html/rfc8674\n * @static\n */\n public static function preferSafeContent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->preferSafeContent();\n }\n\n /**\n * Indicates whether this request originated from a trusted proxy.\n * \n * This can be useful to determine whether or not to trust the\n * contents of a proxy-specific header.\n *\n * @static\n */\n public static function isFromTrustedProxy()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isFromTrustedProxy();\n }\n\n /**\n * Filter the given array of rules into an array of rules that are included in precognitive headers.\n *\n * @param array $rules\n * @return array\n * @static\n */\n public static function filterPrecognitiveRules($rules)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filterPrecognitiveRules($rules);\n }\n\n /**\n * Determine if the request is attempting to be precognitive.\n *\n * @return bool\n * @static\n */\n public static function isAttemptingPrecognition()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isAttemptingPrecognition();\n }\n\n /**\n * Determine if the request is precognitive.\n *\n * @return bool\n * @static\n */\n public static function isPrecognitive()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isPrecognitive();\n }\n\n /**\n * Determine if the request is sending JSON.\n *\n * @return bool\n * @static\n */\n public static function isJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isJson();\n }\n\n /**\n * Determine if the current request probably expects a JSON response.\n *\n * @return bool\n * @static\n */\n public static function expectsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->expectsJson();\n }\n\n /**\n * Determine if the current request is asking for JSON.\n *\n * @return bool\n * @static\n */\n public static function wantsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->wantsJson();\n }\n\n /**\n * Determines whether the current requests accepts a given content type.\n *\n * @param string|array $contentTypes\n * @return bool\n * @static\n */\n public static function accepts($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->accepts($contentTypes);\n }\n\n /**\n * Return the most suitable content type from the given array based on content negotiation.\n *\n * @param string|array $contentTypes\n * @return string|null\n * @static\n */\n public static function prefers($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefers($contentTypes);\n }\n\n /**\n * Determine if the current request accepts any content type.\n *\n * @return bool\n * @static\n */\n public static function acceptsAnyContentType()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsAnyContentType();\n }\n\n /**\n * Determines whether a request accepts JSON.\n *\n * @return bool\n * @static\n */\n public static function acceptsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsJson();\n }\n\n /**\n * Determines whether a request accepts HTML.\n *\n * @return bool\n * @static\n */\n public static function acceptsHtml()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsHtml();\n }\n\n /**\n * Determine if the given content types match.\n *\n * @param string $actual\n * @param string $type\n * @return bool\n * @static\n */\n public static function matchesType($actual, $type)\n {\n return \\Illuminate\\Http\\Request::matchesType($actual, $type);\n }\n\n /**\n * Get the data format expected in the response.\n *\n * @param string $default\n * @return string\n * @static\n */\n public static function format($default = 'html')\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->format($default);\n }\n\n /**\n * Retrieve an old input item.\n *\n * @param string|null $key\n * @param \\Illuminate\\Database\\Eloquent\\Model|string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function old($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->old($key, $default);\n }\n\n /**\n * Flash the input for the current request to the session.\n *\n * @return void\n * @static\n */\n public static function flash()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flash();\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashOnly($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashOnly($keys);\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashExcept($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashExcept($keys);\n }\n\n /**\n * Flush all of the old input from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flush();\n }\n\n /**\n * Retrieve a server variable from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function server($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->server($key, $default);\n }\n\n /**\n * Determine if a header is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHeader($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasHeader($key);\n }\n\n /**\n * Retrieve a header from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function header($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->header($key, $default);\n }\n\n /**\n * Get the bearer token from the request headers.\n *\n * @return string|null\n * @static\n */\n public static function bearerToken()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->bearerToken();\n }\n\n /**\n * Get the keys for all of the input and files.\n *\n * @return array\n * @static\n */\n public static function keys()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->keys();\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function all($keys = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->all($keys);\n }\n\n /**\n * Retrieve an input item from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function input($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Retrieve input from the request as a Fluent object instance.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Fluent\n * @static\n */\n public static function fluent($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fluent($key);\n }\n\n /**\n * Retrieve a query string item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function query($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->query($key, $default);\n }\n\n /**\n * Retrieve a request payload item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function post($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->post($key, $default);\n }\n\n /**\n * Determine if a cookie is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasCookie($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasCookie($key);\n }\n\n /**\n * Retrieve a cookie from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function cookie($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->cookie($key, $default);\n }\n\n /**\n * Get an array of all of the files on the request.\n *\n * @return array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]>\n * @static\n */\n public static function allFiles()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->allFiles();\n }\n\n /**\n * Determine if the uploaded data contains a file.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasFile($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasFile($key);\n }\n\n /**\n * Retrieve a file from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]> : \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]|null)\n * @static\n */\n public static function file($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->file($key, $default);\n }\n\n /**\n * Dump the items.\n *\n * @param mixed $keys\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function dump($keys = [])\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dump($keys);\n }\n\n /**\n * Dump the given arguments and terminate execution.\n *\n * @param mixed $args\n * @return never\n * @static\n */\n public static function dd(...$args)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dd(...$args);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the instance contains any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function hasAny($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasAny($keys);\n }\n\n /**\n * Apply the callback if the instance contains the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenHas($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenHas($key, $callback, $default);\n }\n\n /**\n * Determine if the instance contains a non-empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function filled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filled($key);\n }\n\n /**\n * Determine if the instance contains an empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function isNotFilled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNotFilled($key);\n }\n\n /**\n * Determine if the instance contains a non-empty value for any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function anyFilled($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->anyFilled($keys);\n }\n\n /**\n * Apply the callback if the instance contains a non-empty value for the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenFilled($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenFilled($key, $callback, $default);\n }\n\n /**\n * Determine if the instance is missing a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->missing($key);\n }\n\n /**\n * Apply the callback if the instance is missing the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenMissing($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenMissing($key, $callback, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function str($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->str($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Retrieve data as a boolean value.\n * \n * Returns true when value is \"1\", \"true\", \"on\", and \"yes\". Otherwise, returns false.\n *\n * @param string|null $key\n * @param bool $default\n * @return bool\n * @static\n */\n public static function boolean($key = null, $default = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Retrieve data as an integer value.\n *\n * @param string $key\n * @param int $default\n * @return int\n * @static\n */\n public static function integer($key, $default = 0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Retrieve data as a float value.\n *\n * @param string $key\n * @param float $default\n * @return float\n * @static\n */\n public static function float($key, $default = 0.0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Carbon instance.\n *\n * @param string $key\n * @param string|null $format\n * @param \\UnitEnum|string|null $tz\n * @return \\Illuminate\\Support\\Carbon|null\n * @throws \\Carbon\\Exceptions\\InvalidFormatException\n * @static\n */\n public static function date($key, $format = null, $tz = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->date($key, $format, $tz);\n }\n\n /**\n * Retrieve data from the instance as an enum.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @param TEnum|null $default\n * @return TEnum|null\n * @static\n */\n public static function enum($key, $enumClass, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enum($key, $enumClass, $default);\n }\n\n /**\n * Retrieve data from the instance as an array of enums.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @return TEnum[]\n * @static\n */\n public static function enums($key, $enumClass)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enums($key, $enumClass);\n }\n\n /**\n * Retrieve data from the instance as an array.\n *\n * @param array|string|null $key\n * @return array\n * @static\n */\n public static function array($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->array($key);\n }\n\n /**\n * Retrieve data from the instance as a collection.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function collect($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->collect($key);\n }\n\n /**\n * Get a subset containing the provided keys with values from the instance data.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all of the data except for a specified array of items.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->except($keys);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Request::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Request::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Request::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Request::flushMacros();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\ResponseFactory\n */\n class Response {\n /**\n * Create a new response instance.\n *\n * @param mixed $content\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function make($content = '', $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->make($content, $status, $headers);\n }\n\n /**\n * Create a new \"no content\" response.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function noContent($status = 204, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->noContent($status, $headers);\n }\n\n /**\n * Create a new response for a given view.\n *\n * @param string|array $view\n * @param array $data\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function view($view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->view($view, $data, $status, $headers);\n }\n\n /**\n * Create a new JSON response instance.\n *\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function json($data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->json($data, $status, $headers, $options);\n }\n\n /**\n * Create a new JSONP response instance.\n *\n * @param string $callback\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->jsonp($callback, $data, $status, $headers, $options);\n }\n\n /**\n * Create a new event stream response.\n *\n * @param \\Closure $callback\n * @param array $headers\n * @param \\Illuminate\\Http\\StreamedEvent|string|null $endStreamWith\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function eventStream($callback, $headers = [], $endStreamWith = '</stream>')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->eventStream($callback, $headers, $endStreamWith);\n }\n\n /**\n * Create a new streamed response instance.\n *\n * @param callable|null $callback\n * @param int $status\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function stream($callback, $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->stream($callback, $status, $headers);\n }\n\n /**\n * Create a new streamed JSON response instance.\n *\n * @param array $data\n * @param int $status\n * @param array $headers\n * @param int $encodingOptions\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedJsonResponse\n * @static\n */\n public static function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamJson($data, $status, $headers, $encodingOptions);\n }\n\n /**\n * Create a new streamed response instance as a file download.\n *\n * @param callable $callback\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @throws \\Illuminate\\Routing\\Exceptions\\StreamedResponseException\n * @static\n */\n public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamDownload($callback, $name, $headers, $disposition);\n }\n\n /**\n * Create a new file download response.\n *\n * @param \\SplFileInfo|string $file\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function download($file, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->download($file, $name, $headers, $disposition);\n }\n\n /**\n * Return the raw contents of a binary file.\n *\n * @param \\SplFileInfo|string $file\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function file($file, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->file($file, $headers);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectTo($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectTo($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToRoute($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param array|string $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToAction($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToAction($action, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectGuest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectGuest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param string $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToIntended($default, $status, $headers, $secure);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\ResponseFactory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\ResponseFactory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\ResponseFactory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\ResponseFactory::flushMacros();\n }\n\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n /**\n * @method static \\Illuminate\\Routing\\RouteRegistrar attribute(string $key, mixed $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlpha(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlphaNumeric(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereNumber(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUlid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUuid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereIn(array|string $parameters, array $values)\n * @method static \\Illuminate\\Routing\\RouteRegistrar as(string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar can(\\UnitEnum|string $ability, array|string $models = [])\n * @method static \\Illuminate\\Routing\\RouteRegistrar controller(string $controller)\n * @method static \\Illuminate\\Routing\\RouteRegistrar domain(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar middleware(array|string|null $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar missing(\\Closure $missing)\n * @method static \\Illuminate\\Routing\\RouteRegistrar name(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar namespace(string|null $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar prefix(string $prefix)\n * @method static \\Illuminate\\Routing\\RouteRegistrar scopeBindings()\n * @method static \\Illuminate\\Routing\\RouteRegistrar where(array $where)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutMiddleware(array|string $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutScopedBindings()\n * @see \\Illuminate\\Routing\\Router\n */\n class Route {\n /**\n * Register a new GET route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function get($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->get($uri, $action);\n }\n\n /**\n * Register a new POST route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function post($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->post($uri, $action);\n }\n\n /**\n * Register a new PUT route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function put($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->put($uri, $action);\n }\n\n /**\n * Register a new PATCH route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function patch($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->patch($uri, $action);\n }\n\n /**\n * Register a new DELETE route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function delete($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->delete($uri, $action);\n }\n\n /**\n * Register a new OPTIONS route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function options($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->options($uri, $action);\n }\n\n /**\n * Register a new route responding to all verbs.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function any($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->any($uri, $action);\n }\n\n /**\n * Register a new fallback route with the router.\n *\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function fallback($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->fallback($action);\n }\n\n /**\n * Create a redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @param int $status\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function redirect($uri, $destination, $status = 302)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->redirect($uri, $destination, $status);\n }\n\n /**\n * Create a permanent redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function permanentRedirect($uri, $destination)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->permanentRedirect($uri, $destination);\n }\n\n /**\n * Register a new route that returns a view.\n *\n * @param string $uri\n * @param string $view\n * @param array $data\n * @param int|array $status\n * @param array $headers\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function view($uri, $view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->view($uri, $view, $data, $status, $headers);\n }\n\n /**\n * Register a new route with the given verbs.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function match($methods, $uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->match($methods, $uri, $action);\n }\n\n /**\n * Register an array of resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function resources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resources($resources, $options);\n }\n\n /**\n * Register an array of resource controllers that can be soft deleted.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function softDeletableResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->softDeletableResources($resources, $options);\n }\n\n /**\n * Route a resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function resource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resource($name, $controller, $options);\n }\n\n /**\n * Register an array of API resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function apiResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiResources($resources, $options);\n }\n\n /**\n * Route an API resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function apiResource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiResource($name, $controller, $options);\n }\n\n /**\n * Register an array of singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function singletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singletons($singletons, $options);\n }\n\n /**\n * Route a singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function singleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->singleton($name, $controller, $options);\n }\n\n /**\n * Register an array of API singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function apiSingletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiSingletons($singletons, $options);\n }\n\n /**\n * Route an API singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function apiSingleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiSingleton($name, $controller, $options);\n }\n\n /**\n * Create a route group with shared attributes.\n *\n * @param array $attributes\n * @param \\Closure|array|string $routes\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function group($attributes, $routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->group($attributes, $routes);\n }\n\n /**\n * Merge the given array with the last group stack.\n *\n * @param array $new\n * @param bool $prependExistingPrefix\n * @return array\n * @static\n */\n public static function mergeWithLastGroup($new, $prependExistingPrefix = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->mergeWithLastGroup($new, $prependExistingPrefix);\n }\n\n /**\n * Get the prefix from the last group on the stack.\n *\n * @return string\n * @static\n */\n public static function getLastGroupPrefix()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getLastGroupPrefix();\n }\n\n /**\n * Add a route to the underlying route collection.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function addRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->addRoute($methods, $uri, $action);\n }\n\n /**\n * Create a new Route object.\n *\n * @param array|string $methods\n * @param string $uri\n * @param mixed $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function newRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->newRoute($methods, $uri, $action);\n }\n\n /**\n * Return the response returned by the given route.\n *\n * @param string $name\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function respondWithRoute($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->respondWithRoute($name);\n }\n\n /**\n * Dispatch the request to the application.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatch($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatch($request);\n }\n\n /**\n * Dispatch the request to a route and return the response.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatchToRoute($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatchToRoute($request);\n }\n\n /**\n * Gather the middleware for the given route with resolved class names.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return array\n * @static\n */\n public static function gatherRouteMiddleware($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->gatherRouteMiddleware($route);\n }\n\n /**\n * Resolve a flat array of middleware classes from the provided array.\n *\n * @param array $middleware\n * @param array $excluded\n * @return array\n * @static\n */\n public static function resolveMiddleware($middleware, $excluded = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resolveMiddleware($middleware, $excluded);\n }\n\n /**\n * Create a response instance from the given value.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function prepareResponse($request, $response)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prepareResponse($request, $response);\n }\n\n /**\n * Static version of prepareResponse.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function toResponse($request, $response)\n {\n return \\Illuminate\\Routing\\Router::toResponse($request, $response);\n }\n\n /**\n * Substitute the route bindings onto the route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return \\Illuminate\\Routing\\Route\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteBindings($route);\n }\n\n /**\n * Substitute the implicit route bindings for the given route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return void\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteImplicitBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->substituteImplicitBindings($route);\n }\n\n /**\n * Register a callback to run after implicit bindings are substituted.\n *\n * @param callable $callback\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function substituteImplicitBindingsUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteImplicitBindingsUsing($callback);\n }\n\n /**\n * Register a route matched event listener.\n *\n * @param string|callable $callback\n * @return void\n * @static\n */\n public static function matched($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->matched($callback);\n }\n\n /**\n * Get all of the defined middleware short-hand names.\n *\n * @return array\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * Register a short-hand name for a middleware.\n *\n * @param string $name\n * @param string $class\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function aliasMiddleware($name, $class)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->aliasMiddleware($name, $class);\n }\n\n /**\n * Check if a middlewareGroup with the given name exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMiddlewareGroup($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasMiddlewareGroup($name);\n }\n\n /**\n * Get all of the defined middleware groups.\n *\n * @return array\n * @static\n */\n public static function getMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddlewareGroups();\n }\n\n /**\n * Register a group of middleware.\n *\n * @param string $name\n * @param array $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function middlewareGroup($name, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->middlewareGroup($name, $middleware);\n }\n\n /**\n * Add a middleware to the beginning of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function prependMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prependMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Add a middleware to the end of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function pushMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->pushMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Remove the given middleware from the specified group.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function removeMiddlewareFromGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->removeMiddlewareFromGroup($group, $middleware);\n }\n\n /**\n * Flush the router's middleware groups.\n *\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function flushMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->flushMiddlewareGroups();\n }\n\n /**\n * Add a new route parameter binder.\n *\n * @param string $key\n * @param string|callable $binder\n * @return void\n * @static\n */\n public static function bind($key, $binder)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->bind($key, $binder);\n }\n\n /**\n * Register a model binder for a wildcard.\n *\n * @param string $key\n * @param string $class\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function model($key, $class, $callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->model($key, $class, $callback);\n }\n\n /**\n * Get the binding callback for a given binding.\n *\n * @param string $key\n * @return \\Closure|null\n * @static\n */\n public static function getBindingCallback($key)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getBindingCallback($key);\n }\n\n /**\n * Get the global \"where\" patterns.\n *\n * @return array\n * @static\n */\n public static function getPatterns()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getPatterns();\n }\n\n /**\n * Set a global where pattern on all routes.\n *\n * @param string $key\n * @param string $pattern\n * @return void\n * @static\n */\n public static function pattern($key, $pattern)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->pattern($key, $pattern);\n }\n\n /**\n * Set a group of global where patterns on all routes.\n *\n * @param array $patterns\n * @return void\n * @static\n */\n public static function patterns($patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->patterns($patterns);\n }\n\n /**\n * Determine if the router currently has a group stack.\n *\n * @return bool\n * @static\n */\n public static function hasGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasGroupStack();\n }\n\n /**\n * Get the current group stack for the router.\n *\n * @return array\n * @static\n */\n public static function getGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getGroupStack();\n }\n\n /**\n * Get a route parameter for the current route.\n *\n * @param string $key\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function input($key, $default = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Get the request currently being dispatched.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getCurrentRequest()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRequest();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function getCurrentRoute()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRoute();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->current();\n }\n\n /**\n * Check if a route with the given name exists.\n *\n * @param string|array $name\n * @return bool\n * @static\n */\n public static function has($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->has($name);\n }\n\n /**\n * Get the current route name.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteName()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteName();\n }\n\n /**\n * Alias for the \"currentRouteNamed\" method.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the current route matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function currentRouteNamed(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteNamed(...$patterns);\n }\n\n /**\n * Get the current route action.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteAction()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteAction();\n }\n\n /**\n * Alias for the \"currentRouteUses\" method.\n *\n * @param array|string $patterns\n * @return bool\n * @static\n */\n public static function uses(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->uses(...$patterns);\n }\n\n /**\n * Determine if the current route action matches a given action.\n *\n * @param string $action\n * @return bool\n * @static\n */\n public static function currentRouteUses($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteUses($action);\n }\n\n /**\n * Set the unmapped global resource parameters to singular.\n *\n * @param bool $singular\n * @return void\n * @static\n */\n public static function singularResourceParameters($singular = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singularResourceParameters($singular);\n }\n\n /**\n * Set the global resource parameter mapping.\n *\n * @param array $parameters\n * @return void\n * @static\n */\n public static function resourceParameters($parameters = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resourceParameters($parameters);\n }\n\n /**\n * Get or set the verbs used in the resource URIs.\n *\n * @param array $verbs\n * @return array|null\n * @static\n */\n public static function resourceVerbs($verbs = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resourceVerbs($verbs);\n }\n\n /**\n * Get the underlying route collection.\n *\n * @return \\Illuminate\\Routing\\RouteCollectionInterface\n * @static\n */\n public static function getRoutes()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getRoutes();\n }\n\n /**\n * Set the route collection instance.\n *\n * @param \\Illuminate\\Routing\\RouteCollection $routes\n * @return void\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setRoutes($routes);\n }\n\n /**\n * Set the compiled route collection instance.\n *\n * @param array $routes\n * @return void\n * @static\n */\n public static function setCompiledRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setCompiledRoutes($routes);\n }\n\n /**\n * Remove any duplicate middleware from the given array.\n *\n * @param array $middleware\n * @return array\n * @static\n */\n public static function uniqueMiddleware($middleware)\n {\n return \\Illuminate\\Routing\\Router::uniqueMiddleware($middleware);\n }\n\n /**\n * Set the container instance used by the router.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Router::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Router::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Router::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Router::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Call the given Closure with this instance then return the instance.\n *\n * @param (callable($this): mixed)|null $callback\n * @return ($callback is null ? \\Illuminate\\Support\\HigherOrderTapProxy : $this)\n * @static\n */\n public static function tap($callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->tap($callback);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes withoutOverlapping(int $expiresAt = 1440)\n * @method static void mergeAttributes(\\Illuminate\\Console\\Scheduling\\Event $event)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes user(string $user)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes environments(mixed $environments)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes evenInMaintenanceMode()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes onOneServer()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes runInBackground()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes when(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes skip(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes name(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes description(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes cron(string $expression)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes between(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes unlessBetween(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySecond()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwentySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyMinute()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtyMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourlyAt(array|string|int|int[] $offset)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyOddHour(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySixHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes daily()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes at(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes dailyAt(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDaily(int $first = 1, int $second = 13)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDailyAt(int $first = 1, int $second = 13, int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekends()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes mondays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes tuesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes wednesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes thursdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes fridays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes saturdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes sundays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weeklyOn(mixed $dayOfWeek, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthlyOn(int $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceMonthly(int $first = 1, int $second = 16, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes lastDayOfMonth(string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterlyOn(int $dayOfQuarter = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearlyOn(int $month = 1, int|string $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes days(mixed $days)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes timezone(\\UnitEnum|\\DateTimeZone|string $timezone)\n * @see \\Illuminate\\Console\\Scheduling\\Schedule\n */\n class Schedule {\n /**\n * Add a new callback event to the schedule.\n *\n * @param string|callable $callback\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function call($callback, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->call($callback, $parameters);\n }\n\n /**\n * Add a new Artisan command event to the schedule.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function command($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->command($command, $parameters);\n }\n\n /**\n * Add a new job callback event to the schedule.\n *\n * @param object|string $job\n * @param \\UnitEnum|string|null $queue\n * @param \\UnitEnum|string|null $connection\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function job($job, $queue = null, $connection = null)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->job($job, $queue, $connection);\n }\n\n /**\n * Add a new command event to the schedule.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function exec($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->exec($command, $parameters);\n }\n\n /**\n * Create new schedule group.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function group($events)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n $instance->group($events);\n }\n\n /**\n * Compile array input for a command.\n *\n * @param string|int $key\n * @param array $value\n * @return string\n * @static\n */\n public static function compileArrayInput($key, $value)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->compileArrayInput($key, $value);\n }\n\n /**\n * Determine if the server is allowed to run this event.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @param \\DateTimeInterface $time\n * @return bool\n * @static\n */\n public static function serverShouldRun($event, $time)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->serverShouldRun($event, $time);\n }\n\n /**\n * Get all of the events on the schedule that are due.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dueEvents($app)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->dueEvents($app);\n }\n\n /**\n * Get all of the events on the schedule.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Event[]\n * @static\n */\n public static function events()\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->events();\n }\n\n /**\n * Specify the cache store that should be used to store mutexes.\n *\n * @param string $store\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function useCache($store)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->useCache($store);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Console\\Scheduling\\Schedule::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\Schema\\Builder\n */\n class Schema {\n /**\n * Drop all tables from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllTables()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTables();\n }\n\n /**\n * Drop all views from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllViews()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllViews();\n }\n\n /**\n * Get the names of current schemas for the connection.\n *\n * @return string[]|null\n * @static\n */\n public static function getCurrentSchemaListing()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaListing();\n }\n\n /**\n * Set the default string length for migrations.\n *\n * @param int $length\n * @return void\n * @static\n */\n public static function defaultStringLength($length)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultStringLength($length);\n }\n\n /**\n * Set the default time precision for migrations.\n *\n * @static\n */\n public static function defaultTimePrecision($precision)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultTimePrecision($precision);\n }\n\n /**\n * Set the default morph key type for migrations.\n *\n * @param string $type\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function defaultMorphKeyType($type)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultMorphKeyType($type);\n }\n\n /**\n * Set the default morph key type for migrations to UUIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUuids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUuids();\n }\n\n /**\n * Set the default morph key type for migrations to ULIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUlids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUlids();\n }\n\n /**\n * Create a database in the schema.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function createDatabase($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->createDatabase($name);\n }\n\n /**\n * Drop a database from the schema if the database exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function dropDatabaseIfExists($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->dropDatabaseIfExists($name);\n }\n\n /**\n * Get the schemas that belong to the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, path: string|null, default: bool}>\n * @static\n */\n public static function getSchemas()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getSchemas();\n }\n\n /**\n * Determine if the given table exists.\n *\n * @param string $table\n * @return bool\n * @static\n */\n public static function hasTable($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasTable($table);\n }\n\n /**\n * Determine if the given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function hasView($view)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasView($view);\n }\n\n /**\n * Get the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, size: int|null, comment: string|null, collation: string|null, engine: string|null}>\n * @static\n */\n public static function getTables($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTables($schema);\n }\n\n /**\n * Get the names of the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @param bool $schemaQualified\n * @return list<string>\n * @static\n */\n public static function getTableListing($schema = null, $schemaQualified = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTableListing($schema, $schemaQualified);\n }\n\n /**\n * Get the views that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, definition: string}>\n * @static\n */\n public static function getViews($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getViews($schema);\n }\n\n /**\n * Get the user-defined types that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string, type: string, type: string, category: string, implicit: bool}>\n * @static\n */\n public static function getTypes($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTypes($schema);\n }\n\n /**\n * Determine if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @return bool\n * @static\n */\n public static function hasColumn($table, $column)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumn($table, $column);\n }\n\n /**\n * Determine if the given table has given columns.\n *\n * @param string $table\n * @param array<string> $columns\n * @return bool\n * @static\n */\n public static function hasColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumns($table, $columns);\n }\n\n /**\n * Execute a table builder callback if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableHasColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableHasColumn($table, $column, $callback);\n }\n\n /**\n * Execute a table builder callback if the given table doesn't have a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableDoesntHaveColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableDoesntHaveColumn($table, $column, $callback);\n }\n\n /**\n * Get the data type for the given column name.\n *\n * @param string $table\n * @param string $column\n * @param bool $fullDefinition\n * @return string\n * @static\n */\n public static function getColumnType($table, $column, $fullDefinition = false)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnType($table, $column, $fullDefinition);\n }\n\n /**\n * Get the column listing for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getColumnListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnListing($table);\n }\n\n /**\n * Get the columns for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, type: string, type_name: string, nullable: bool, default: mixed, auto_increment: bool, comment: string|null, generation: array{type: string, expression: string|null}|null}>\n * @static\n */\n public static function getColumns($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumns($table);\n }\n\n /**\n * Get the indexes for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, columns: list<string>, type: string, unique: bool, primary: bool}>\n * @static\n */\n public static function getIndexes($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexes($table);\n }\n\n /**\n * Get the names of the indexes for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getIndexListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexListing($table);\n }\n\n /**\n * Determine if the given table has a given index.\n *\n * @param string $table\n * @param string|array $index\n * @param string|null $type\n * @return bool\n * @static\n */\n public static function hasIndex($table, $index, $type = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasIndex($table, $index, $type);\n }\n\n /**\n * Get the foreign keys for a given table.\n *\n * @param string $table\n * @return array\n * @static\n */\n public static function getForeignKeys($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getForeignKeys($table);\n }\n\n /**\n * Modify a table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function table($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->table($table, $callback);\n }\n\n /**\n * Create a new table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function create($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->create($table, $callback);\n }\n\n /**\n * Drop a table from the schema.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function drop($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->drop($table);\n }\n\n /**\n * Drop a table from the schema if it exists.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function dropIfExists($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropIfExists($table);\n }\n\n /**\n * Drop columns from a table schema.\n *\n * @param string $table\n * @param string|array<string> $columns\n * @return void\n * @static\n */\n public static function dropColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropColumns($table, $columns);\n }\n\n /**\n * Drop all types from the database.\n *\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function dropAllTypes()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTypes();\n }\n\n /**\n * Rename a table on the schema.\n *\n * @param string $from\n * @param string $to\n * @return void\n * @static\n */\n public static function rename($from, $to)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->rename($from, $to);\n }\n\n /**\n * Enable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function enableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->enableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function disableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->disableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints during the execution of a callback.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutForeignKeyConstraints($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->withoutForeignKeyConstraints($callback);\n }\n\n /**\n * Get the default schema name for the connection.\n *\n * @return string|null\n * @static\n */\n public static function getCurrentSchemaName()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaName();\n }\n\n /**\n * Parse the given database object reference and extract the schema and table.\n *\n * @param string $reference\n * @param string|bool|null $withDefaultSchema\n * @return array\n * @static\n */\n public static function parseSchemaAndTable($reference, $withDefaultSchema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->parseSchemaAndTable($reference, $withDefaultSchema);\n }\n\n /**\n * Get the database connection instance.\n *\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function getConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getConnection();\n }\n\n /**\n * Set the Schema Blueprint resolver callback.\n *\n * @param \\Closure(\\Illuminate\\Database\\Connection, string, \\Closure|null): \\Illuminate\\Database\\Schema\\Blueprint $resolver\n * @return void\n * @static\n */\n public static function blueprintResolver($resolver)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->blueprintResolver($resolver);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Session\\SessionManager\n */\n class Session {\n /**\n * Determine if requests for the same session should wait for each to finish before executing.\n *\n * @return bool\n * @static\n */\n public static function shouldBlock()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->shouldBlock();\n }\n\n /**\n * Get the name of the cache store / driver that should be used to acquire session locks.\n *\n * @return string|null\n * @static\n */\n public static function blockDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->blockDriver();\n }\n\n /**\n * Get the maximum number of seconds the session lock should be held for.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockLockSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockLockSeconds();\n }\n\n /**\n * Get the maximum number of seconds to wait while attempting to acquire a route block session lock.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockWaitSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockWaitSeconds();\n }\n\n /**\n * Get the session configuration.\n *\n * @return array\n * @static\n */\n public static function getSessionConfig()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getSessionConfig();\n }\n\n /**\n * Get the default session driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default session driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Start the session, reading the data from a handler.\n *\n * @return bool\n * @static\n */\n public static function start()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->start();\n }\n\n /**\n * Save the session data to storage.\n *\n * @return void\n * @static\n */\n public static function save()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->save();\n }\n\n /**\n * Age the flash data for the session.\n *\n * @return void\n * @static\n */\n public static function ageFlashData()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->ageFlashData();\n }\n\n /**\n * Get all of the session data.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->all();\n }\n\n /**\n * Get a subset of the session data.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all the session data except for a specified array of items.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->except($keys);\n }\n\n /**\n * Checks if a key exists.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the given key is missing from the session data.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if a key is present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if any of the given keys are present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function hasAny($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasAny($key);\n }\n\n /**\n * Get an item from the session.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the value of a given key and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Determine if the session contains old input.\n *\n * @param string|null $key\n * @return bool\n * @static\n */\n public static function hasOldInput($key = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasOldInput($key);\n }\n\n /**\n * Get the requested item from the flashed input array.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getOldInput($key = null, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getOldInput($key, $default);\n }\n\n /**\n * Replace the given session attributes entirely.\n *\n * @param array $attributes\n * @return void\n * @static\n */\n public static function replace($attributes)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->replace($attributes);\n }\n\n /**\n * Put a key / value pair or array of key / value pairs in the session.\n *\n * @param string|array $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function put($key, $value = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->put($key, $value);\n }\n\n /**\n * Get an item from the session, or store the default value.\n *\n * @param string $key\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function remember($key, $callback)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remember($key, $callback);\n }\n\n /**\n * Push a value onto a session array.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Increment the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return mixed\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Flash a key / value pair to the session.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function flash($key, $value = true)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flash($key, $value);\n }\n\n /**\n * Flash a key / value pair to the session for immediate use.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function now($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->now($key, $value);\n }\n\n /**\n * Reflash all of the session flash data.\n *\n * @return void\n * @static\n */\n public static function reflash()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->reflash();\n }\n\n /**\n * Reflash a subset of the current flash data.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function keep($keys = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->keep($keys);\n }\n\n /**\n * Flash an input array to the session.\n *\n * @param array $value\n * @return void\n * @static\n */\n public static function flashInput($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flashInput($value);\n }\n\n /**\n * Get the session cache instance.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function cache()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->cache();\n }\n\n /**\n * Remove an item from the session, returning its value.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function remove($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remove($key);\n }\n\n /**\n * Remove one or many items from the session.\n *\n * @param string|array $keys\n * @return void\n * @static\n */\n public static function forget($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->forget($keys);\n }\n\n /**\n * Remove all of the items from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flush();\n }\n\n /**\n * Flush the session data and regenerate the ID.\n *\n * @return bool\n * @static\n */\n public static function invalidate()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->invalidate();\n }\n\n /**\n * Generate a new session identifier.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function regenerate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->regenerate($destroy);\n }\n\n /**\n * Generate a new session ID for the session.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function migrate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->migrate($destroy);\n }\n\n /**\n * Determine if the session has been started.\n *\n * @return bool\n * @static\n */\n public static function isStarted()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isStarted();\n }\n\n /**\n * Get the name of the session.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getName();\n }\n\n /**\n * Set the name of the session.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setName($name)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setName($name);\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->id();\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function getId()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getId();\n }\n\n /**\n * Set the session ID.\n *\n * @param string|null $id\n * @return void\n * @static\n */\n public static function setId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setId($id);\n }\n\n /**\n * Determine if this is a valid session ID.\n *\n * @param string|null $id\n * @return bool\n * @static\n */\n public static function isValidId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isValidId($id);\n }\n\n /**\n * Set the existence of the session on the handler if applicable.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function setExists($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setExists($value);\n }\n\n /**\n * Get the CSRF token value.\n *\n * @return string\n * @static\n */\n public static function token()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->token();\n }\n\n /**\n * Regenerate the CSRF token value.\n *\n * @return void\n * @static\n */\n public static function regenerateToken()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->regenerateToken();\n }\n\n /**\n * Determine if the previous URI is available.\n *\n * @return bool\n * @static\n */\n public static function hasPreviousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasPreviousUri();\n }\n\n /**\n * Get the previous URL from the session as a URI instance.\n *\n * @return \\Illuminate\\Support\\Uri\n * @throws \\RuntimeException\n * @static\n */\n public static function previousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUri();\n }\n\n /**\n * Get the previous URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function previousUrl()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUrl();\n }\n\n /**\n * Set the \"previous\" URL in the session.\n *\n * @param string $url\n * @return void\n * @static\n */\n public static function setPreviousUrl($url)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setPreviousUrl($url);\n }\n\n /**\n * Specify that the user has confirmed their password.\n *\n * @return void\n * @static\n */\n public static function passwordConfirmed()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->passwordConfirmed();\n }\n\n /**\n * Get the underlying session handler implementation.\n *\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function getHandler()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getHandler();\n }\n\n /**\n * Set the underlying session handler implementation.\n *\n * @param \\SessionHandlerInterface $handler\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function setHandler($handler)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->setHandler($handler);\n }\n\n /**\n * Determine if the session handler needs a request.\n *\n * @return bool\n * @static\n */\n public static function handlerNeedsRequest()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->handlerNeedsRequest();\n }\n\n /**\n * Set the request on the handler instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequestOnHandler($request)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setRequestOnHandler($request);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Session\\Store::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Session\\Store::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Session\\Store::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Session\\Store::flushMacros();\n }\n\n }\n /**\n * @method static bool has(string $location)\n * @method static string read(string $location)\n * @method static \\League\\Flysystem\\DirectoryListing listContents(string $location, bool $deep = false)\n * @method static int fileSize(string $path)\n * @method static string visibility(string $path)\n * @method static void write(string $location, string $contents, array $config = [])\n * @method static void createDirectory(string $location, array $config = [])\n * @see \\Illuminate\\Filesystem\\FilesystemManager\n */\n class Storage {\n /**\n * Get a filesystem instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function drive($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->drive($name);\n }\n\n /**\n * Get a filesystem instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function disk($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->disk($name);\n }\n\n /**\n * Get a default cloud filesystem instance.\n *\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function cloud()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->cloud();\n }\n\n /**\n * Build an on-demand disk.\n *\n * @param string|array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create an instance of the local driver.\n *\n * @param array $config\n * @param string $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createLocalDriver($config, $name = 'local')\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createLocalDriver($config, $name);\n }\n\n /**\n * Create an instance of the ftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createFtpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createFtpDriver($config);\n }\n\n /**\n * Create an instance of the sftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createSftpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createSftpDriver($config);\n }\n\n /**\n * Create an instance of the Amazon S3 driver.\n *\n * @param array $config\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function createS3Driver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createS3Driver($config);\n }\n\n /**\n * Create a scoped driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createScopedDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createScopedDriver($config);\n }\n\n /**\n * Set the given disk instance.\n *\n * @param string $name\n * @param mixed $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function set($name, $disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->set($name, $disk);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default cloud driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultCloudDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultCloudDriver();\n }\n\n /**\n * Unset the given disk instances.\n *\n * @param array|string $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function forgetDisk($disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->forgetDisk($disk);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if temporary URLs can be generated.\n *\n * @return bool\n * @static\n */\n public static function providesTemporaryUrls()\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->providesTemporaryUrls();\n }\n\n /**\n * Get a temporary URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return string\n * @static\n */\n public static function temporaryUrl($path, $expiration, $options = [])\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUrl($path, $expiration, $options);\n }\n\n /**\n * Specify the name of the disk the adapter is managing.\n *\n * @param string $disk\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function diskName($disk)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->diskName($disk);\n }\n\n /**\n * Indicate that signed URLs should serve the corresponding files.\n *\n * @param bool $serve\n * @param \\Closure|null $urlGeneratorResolver\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function shouldServeSignedUrls($serve = true, $urlGeneratorResolver = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->shouldServeSignedUrls($serve, $urlGeneratorResolver);\n }\n\n /**\n * Assert that the given file or directory exists.\n *\n * @param string|array $path\n * @param string|null $content\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertExists($path, $content = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertExists($path, $content);\n }\n\n /**\n * Assert that the number of files in path equals the expected count.\n *\n * @param string $path\n * @param int $count\n * @param bool $recursive\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertCount($path, $count, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertCount($path, $count, $recursive);\n }\n\n /**\n * Assert that the given file or directory does not exist.\n *\n * @param string|array $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertMissing($path);\n }\n\n /**\n * Assert that the given directory is empty.\n *\n * @param string $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertDirectoryEmpty($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertDirectoryEmpty($path);\n }\n\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->missing($path);\n }\n\n /**\n * Determine if a file exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileExists($path);\n }\n\n /**\n * Determine if a file is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileMissing($path);\n }\n\n /**\n * Determine if a directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryExists($path);\n }\n\n /**\n * Determine if a directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryMissing($path);\n }\n\n /**\n * Get the full path to the file that exists at the given relative path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->path($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @return string|null\n * @static\n */\n public static function get($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->get($path);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @return array|null\n * @static\n */\n public static function json($path, $flags = 0)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->json($path, $flags);\n }\n\n /**\n * Create a streamed response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function response($path, $name = null, $headers = [], $disposition = 'inline')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->response($path, $name, $headers, $disposition);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function serve($request, $path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->serve($request, $path, $name, $headers);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function download($path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->download($path, $name, $headers);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param \\Psr\\Http\\Message\\StreamInterface|\\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|resource $contents\n * @param mixed $options\n * @return string|bool\n * @static\n */\n public static function put($path, $contents, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->put($path, $contents, $options);\n }\n\n /**\n * Store the uploaded file on the disk.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFile($path, $file = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFile($path, $file, $options);\n }\n\n /**\n * Store the uploaded file on the disk with a given name.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param string|array|null $name\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFileAs($path, $file, $name = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFileAs($path, $file, $name, $options);\n }\n\n /**\n * Get the visibility for the given path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getVisibility($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getVisibility($path);\n }\n\n /**\n * Set the visibility for the given path.\n *\n * @param string $path\n * @param string $visibility\n * @return bool\n * @static\n */\n public static function setVisibility($path, $visibility)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->setVisibility($path, $visibility);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function prepend($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->prepend($path, $data, $separator);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function append($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->append($path, $data, $separator);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function copy($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->copy($from, $to);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function move($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->move($from, $to);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the checksum for a file.\n *\n * @return string|false\n * @throws UnableToProvideChecksum\n * @static\n */\n public static function checksum($path, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->checksum($path, $options);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Get a resource to read the file.\n *\n * @param string $path\n * @return resource|null The path resource or null on failure.\n * @static\n */\n public static function readStream($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->readStream($path);\n }\n\n /**\n * Write a new file using a stream.\n *\n * @param string $path\n * @param resource $resource\n * @param array $options\n * @return bool\n * @static\n */\n public static function writeStream($path, $resource, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->writeStream($path, $resource, $options);\n }\n\n /**\n * Get the URL for the file at the given path.\n *\n * @param string $path\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function url($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->url($path);\n }\n\n /**\n * Get a temporary upload URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return array\n * @throws \\RuntimeException\n * @static\n */\n public static function temporaryUploadUrl($path, $expiration, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUploadUrl($path, $expiration, $options);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function files($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->files($directory, $recursive);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allFiles($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allFiles($directory);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function directories($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directories($directory, $recursive);\n }\n\n /**\n * Get all the directories within a given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allDirectories($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allDirectories($directory);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function makeDirectory($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->makeDirectory($path);\n }\n\n /**\n * Recursively delete a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->deleteDirectory($directory);\n }\n\n /**\n * Get the Flysystem driver.\n *\n * @return \\League\\Flysystem\\FilesystemOperator\n * @static\n */\n public static function getDriver()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getDriver();\n }\n\n /**\n * Get the Flysystem adapter.\n *\n * @return \\League\\Flysystem\\FilesystemAdapter\n * @static\n */\n public static function getAdapter()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getAdapter();\n }\n\n /**\n * Get the configuration values.\n *\n * @return array\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getConfig();\n }\n\n /**\n * Define a custom callback that generates file download responses.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function serveUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->serveUsing($callback);\n }\n\n /**\n * Define a custom temporary URL builder callback.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function buildTemporaryUrlsUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->buildTemporaryUrlsUsing($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n return \\Illuminate\\Filesystem\\LocalFilesystemAdapter::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\UrlGenerator\n */\n class URL {\n /**\n * Get the full URL for the current request.\n *\n * @return string\n * @static\n */\n public static function full()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->full();\n }\n\n /**\n * Get the current URL for the request.\n *\n * @return string\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->current();\n }\n\n /**\n * Get the URL for the previous request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previous($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previous($fallback);\n }\n\n /**\n * Get the previous path info for the request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previousPath($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previousPath($fallback);\n }\n\n /**\n * Generate an absolute URL to the given path.\n *\n * @param string $path\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function to($path, $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->to($path, $extra, $secure);\n }\n\n /**\n * Generate an absolute URL with the given query parameters.\n *\n * @param string $path\n * @param array $query\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function query($path, $query = [], $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->query($path, $query, $extra, $secure);\n }\n\n /**\n * Generate a secure, absolute URL to the given path.\n *\n * @param string $path\n * @param array $parameters\n * @return string\n * @static\n */\n public static function secure($path, $parameters = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secure($path, $parameters);\n }\n\n /**\n * Generate the URL to an application asset.\n *\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function asset($path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->asset($path, $secure);\n }\n\n /**\n * Generate the URL to a secure asset.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function secureAsset($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secureAsset($path);\n }\n\n /**\n * Generate the URL to an asset from a custom root domain such as CDN, etc.\n *\n * @param string $root\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function assetFrom($root, $path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->assetFrom($root, $path, $secure);\n }\n\n /**\n * Get the default scheme for a raw URL.\n *\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function formatScheme($secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatScheme($secure);\n }\n\n /**\n * Create a signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signedRoute($name, $parameters, $expiration, $absolute);\n }\n\n /**\n * Create a temporary signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param \\DateTimeInterface|\\DateInterval|int $expiration\n * @param array $parameters\n * @param bool $absolute\n * @return string\n * @static\n */\n public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute);\n }\n\n /**\n * Determine if the given request has a valid signature.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the given request has a valid signature for a relative URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidRelativeSignature($request, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidRelativeSignature($request, $ignoreQuery);\n }\n\n /**\n * Determine if the signature from the given request matches the URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the expires timestamp from the given request is not from the past.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return bool\n * @static\n */\n public static function signatureHasNotExpired($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signatureHasNotExpired($request);\n }\n\n /**\n * Get the URL to a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Symfony\\Component\\Routing\\Exception\\RouteNotFoundException|\\InvalidArgumentException\n * @static\n */\n public static function route($name, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->route($name, $parameters, $absolute);\n }\n\n /**\n * Get the URL for a given route instance.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Illuminate\\Routing\\Exceptions\\UrlGenerationException\n * @static\n */\n public static function toRoute($route, $parameters, $absolute)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->toRoute($route, $parameters, $absolute);\n }\n\n /**\n * Get the URL to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function action($action, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->action($action, $parameters, $absolute);\n }\n\n /**\n * Format the array of URL parameters.\n *\n * @param mixed $parameters\n * @return array\n * @static\n */\n public static function formatParameters($parameters)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatParameters($parameters);\n }\n\n /**\n * Get the base URL for the request.\n *\n * @param string $scheme\n * @param string|null $root\n * @return string\n * @static\n */\n public static function formatRoot($scheme, $root = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatRoot($scheme, $root);\n }\n\n /**\n * Format the given URL segments into a single URL.\n *\n * @param string $root\n * @param string $path\n * @param \\Illuminate\\Routing\\Route|null $route\n * @return string\n * @static\n */\n public static function format($root, $path, $route = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->format($root, $path, $route);\n }\n\n /**\n * Determine if the given path is a valid URL.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isValidUrl($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->isValidUrl($path);\n }\n\n /**\n * Set the default named parameters used by the URL generator.\n *\n * @param array $defaults\n * @return void\n * @static\n */\n public static function defaults($defaults)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->defaults($defaults);\n }\n\n /**\n * Get the default named parameters used by the URL generator.\n *\n * @return array\n * @static\n */\n public static function getDefaultParameters()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getDefaultParameters();\n }\n\n /**\n * Force the scheme for URLs.\n *\n * @param string|null $scheme\n * @return void\n * @static\n */\n public static function forceScheme($scheme)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceScheme($scheme);\n }\n\n /**\n * Force the use of the HTTPS scheme for all generated URLs.\n *\n * @param bool $force\n * @return void\n * @static\n */\n public static function forceHttps($force = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceHttps($force);\n }\n\n /**\n * Set the URL origin for all generated URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useOrigin($root);\n }\n\n /**\n * Set the forced root URL.\n *\n * @param string|null $root\n * @return void\n * @deprecated Use useOrigin\n * @static\n */\n public static function forceRootUrl($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceRootUrl($root);\n }\n\n /**\n * Set the URL origin for all generated asset URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useAssetOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useAssetOrigin($root);\n }\n\n /**\n * Set a callback to be used to format the host of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatHostUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatHostUsing($callback);\n }\n\n /**\n * Set a callback to be used to format the path of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatPathUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatPathUsing($callback);\n }\n\n /**\n * Get the path formatter being used by the URL generator.\n *\n * @return \\Closure\n * @static\n */\n public static function pathFormatter()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->pathFormatter();\n }\n\n /**\n * Get the request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->setRequest($request);\n }\n\n /**\n * Set the route collection.\n *\n * @param \\Illuminate\\Routing\\RouteCollectionInterface $routes\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRoutes($routes);\n }\n\n /**\n * Set the session resolver for the generator.\n *\n * @param callable $sessionResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setSessionResolver($sessionResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setSessionResolver($sessionResolver);\n }\n\n /**\n * Set the encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setKeyResolver($keyResolver);\n }\n\n /**\n * Clone a new instance of the URL generator with a different encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function withKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->withKeyResolver($keyResolver);\n }\n\n /**\n * Set the callback that should be used to attempt to resolve missing named routes.\n *\n * @param callable $missingNamedRouteResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver);\n }\n\n /**\n * Get the root controller namespace.\n *\n * @return string\n * @static\n */\n public static function getRootControllerNamespace()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRootControllerNamespace();\n }\n\n /**\n * Set the root controller namespace.\n *\n * @param string $rootNamespace\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRootControllerNamespace($rootNamespace)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRootControllerNamespace($rootNamespace);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\UrlGenerator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\UrlGenerator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\UrlGenerator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\UrlGenerator::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Validation\\Factory\n */\n class Validator {\n /**\n * Create a new Validator instance.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return \\Illuminate\\Validation\\Validator\n * @static\n */\n public static function make($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->make($data, $rules, $messages, $attributes);\n }\n\n /**\n * Validate the given data against the provided rules.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return array\n * @throws \\Illuminate\\Validation\\ValidationException\n * @static\n */\n public static function validate($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->validate($data, $rules, $messages, $attributes);\n }\n\n /**\n * Register a custom validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extend($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extend($rule, $extension, $message);\n }\n\n /**\n * Register a custom implicit validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendImplicit($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendImplicit($rule, $extension, $message);\n }\n\n /**\n * Register a custom dependent validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendDependent($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendDependent($rule, $extension, $message);\n }\n\n /**\n * Register a custom validator message replacer.\n *\n * @param string $rule\n * @param \\Closure|string $replacer\n * @return void\n * @static\n */\n public static function replacer($rule, $replacer)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->replacer($rule, $replacer);\n }\n\n /**\n * Indicate that unvalidated array keys should be included in validated data when the parent array is validated.\n *\n * @return void\n * @static\n */\n public static function includeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->includeUnvalidatedArrayKeys();\n }\n\n /**\n * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated.\n *\n * @return void\n * @static\n */\n public static function excludeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->excludeUnvalidatedArrayKeys();\n }\n\n /**\n * Set the Validator instance resolver.\n *\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function resolver($resolver)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->resolver($resolver);\n }\n\n /**\n * Get the Translator implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Translator\n * @static\n */\n public static function getTranslator()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getTranslator();\n }\n\n /**\n * Get the Presence Verifier implementation.\n *\n * @return \\Illuminate\\Validation\\PresenceVerifierInterface\n * @static\n */\n public static function getPresenceVerifier()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getPresenceVerifier();\n }\n\n /**\n * Set the Presence Verifier implementation.\n *\n * @param \\Illuminate\\Validation\\PresenceVerifierInterface $presenceVerifier\n * @return void\n * @static\n */\n public static function setPresenceVerifier($presenceVerifier)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->setPresenceVerifier($presenceVerifier);\n }\n\n /**\n * Get the container instance used by the validation factory.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container|null\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the validation factory.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Validation\\Factory\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Factory\n */\n class View {\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $path\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function file($path, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->file($path, $data, $mergeData);\n }\n\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function make($view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->make($view, $data, $mergeData);\n }\n\n /**\n * Get the first view that actually exists from the given list.\n *\n * @param array $views\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function first($views, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->first($views, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderWhen($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderWhen($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on the negation of a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderUnless($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderUnless($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered contents of a partial from a loop.\n *\n * @param string $view\n * @param array $data\n * @param string $iterator\n * @param string $empty\n * @return string\n * @static\n */\n public static function renderEach($view, $data, $iterator, $empty = 'raw|')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderEach($view, $data, $iterator, $empty);\n }\n\n /**\n * Determine if a given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function exists($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->exists($view);\n }\n\n /**\n * Get the appropriate view engine for the given path.\n *\n * @param string $path\n * @return \\Illuminate\\Contracts\\View\\Engine\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function getEngineFromPath($path)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineFromPath($path);\n }\n\n /**\n * Add a piece of shared data to the environment.\n *\n * @param array|string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function share($key, $value = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->share($key, $value);\n }\n\n /**\n * Increment the rendering counter.\n *\n * @return void\n * @static\n */\n public static function incrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementRender();\n }\n\n /**\n * Decrement the rendering counter.\n *\n * @return void\n * @static\n */\n public static function decrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->decrementRender();\n }\n\n /**\n * Check if there are no active render operations.\n *\n * @return bool\n * @static\n */\n public static function doneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->doneRendering();\n }\n\n /**\n * Determine if the given once token has been rendered.\n *\n * @param string $id\n * @return bool\n * @static\n */\n public static function hasRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasRenderedOnce($id);\n }\n\n /**\n * Mark the given once token as having been rendered.\n *\n * @param string $id\n * @return void\n * @static\n */\n public static function markAsRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->markAsRenderedOnce($id);\n }\n\n /**\n * Add a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function addLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLocation($location);\n }\n\n /**\n * Prepend a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function prependLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->prependLocation($location);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function addNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->addNamespace($namespace, $hints);\n }\n\n /**\n * Prepend a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function prependNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->prependNamespace($namespace, $hints);\n }\n\n /**\n * Replace the namespace hints for the given namespace.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function replaceNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->replaceNamespace($namespace, $hints);\n }\n\n /**\n * Register a valid view extension and its engine.\n *\n * @param string $extension\n * @param string $engine\n * @param \\Closure|null $resolver\n * @return void\n * @static\n */\n public static function addExtension($extension, $engine, $resolver = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addExtension($extension, $engine, $resolver);\n }\n\n /**\n * Flush all of the factory state like sections and stacks.\n *\n * @return void\n * @static\n */\n public static function flushState()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushState();\n }\n\n /**\n * Flush all of the section contents if done rendering.\n *\n * @return void\n * @static\n */\n public static function flushStateIfDoneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStateIfDoneRendering();\n }\n\n /**\n * Get the extension to engine bindings.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Get the engine resolver instance.\n *\n * @return \\Illuminate\\View\\Engines\\EngineResolver\n * @static\n */\n public static function getEngineResolver()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineResolver();\n }\n\n /**\n * Get the view finder instance.\n *\n * @return \\Illuminate\\View\\ViewFinderInterface\n * @static\n */\n public static function getFinder()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFinder();\n }\n\n /**\n * Set the view finder instance.\n *\n * @param \\Illuminate\\View\\ViewFinderInterface $finder\n * @return void\n * @static\n */\n public static function setFinder($finder)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setFinder($finder);\n }\n\n /**\n * Flush the cache of views located by the finder.\n *\n * @return void\n * @static\n */\n public static function flushFinderCache()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFinderCache();\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the IoC container instance.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setContainer($container);\n }\n\n /**\n * Get an item from the shared data.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function shared($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->shared($key, $default);\n }\n\n /**\n * Get all of the shared data for the environment.\n *\n * @return array\n * @static\n */\n public static function getShared()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getShared();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\View\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\View\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\View\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\View\\Factory::flushMacros();\n }\n\n /**\n * Start a component rendering process.\n *\n * @param \\Illuminate\\Contracts\\View\\View|\\Illuminate\\Contracts\\Support\\Htmlable|\\Closure|string $view\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponent($view, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponent($view, $data);\n }\n\n /**\n * Get the first view that actually exists from the given list, and start a component.\n *\n * @param array $names\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponentFirst($names, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponentFirst($names, $data);\n }\n\n /**\n * Render the current component.\n *\n * @return string\n * @static\n */\n public static function renderComponent()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderComponent();\n }\n\n /**\n * Get an item from the component data that exists above the current component.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getConsumableComponentData($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getConsumableComponentData($key, $default);\n }\n\n /**\n * Start the slot rendering process.\n *\n * @param string $name\n * @param string|null $content\n * @param array $attributes\n * @return void\n * @static\n */\n public static function slot($name, $content = null, $attributes = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->slot($name, $content, $attributes);\n }\n\n /**\n * Save the slot content for rendering.\n *\n * @return void\n * @static\n */\n public static function endSlot()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->endSlot();\n }\n\n /**\n * Register a view creator event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function creator($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->creator($views, $callback);\n }\n\n /**\n * Register multiple view composers via an array.\n *\n * @param array $composers\n * @return array\n * @static\n */\n public static function composers($composers)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composers($composers);\n }\n\n /**\n * Register a view composer event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function composer($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composer($views, $callback);\n }\n\n /**\n * Call the composer for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callComposer($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callComposer($view);\n }\n\n /**\n * Call the creator for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callCreator($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callCreator($view);\n }\n\n /**\n * Start injecting content into a fragment.\n *\n * @param string $fragment\n * @return void\n * @static\n */\n public static function startFragment($fragment)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startFragment($fragment);\n }\n\n /**\n * Stop injecting content into a fragment.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopFragment()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopFragment();\n }\n\n /**\n * Get the contents of a fragment.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getFragment($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragment($name, $default);\n }\n\n /**\n * Get the entire array of rendered fragments.\n *\n * @return array\n * @static\n */\n public static function getFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragments();\n }\n\n /**\n * Flush all of the fragments.\n *\n * @return void\n * @static\n */\n public static function flushFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFragments();\n }\n\n /**\n * Start injecting content into a section.\n *\n * @param string $section\n * @param string|null $content\n * @return void\n * @static\n */\n public static function startSection($section, $content = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startSection($section, $content);\n }\n\n /**\n * Inject inline content into a section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function inject($section, $content)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->inject($section, $content);\n }\n\n /**\n * Stop injecting content into a section and return its contents.\n *\n * @return string\n * @static\n */\n public static function yieldSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldSection();\n }\n\n /**\n * Stop injecting content into a section.\n *\n * @param bool $overwrite\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopSection($overwrite = false)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopSection($overwrite);\n }\n\n /**\n * Stop injecting content into a section and append it.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function appendSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->appendSection();\n }\n\n /**\n * Get the string contents of a section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldContent($section, $default);\n }\n\n /**\n * Get the parent placeholder for the current request.\n *\n * @param string $section\n * @return string\n * @static\n */\n public static function parentPlaceholder($section = '')\n {\n return \\Illuminate\\View\\Factory::parentPlaceholder($section);\n }\n\n /**\n * Check if section exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasSection($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasSection($name);\n }\n\n /**\n * Check if section does not exist.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function sectionMissing($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->sectionMissing($name);\n }\n\n /**\n * Get the contents of a section.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getSection($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSection($name, $default);\n }\n\n /**\n * Get the entire array of sections.\n *\n * @return array\n * @static\n */\n public static function getSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSections();\n }\n\n /**\n * Flush all of the sections.\n *\n * @return void\n * @static\n */\n public static function flushSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushSections();\n }\n\n /**\n * Add new loop to the stack.\n *\n * @param \\Countable|array $data\n * @return void\n * @static\n */\n public static function addLoop($data)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLoop($data);\n }\n\n /**\n * Increment the top loop's indices.\n *\n * @return void\n * @static\n */\n public static function incrementLoopIndices()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementLoopIndices();\n }\n\n /**\n * Pop a loop from the top of the loop stack.\n *\n * @return void\n * @static\n */\n public static function popLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->popLoop();\n }\n\n /**\n * Get an instance of the last loop in the stack.\n *\n * @return \\stdClass|null\n * @static\n */\n public static function getLastLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLastLoop();\n }\n\n /**\n * Get the entire loop stack.\n *\n * @return array\n * @static\n */\n public static function getLoopStack()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLoopStack();\n }\n\n /**\n * Start injecting content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPush($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPush($section, $content);\n }\n\n /**\n * Stop injecting content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPush()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPush();\n }\n\n /**\n * Start prepending content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPrepend($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPrepend($section, $content);\n }\n\n /**\n * Stop prepending content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPrepend()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPrepend();\n }\n\n /**\n * Get the string contents of a push section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldPushContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldPushContent($section, $default);\n }\n\n /**\n * Flush all of the stacks.\n *\n * @return void\n * @static\n */\n public static function flushStacks()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStacks();\n }\n\n /**\n * Start a translation block.\n *\n * @param array $replacements\n * @return void\n * @static\n */\n public static function startTranslation($replacements = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startTranslation($replacements);\n }\n\n /**\n * Render the current translation.\n *\n * @return string\n * @static\n */\n public static function renderTranslation()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderTranslation();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Vite\n */\n class Vite {\n /**\n * Get the preloaded assets.\n *\n * @return array\n * @static\n */\n public static function preloadedAssets()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->preloadedAssets();\n }\n\n /**\n * Get the Content Security Policy nonce applied to all generated tags.\n *\n * @return string|null\n * @static\n */\n public static function cspNonce()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->cspNonce();\n }\n\n /**\n * Generate or set a Content Security Policy nonce to apply to all generated tags.\n *\n * @param string|null $nonce\n * @return string\n * @static\n */\n public static function useCspNonce($nonce = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useCspNonce($nonce);\n }\n\n /**\n * Use the given key to detect integrity hashes in the manifest.\n *\n * @param string|false $key\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useIntegrityKey($key)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useIntegrityKey($key);\n }\n\n /**\n * Set the Vite entry points.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function withEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->withEntryPoints($entryPoints);\n }\n\n /**\n * Merge additional Vite entry points with the current set.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function mergeEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->mergeEntryPoints($entryPoints);\n }\n\n /**\n * Set the filename for the manifest file.\n *\n * @param string $filename\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useManifestFilename($filename)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useManifestFilename($filename);\n }\n\n /**\n * Resolve asset paths using the provided resolver.\n *\n * @param callable|null $resolver\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function createAssetPathsUsing($resolver)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->createAssetPathsUsing($resolver);\n }\n\n /**\n * Get the Vite \"hot\" file path.\n *\n * @return string\n * @static\n */\n public static function hotFile()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->hotFile();\n }\n\n /**\n * Set the Vite \"hot\" file path.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useHotFile($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useHotFile($path);\n }\n\n /**\n * Set the Vite build directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useBuildDirectory($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useBuildDirectory($path);\n }\n\n /**\n * Use the given callback to resolve attributes for script tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useScriptTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useScriptTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for style tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useStyleTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useStyleTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for preload tags.\n *\n * @param (callable(string, string, ?array, ?array): (array|false))|array|false $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePreloadTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePreloadTagAttributes($attributes);\n }\n\n /**\n * Eagerly prefetch assets.\n *\n * @param int|null $concurrency\n * @param string $event\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function prefetch($concurrency = null, $event = 'load')\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->prefetch($concurrency, $event);\n }\n\n /**\n * Use the \"waterfall\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useWaterfallPrefetching($concurrency = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useWaterfallPrefetching($concurrency);\n }\n\n /**\n * Use the \"aggressive\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useAggressivePrefetching()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useAggressivePrefetching();\n }\n\n /**\n * Set the prefetching strategy.\n *\n * @param 'waterfall'|'aggressive'|null $strategy\n * @param array $config\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePrefetchStrategy($strategy, $config = [])\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePrefetchStrategy($strategy, $config);\n }\n\n /**\n * Generate React refresh runtime script.\n *\n * @return \\Illuminate\\Support\\HtmlString|void\n * @static\n */\n public static function reactRefresh()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->reactRefresh();\n }\n\n /**\n * Get the URL for an asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @static\n */\n public static function asset($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->asset($asset, $buildDirectory);\n }\n\n /**\n * Get the content of a given asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @throws \\Illuminate\\Foundation\\ViteException\n * @static\n */\n public static function content($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->content($asset, $buildDirectory);\n }\n\n /**\n * Get a unique hash representing the current manifest, or null if there is no manifest.\n *\n * @param string|null $buildDirectory\n * @return string|null\n * @static\n */\n public static function manifestHash($buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->manifestHash($buildDirectory);\n }\n\n /**\n * Determine if the HMR server is running.\n *\n * @return bool\n * @static\n */\n public static function isRunningHot()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->isRunningHot();\n }\n\n /**\n * Get the Vite tag content as a string of HTML.\n *\n * @return string\n * @static\n */\n public static function toHtml()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->toHtml();\n }\n\n /**\n * Flush state.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n $instance->flush();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Vite::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Vite::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Vite::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Vite::flushMacros();\n }\n\n }\n /**\n * @method static void createSubscription(array|string $channels, \\Closure $callback, string $method = 'subscribe')\n * @method static \\Illuminate\\Redis\\Limiters\\ConcurrencyLimiterBuilder funnel(string $name)\n * @method static \\Illuminate\\Redis\\Limiters\\DurationLimiterBuilder throttle(string $name)\n * @method static mixed client()\n * @method static void subscribe(array|string $channels, \\Closure $callback)\n * @method static void psubscribe(array|string $channels, \\Closure $callback)\n * @method static mixed command(string $method, array $parameters = [])\n * @method static void listen(\\Closure $callback)\n * @method static string|null getName()\n * @method static \\Illuminate\\Redis\\Connections\\Connection setName(string $name)\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $events)\n * @method static void unsetEventDispatcher()\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @method static mixed macroCall(string $method, array $parameters)\n * @see \\Illuminate\\Redis\\RedisManager\n */\n class Redis {\n /**\n * Get a Redis connection by name.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Resolve the given connection by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array\n * @static\n */\n public static function connections()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connections();\n }\n\n /**\n * Enable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function enableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->enableEvents();\n }\n\n /**\n * Disable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function disableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->disableEvents();\n }\n\n /**\n * Set the default driver.\n *\n * @param string $driver\n * @return void\n * @static\n */\n public static function setDriver($driver)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->setDriver($driver);\n }\n\n /**\n * Disconnect the given connection and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Redis\\RedisManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n }\n }\n\nnamespace Aws\\Laravel {\n /**\n * Facade for the AWS service\n *\n */\n class AwsFacade {\n /**\n * Get a client by name using an array of constructor options.\n *\n * @param string $name Service name or namespace (e.g., DynamoDb, s3).\n * @param array $args Arguments to configure the client.\n * @return \\Aws\\AwsClientInterface\n * @throws \\InvalidArgumentException if any required options are missing or\n * the service is not supported.\n * @see Aws\\AwsClient::__construct for a list of available options for args.\n * @static\n */\n public static function createClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createClient($name, $args);\n }\n\n /**\n * @static\n */\n public static function createMultiRegionClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createMultiRegionClient($name, $args);\n }\n\n /**\n * Clone existing SDK instance with ability to pass an associative array\n * of extra client settings.\n *\n * @param array $args\n * @return self\n * @static\n */\n public static function copy($args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->copy($args);\n }\n\n /**\n * Determine the endpoint prefix from a client namespace.\n *\n * @param string $name Namespace name\n * @return string\n * @internal\n * @deprecated Use the `\\Aws\\manifest()` function instead.\n * @static\n */\n public static function getEndpointPrefix($name)\n {\n return \\Aws\\Sdk::getEndpointPrefix($name);\n }\n\n }\n }\n\nnamespace Laravolt\\Avatar {\n /**\n */\n class Facade {\n /**\n * @static\n */\n public static function setGenerator($generator)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setGenerator($generator);\n }\n\n /**\n * @static\n */\n public static function create($name)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->create($name);\n }\n\n /**\n * @static\n */\n public static function applyTheme($config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->applyTheme($config);\n }\n\n /**\n * @static\n */\n public static function addTheme($name, $config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->addTheme($name, $config);\n }\n\n /**\n * @static\n */\n public static function toBase64()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toBase64();\n }\n\n /**\n * @static\n */\n public static function save($path, $quality = 90)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->save($path, $quality);\n }\n\n /**\n * @static\n */\n public static function toSvg()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toSvg();\n }\n\n /**\n * @static\n */\n public static function toGravatar($param = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toGravatar($param);\n }\n\n /**\n * @static\n */\n public static function getInitial()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getInitial();\n }\n\n /**\n * @static\n */\n public static function getImageObject()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getImageObject();\n }\n\n /**\n * @static\n */\n public static function buildAvatar()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->buildAvatar();\n }\n\n /**\n * @static\n */\n public static function getAttribute($key)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getAttribute($key);\n }\n\n /**\n * Get background color\n *\n * @static\n */\n public static function getBackground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getBackground();\n }\n\n /**\n * Get foreground color\n *\n * @static\n */\n public static function getForeground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getForeground();\n }\n\n /**\n * Get shape\n *\n * @static\n */\n public static function getShape()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getShape();\n }\n\n /**\n * @static\n */\n public static function setTheme($theme)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setTheme($theme);\n }\n\n /**\n * @static\n */\n public static function setBackground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBackground($hex);\n }\n\n /**\n * @static\n */\n public static function setForeground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setForeground($hex);\n }\n\n /**\n * @static\n */\n public static function setDimension($width, $height = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setDimension($width, $height);\n }\n\n /**\n * @static\n */\n public static function setResponsive($responsive)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setResponsive($responsive);\n }\n\n /**\n * @static\n */\n public static function setFontSize($size)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontSize($size);\n }\n\n /**\n * @static\n */\n public static function setFontFamily($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontFamily($font);\n }\n\n /**\n * @static\n */\n public static function setBorder($size, $color, $radius = 0)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorder($size, $color, $radius);\n }\n\n /**\n * @static\n */\n public static function setBorderRadius($radius)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorderRadius($radius);\n }\n\n /**\n * @static\n */\n public static function setShape($shape)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setShape($shape);\n }\n\n /**\n * @static\n */\n public static function setChars($chars)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setChars($chars);\n }\n\n /**\n * @static\n */\n public static function setFont($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFont($font);\n }\n\n }\n }\n\nnamespace Spatie\\Fractal\\Facades {\n /**\n * @see \\Spatie\\Fractal\\Fractal\n */\n class Fractal extends \\Spatie\\Fractalistic\\Fractal {\n /**\n * @param null|mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return static\n * @static\n */\n public static function create($data = null, $transformer = null, $serializer = null)\n {\n return \\Spatie\\Fractal\\Fractal::create($data, $transformer, $serializer);\n }\n\n /**\n * @static\n */\n public static function respond($statusCode = 200, $headers = [], $options = 0)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->respond($statusCode, $headers, $options);\n }\n\n /**\n * Set the collection data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function collection($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->collection($data, $transformer, $resourceName);\n }\n\n /**\n * Set the item data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function item($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->item($data, $transformer, $resourceName);\n }\n\n /**\n * Set the primitive data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function primitive($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->primitive($data, $transformer, $resourceName);\n }\n\n /**\n * Set the data that must be transformed.\n *\n * @param string $dataType\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function data($dataType, $data, $transformer = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->data($dataType, $data, $transformer);\n }\n\n /**\n * Set the class or function that will perform the transform.\n *\n * @param string|callable|\\League\\Fractal\\TransformerAbstract|null $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function transformWith($transformer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->transformWith($transformer);\n }\n\n /**\n * Set the serializer to be used.\n *\n * @param string|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function serializeWith($serializer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->serializeWith($serializer);\n }\n\n /**\n * Set a Fractal paginator for the data.\n *\n * @param \\League\\Fractal\\Pagination\\PaginatorInterface $paginator\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function paginateWith($paginator)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->paginateWith($paginator);\n }\n\n /**\n * Set a Fractal cursor for the data.\n *\n * @param \\League\\Fractal\\Pagination\\CursorInterface $cursor\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withCursor($cursor)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withCursor($cursor);\n }\n\n /**\n * Specify the includes.\n *\n * @param array|string $includes Array or string of resources to include.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseIncludes($includes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseIncludes($includes);\n }\n\n /**\n * Specify the excludes.\n *\n * @param array|string $excludes Array or string of resources to exclude.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseExcludes($excludes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseExcludes($excludes);\n }\n\n /**\n * Specify the fieldsets to include in the response.\n *\n * @param array $fieldsets array with key = resourceName and value = fields to include\n * (array or comma separated string with field names)\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseFieldsets($fieldsets)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseFieldsets($fieldsets);\n }\n\n /**\n * Set the meta data.\n *\n * @param $array,...\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function addMeta()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->addMeta();\n }\n\n /**\n * Set the resource name, to replace 'data' as the root of the collection or item.\n *\n * @param string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withResourceName($resourceName)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withResourceName($resourceName);\n }\n\n /**\n * Upper limit to how many levels of included data are allowed.\n *\n * @param int $recursionLimit\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function limitRecursion($recursionLimit)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->limitRecursion($recursionLimit);\n }\n\n /**\n * Perform the transformation to json.\n *\n * @param int $options\n * @return string\n * @static\n */\n public static function toJson($options = 0)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toJson($options);\n }\n\n /**\n * Perform the transformation to array.\n *\n * @return array|null\n * @static\n */\n public static function toArray()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toArray();\n }\n\n /**\n * Create fractal data.\n *\n * @return \\League\\Fractal\\Scope\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @throws \\Spatie\\Fractalistic\\Exceptions\\NoTransformerSpecified\n * @static\n */\n public static function createData()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->createData();\n }\n\n /**\n * Get the resource class.\n *\n * @return string\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResourceClass()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceClass();\n }\n\n /**\n * Get the resource.\n *\n * @return \\League\\Fractal\\Resource\\ResourceInterface\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResource()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResource();\n }\n\n /**\n * Return the name of the resource.\n *\n * @return string|null\n * @static\n */\n public static function getResourceName()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceName();\n }\n\n /**\n * Convert the object into something JSON serializable.\n *\n * @return array|null\n * @static\n */\n public static function jsonSerialize()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->jsonSerialize();\n }\n\n /**\n * Get the transformer.\n *\n * @return string|callable|\\League\\Fractal\\TransformerAbstract|null\n * @static\n */\n public static function getTransformer()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getTransformer();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Spatie\\Fractal\\Fractal::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Spatie\\Fractal\\Fractal::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Spatie\\Fractal\\Fractal::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Spatie\\Fractal\\Fractal::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n }\n\nnamespace Laratrust {\n /**\n */\n class LaratrustFacade {\n /**\n * Checks if the current user has a role by its name.\n *\n * @static\n */\n public static function hasRole($role, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasRole($role, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n *\n * @static\n */\n public static function hasPermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasPermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n *\n * @static\n */\n public static function doesntHavePermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->doesntHavePermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n * \n * Alias to hasPermission.\n *\n * @static\n */\n public static function isAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n * \n * Alias to doesntHavePermission.\n *\n * @static\n */\n public static function isNotAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isNotAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a role or permission by its name.\n *\n * @param array|string $roles The role(s) needed.\n * @param array|string $permissions The permission(s) needed.\n * @param array $options The Options.\n * @return bool\n * @static\n */\n public static function ability($roles, $permissions, $team = null, $options = [])\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->ability($roles, $permissions, $team, $options);\n }\n\n }\n }\n\nnamespace Sentry\\Laravel {\n /**\n * @see \\Sentry\\State\\HubInterface\n */\n class Facade {\n /**\n * Gets the client bound to the top of the stack.\n *\n * @static\n */\n public static function getClient()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getClient();\n }\n\n /**\n * Gets the ID of the last captured event.\n *\n * @static\n */\n public static function getLastEventId()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getLastEventId();\n }\n\n /**\n * Creates a new scope to store context information that will be layered on\n * top of the current one. It is isolated, i.e. all breadcrumbs and context\n * information added to this scope will be removed once the scope ends. Be\n * sure to always remove this scope with {@see Hub::popScope} when the\n * operation finishes or throws.\n *\n * @static\n */\n public static function pushScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->pushScope();\n }\n\n /**\n * Removes a previously pushed scope from the stack. This restores the state\n * before the scope was pushed. All breadcrumbs and context information added\n * since the last call to {@see Hub::pushScope} are discarded.\n *\n * @static\n */\n public static function popScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->popScope();\n }\n\n /**\n * Creates a new scope with and executes the given operation within. The scope\n * is automatically removed once the operation finishes or throws.\n *\n * @param callable $callback The callback to be executed\n * @return mixed|void The callback's return value, upon successful execution\n * @psalm-template T\n * @psalm-param callable(Scope): T $callback\n * @psalm-return T\n * @static\n */\n public static function withScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->withScope($callback);\n }\n\n /**\n * Calls the given callback passing to it the current scope so that any\n * operation can be run within its context.\n *\n * @static\n */\n public static function configureScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->configureScope($callback);\n }\n\n /**\n * Binds the given client to the current scope.\n *\n * @static\n */\n public static function bindClient($client)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->bindClient($client);\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * @static\n */\n public static function captureMessage($message, $level = null, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureMessage($message, $level, $hint);\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * @static\n */\n public static function captureException($exception, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureException($exception, $hint);\n }\n\n /**\n * Captures a new event using the provided data.\n *\n * @static\n */\n public static function captureEvent($event, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureEvent($event, $hint);\n }\n\n /**\n * Captures an event that logs the last occurred error.\n *\n * @static\n */\n public static function captureLastError($hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureLastError($hint);\n }\n\n /**\n * Captures a check-in.\n *\n * @param int|float|null $duration\n * @param int|float|null $duration\n * @static\n */\n public static function captureCheckIn($slug, $status, $duration = null, $monitorConfig = null, $checkInId = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureCheckIn($slug, $status, $duration, $monitorConfig, $checkInId);\n }\n\n /**\n * Records a new breadcrumb which will be attached to future events. They\n * will be added to subsequent events to provide more context on user's\n * actions prior to an error or crash.\n *\n * @static\n */\n public static function addBreadcrumb($breadcrumb)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->addBreadcrumb($breadcrumb);\n }\n\n /**\n * Gets the integration whose FQCN matches the given one if it's available on the current client.\n *\n * @param string $className The FQCN of the integration\n * @psalm-template T of IntegrationInterface\n * @psalm-param class-string<T> $className\n * @psalm-return T|null\n * @static\n */\n public static function getIntegration($className)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getIntegration($className);\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual\n * tracing instrumentation.\n * \n * A tree structure can be built by adding child spans to the transaction, and\n * child spans to other spans. To start a new child span within the transaction\n * or any span, call the respective `startChild()` method.\n * \n * Every child span must be finished before the transaction is finished,\n * otherwise the unfinished spans are discarded.\n * \n * The transaction must be finished with a call to its `finish()` method, at\n * which point the transaction with all its finished child spans will be sent to\n * Sentry.\n *\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @static\n */\n public static function startTransaction($context, $customSamplingContext = [])\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->startTransaction($context, $customSamplingContext);\n }\n\n /**\n * Returns the transaction that is on the Hub.\n *\n * @static\n */\n public static function getTransaction()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getTransaction();\n }\n\n /**\n * Sets the span on the Hub.\n *\n * @static\n */\n public static function setSpan($span)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->setSpan($span);\n }\n\n /**\n * Returns the span that is on the Hub.\n *\n * @static\n */\n public static function getSpan()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getSpan();\n }\n\n }\n }\n\nnamespace League\\StatsD\\Laravel5\\Facade {\n /**\n * Facade for Statsd Package\n *\n * @author Aran Wilkinson <aran@aranw.net>\n * @package League\\StatsD\\Laravel5\\Facade\n */\n class StatsdFacade {\n /**\n * Singleton Reference\n *\n * @static\n */\n public static function instance($name = 'default')\n {\n return \\League\\StatsD\\Client::instance($name);\n }\n\n /**\n * Initialize Connection Details\n *\n * @param array $options Configuration options\n * @return \\League\\StatsD\\Client This instance\n * @throws ConfigurationException If port is invalid\n * @static\n */\n public static function configure($options = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->configure($options);\n }\n\n /**\n * @static\n */\n public static function getHost()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getHost();\n }\n\n /**\n * @static\n */\n public static function getPort()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getPort();\n }\n\n /**\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Get Last message sent to server\n *\n * @static\n */\n public static function getLastMessage()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getLastMessage();\n }\n\n /**\n * Increment a metric\n *\n * @param string|array $metrics Metric(s) to increment\n * @param int $delta Value to decrement the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function increment($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->increment($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Decrement a metric\n *\n * @param string|array $metrics Metric(s) to decrement\n * @param int $delta Value to increment the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function decrement($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->decrement($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Start timing the given metric\n *\n * @param string $metric Metric to time\n * @static\n */\n public static function startTiming($metric)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->startTiming($metric);\n }\n\n /**\n * End timing the given metric and record\n *\n * @param string $metric Metric to time\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function endTiming($metric, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->endTiming($metric, $tags);\n }\n\n /**\n * Timing\n *\n * @param string $metric Metric to track\n * @param float $time Time in milliseconds\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function timing($metric, $time, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timing($metric, $time, $tags);\n }\n\n /**\n * Send multiple timing metrics at once\n *\n * @param array $metrics key value map of metric name -> timing value\n * @throws ConnectionException\n * @static\n */\n public static function timings($metrics)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timings($metrics);\n }\n\n /**\n * Time a function\n *\n * @param string $metric Metric to time\n * @param callable $func Function to record\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function time($metric, $func, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->time($metric, $func, $tags);\n }\n\n /**\n * Gauges\n *\n * @param string $metric Metric to gauge\n * @param int|float $value Set the value of the gauge\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function gauge($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->gauge($metric, $value, $tags);\n }\n\n /**\n * Sets - count the number of unique values passed to a key\n *\n * @param string $metric\n * @param mixed $value\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function set($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->set($metric, $value, $tags);\n }\n\n }\n }\n\nnamespace Barryvdh\\Debugbar\\Facades {\n /**\n * @method static void alert(mixed $message)\n * @method static void critical(mixed $message)\n * @method static void debug(mixed $message)\n * @method static void emergency(mixed $message)\n * @method static void error(mixed $message)\n * @method static void info(mixed $message)\n * @method static void log(mixed $message)\n * @method static void notice(mixed $message)\n * @method static void warning(mixed $message)\n * @see \\Barryvdh\\Debugbar\\LaravelDebugbar\n */\n class Debugbar extends \\DebugBar\\DebugBar {\n /**\n * Returns the HTTP driver\n * \n * If no http driver where defined, a PhpHttpDriver is automatically created\n *\n * @return \\DebugBar\\HttpDriverInterface\n * @static\n */\n public static function getHttpDriver()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getHttpDriver();\n }\n\n /**\n * Enable the Debugbar and boot, if not already booted.\n *\n * @static\n */\n public static function enable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->enable();\n }\n\n /**\n * Boot the debugbar (add collectors, renderer and listener)\n *\n * @static\n */\n public static function boot()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->boot();\n }\n\n /**\n * @static\n */\n public static function shouldCollect($name, $default = false)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->shouldCollect($name, $default);\n }\n\n /**\n * Adds a data collector\n *\n * @param \\DebugBar\\DataCollector\\DataCollectorInterface $collector\n * @throws DebugBarException\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function addCollector($collector)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addCollector($collector);\n }\n\n /**\n * Handle silenced errors\n *\n * @param $level\n * @param $message\n * @param string $file\n * @param int $line\n * @param array $context\n * @throws \\ErrorException\n * @static\n */\n public static function handleError($level, $message, $file = '', $line = 0, $context = [])\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->handleError($level, $message, $file, $line, $context);\n }\n\n /**\n * Starts a measure\n *\n * @param string $name Internal name, used to stop the measure\n * @param string $label Public name\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function startMeasure($name, $label = null, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->startMeasure($name, $label, $collector, $group);\n }\n\n /**\n * Stops a measure\n *\n * @param string $name\n * @static\n */\n public static function stopMeasure($name)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stopMeasure($name);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Exception $e\n * @deprecated in favor of addThrowable\n * @static\n */\n public static function addException($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addException($e);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Throwable $e\n * @static\n */\n public static function addThrowable($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addThrowable($e);\n }\n\n /**\n * Returns a JavascriptRenderer for this instance\n *\n * @param string $baseUrl\n * @param string $basePath\n * @return \\Barryvdh\\Debugbar\\JavascriptRenderer\n * @static\n */\n public static function getJavascriptRenderer($baseUrl = null, $basePath = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getJavascriptRenderer($baseUrl, $basePath);\n }\n\n /**\n * Modify the response and inject the debugbar (or data in headers)\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function modifyResponse($request, $response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->modifyResponse($request, $response);\n }\n\n /**\n * Check if the Debugbar is enabled\n *\n * @return boolean\n * @static\n */\n public static function isEnabled()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isEnabled();\n }\n\n /**\n * Collects the data from the collectors\n *\n * @return array\n * @static\n */\n public static function collect()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collect();\n }\n\n /**\n * Injects the web debug toolbar into the given Response.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response A Response instance\n * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php\n * @static\n */\n public static function injectDebugbar($response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->injectDebugbar($response);\n }\n\n /**\n * Checks if there is stacked data in the session\n *\n * @return boolean\n * @static\n */\n public static function hasStackedData()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasStackedData();\n }\n\n /**\n * Returns the data stacked in the session\n *\n * @param boolean $delete Whether to delete the data in the session\n * @return array\n * @static\n */\n public static function getStackedData($delete = true)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackedData($delete);\n }\n\n /**\n * Disable the Debugbar\n *\n * @static\n */\n public static function disable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->disable();\n }\n\n /**\n * Adds a measure\n *\n * @param string $label\n * @param float $start\n * @param float $end\n * @param array|null $params\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function addMeasure($label, $start, $end, $params = [], $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMeasure($label, $start, $end, $params, $collector, $group);\n }\n\n /**\n * Utility function to measure the execution of a Closure\n *\n * @param string $label\n * @param \\Closure $closure\n * @param string|null $collector\n * @param string|null $group\n * @return mixed\n * @static\n */\n public static function measure($label, $closure, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->measure($label, $closure, $collector, $group);\n }\n\n /**\n * Collect data in a CLI request\n *\n * @return array\n * @static\n */\n public static function collectConsole()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collectConsole();\n }\n\n /**\n * Adds a message to the MessagesCollector\n * \n * A message can be anything from an object to a string\n *\n * @param mixed $message\n * @param string $label\n * @static\n */\n public static function addMessage($message, $label = 'info')\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMessage($message, $label);\n }\n\n /**\n * Checks if a data collector has been added\n *\n * @param string $name\n * @return boolean\n * @static\n */\n public static function hasCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasCollector($name);\n }\n\n /**\n * Returns a data collector\n *\n * @param string $name\n * @return \\DebugBar\\DataCollector\\DataCollectorInterface\n * @throws DebugBarException\n * @static\n */\n public static function getCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollector($name);\n }\n\n /**\n * Returns an array of all data collectors\n *\n * @return array[DataCollectorInterface]\n * @static\n */\n public static function getCollectors()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollectors();\n }\n\n /**\n * Sets the request id generator\n *\n * @param \\DebugBar\\RequestIdGeneratorInterface $generator\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setRequestIdGenerator($generator)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setRequestIdGenerator($generator);\n }\n\n /**\n * @return \\DebugBar\\RequestIdGeneratorInterface\n * @static\n */\n public static function getRequestIdGenerator()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getRequestIdGenerator();\n }\n\n /**\n * Returns the id of the current request\n *\n * @return string\n * @static\n */\n public static function getCurrentRequestId()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCurrentRequestId();\n }\n\n /**\n * Sets the storage backend to use to store the collected data\n *\n * @param \\DebugBar\\StorageInterface $storage\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStorage($storage = null)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStorage($storage);\n }\n\n /**\n * @return \\DebugBar\\StorageInterface\n * @static\n */\n public static function getStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStorage();\n }\n\n /**\n * Checks if the data will be persisted\n *\n * @return boolean\n * @static\n */\n public static function isDataPersisted()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isDataPersisted();\n }\n\n /**\n * Sets the HTTP driver\n *\n * @param \\DebugBar\\HttpDriverInterface $driver\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setHttpDriver($driver)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setHttpDriver($driver);\n }\n\n /**\n * Returns collected data\n * \n * Will collect the data if none have been collected yet\n *\n * @return array\n * @static\n */\n public static function getData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getData();\n }\n\n /**\n * Returns an array of HTTP headers containing the data\n *\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return array\n * @static\n */\n public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);\n }\n\n /**\n * Sends the data through the HTTP headers\n *\n * @param bool $useOpenHandler\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);\n }\n\n /**\n * Stacks the data in the session for later rendering\n *\n * @static\n */\n public static function stackData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stackData();\n }\n\n /**\n * Sets the key to use in the $_SESSION array\n *\n * @param string $ns\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackDataSessionNamespace($ns)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackDataSessionNamespace($ns);\n }\n\n /**\n * Returns the key used in the $_SESSION array\n *\n * @return string\n * @static\n */\n public static function getStackDataSessionNamespace()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackDataSessionNamespace();\n }\n\n /**\n * Sets whether to only use the session to store stacked data even\n * if a storage is enabled\n *\n * @param boolean $enabled\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackAlwaysUseSessionStorage($enabled = true)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackAlwaysUseSessionStorage($enabled);\n }\n\n /**\n * Checks if the session is always used to store stacked data\n * even if a storage is enabled\n *\n * @return boolean\n * @static\n */\n public static function isStackAlwaysUseSessionStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isStackAlwaysUseSessionStorage();\n }\n\n /**\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetSet($key, $value);\n }\n\n /**\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetUnset($key);\n }\n\n }\n }\n\nnamespace Barryvdh\\DomPDF\\Facade {\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n }\n\nnamespace ChaseConey\\LaravelDatadogHelper {\n /**\n * @see LaravelDatadogHelper\n * @see \\Datadog\\DogStatsd\n */\n class Datadog extends \\DataDog\\DogStatsd {\n /**\n * @static\n */\n public static function send($data, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->send($data, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Log timing information\n *\n * @param string $stat The metric to in log timing info for.\n * @param float $time The elapsed time (ms) to log\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function timing($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->timing($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * A convenient alias for the timing function when used with micro-timing\n *\n * @param string $stat The metric name\n * @param float $time The elapsed time to log, IN SECONDS\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function microtiming($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->microtiming($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Gauge\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function gauge($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->gauge($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Histogram\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function histogram($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->histogram($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Distribution\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function distribution($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->distribution($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Set\n *\n * @param string $stat The metric\n * @param string|float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function set($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->set($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Increments one or more stats counters\n *\n * @param string|array $stats The metric(s) to increment.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to increment by (default 1)\n * @return void\n * @static\n */\n public static function increment($stats, $sampleRate = 1.0, $tags = null, $value = 1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->increment($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Decrements one or more stats counters.\n *\n * @param string|array $stats The metric(s) to decrement.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to decrement by (default -1)\n * @return void\n * @static\n */\n public static function decrement($stats, $sampleRate = 1.0, $tags = null, $value = -1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->decrement($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Updates one or more stats counters by arbitrary amounts.\n *\n * @param string|array $stats The metric(s) to update. Should be either a string or array of metrics.\n * @param int $delta The amount to increment/decrement each metric by.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function updateStats($stats, $delta = 1, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->updateStats($stats, $delta, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * @deprecated service_check will be removed in future versions in favor of serviceCheck\n * \n * Send a custom service check status over UDP\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function service_check($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->service_check($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * Send a custom service check status over UDP\n *\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function serviceCheck($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->serviceCheck($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * @static\n */\n public static function report($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->report($message);\n }\n\n /**\n * @throws \\Exception|\\Throwable\n * @static\n */\n public static function flush($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->flush($message);\n }\n\n /**\n * Formats $vals array into event for submission to Datadog via UDP\n *\n * @param array $vals Optional values of the event. See\n * https://docs.datadoghq.com/api/?lang=bash#post-an-event for the valid keys\n * @return bool\n * @static\n */\n public static function event($title, $vals = [])\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->event($title, $vals);\n }\n\n /**\n * @static\n */\n public static function setMetricsPrefix($metricsPrefix)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->setMetricsPrefix($metricsPrefix);\n }\n\n }\n }\n\nnamespace Spatie\\LaravelIgnition\\Facades {\n /**\n * @see \\Spatie\\FlareClient\\Flare\n */\n class Flare {\n /**\n * @static\n */\n public static function make($apiKey = null, $contextDetector = null)\n {\n return \\Spatie\\FlareClient\\Flare::make($apiKey, $contextDetector);\n }\n\n /**\n * @static\n */\n public static function setApiToken($apiToken)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setApiToken($apiToken);\n }\n\n /**\n * @static\n */\n public static function apiTokenSet()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->apiTokenSet();\n }\n\n /**\n * @static\n */\n public static function setBaseUrl($baseUrl)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setBaseUrl($baseUrl);\n }\n\n /**\n * @static\n */\n public static function setStage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setStage($stage);\n }\n\n /**\n * @static\n */\n public static function sendReportsImmediately()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendReportsImmediately();\n }\n\n /**\n * @static\n */\n public static function determineVersionUsing($determineVersionCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->determineVersionUsing($determineVersionCallable);\n }\n\n /**\n * @static\n */\n public static function reportErrorLevels($reportErrorLevels)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportErrorLevels($reportErrorLevels);\n }\n\n /**\n * @static\n */\n public static function filterExceptionsUsing($filterExceptionsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterExceptionsUsing($filterExceptionsCallable);\n }\n\n /**\n * @static\n */\n public static function filterReportsUsing($filterReportsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterReportsUsing($filterReportsCallable);\n }\n\n /**\n * @param array<class-string<ArgumentReducer>|ArgumentReducer>|\\Spatie\\Backtrace\\Arguments\\ArgumentReducers|null $argumentReducers\n * @static\n */\n public static function argumentReducers($argumentReducers)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->argumentReducers($argumentReducers);\n }\n\n /**\n * @static\n */\n public static function withStackFrameArguments($withStackFrameArguments = true, $forcePHPIniSetting = false)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->withStackFrameArguments($withStackFrameArguments, $forcePHPIniSetting);\n }\n\n /**\n * @param class-string $exceptionClass\n * @static\n */\n public static function overrideGrouping($exceptionClass, $type = 'exception_message_and_class')\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->overrideGrouping($exceptionClass, $type);\n }\n\n /**\n * @static\n */\n public static function version()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->version();\n }\n\n /**\n * @return array<int, FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * @static\n */\n public static function setContextProviderDetector($contextDetector)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContextProviderDetector($contextDetector);\n }\n\n /**\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * @static\n */\n public static function registerFlareHandlers()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerFlareHandlers();\n }\n\n /**\n * @static\n */\n public static function registerExceptionHandler()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerExceptionHandler();\n }\n\n /**\n * @static\n */\n public static function registerErrorHandler($errorLevels = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerErrorHandler($errorLevels);\n }\n\n /**\n * @param \\Spatie\\FlareClient\\FlareMiddleware\\FlareMiddleware|array<FlareMiddleware>|class-string<FlareMiddleware>|callable $middleware\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function registerMiddleware($middleware)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerMiddleware($middleware);\n }\n\n /**\n * @return array<int,FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddlewares()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddlewares();\n }\n\n /**\n * @param string $name\n * @param string $messageLevel\n * @param array<int, mixed> $metaData\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function glow($name, $messageLevel = 'info', $metaData = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->glow($name, $messageLevel, $metaData);\n }\n\n /**\n * @static\n */\n public static function handleException($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleException($throwable);\n }\n\n /**\n * @return mixed\n * @static\n */\n public static function handleError($code, $message, $file = '', $line = 0)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleError($code, $message, $file, $line);\n }\n\n /**\n * @static\n */\n public static function applicationPath($applicationPath)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->applicationPath($applicationPath);\n }\n\n /**\n * @static\n */\n public static function report($throwable, $callback = null, $report = null, $handled = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->report($throwable, $callback, $report, $handled);\n }\n\n /**\n * @static\n */\n public static function reportHandled($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportHandled($throwable);\n }\n\n /**\n * @static\n */\n public static function reportMessage($message, $logLevel, $callback = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportMessage($message, $logLevel, $callback);\n }\n\n /**\n * @static\n */\n public static function sendTestReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendTestReport($throwable);\n }\n\n /**\n * @static\n */\n public static function reset()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reset();\n }\n\n /**\n * @static\n */\n public static function anonymizeIp()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->anonymizeIp();\n }\n\n /**\n * @param array<int, string> $fieldNames\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function censorRequestBodyFields($fieldNames)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->censorRequestBodyFields($fieldNames);\n }\n\n /**\n * @static\n */\n public static function createReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReport($throwable);\n }\n\n /**\n * @static\n */\n public static function createReportFromMessage($message, $logLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReportFromMessage($message, $logLevel);\n }\n\n /**\n * @static\n */\n public static function stage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->stage($stage);\n }\n\n /**\n * @static\n */\n public static function messageLevel($messageLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->messageLevel($messageLevel);\n }\n\n /**\n * @param string $groupName\n * @param mixed $default\n * @return array<int, mixed>\n * @static\n */\n public static function getGroup($groupName = 'context', $default = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getGroup($groupName, $default);\n }\n\n /**\n * @static\n */\n public static function context($key, $value)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->context($key, $value);\n }\n\n /**\n * @param string $groupName\n * @param array<string, mixed> $properties\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function group($groupName, $properties)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->group($groupName, $properties);\n }\n\n }\n }\n\nnamespace Vinkla\\Hashids\\Facades {\n /**\n * @method static string encode(mixed ...$numbers)\n * @method static array decode(string $hash)\n * @method static string encodeHex(string $str)\n * @method static string decodeHex(string $hash)\n */\n class Hashids extends \\GrahamCampbell\\Manager\\AbstractManager {\n /**\n * @static\n */\n public static function getFactory()\n {\n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getFactory();\n }\n\n /**\n * Get a connection instance.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function connection($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Reconnect to the given connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function reconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Disconnect from the given connection.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Get the configuration for a connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return array\n * @static\n */\n public static function getConnectionConfig($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnectionConfig($name);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string,object>\n * @static\n */\n public static function getConnections()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Get the config instance.\n *\n * @return \\Illuminate\\Contracts\\Config\\Repository\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConfig();\n }\n\n }\n }\n\nnamespace Illuminate\\Support {\n /**\n * @template TKey of array-key\n * @template-covariant TValue\n * @implements \\ArrayAccess<TKey, TValue>\n * @implements \\Illuminate\\Support\\Enumerable<TKey, TValue>\n */\n class Collection {\n /**\n * @see \\Barryvdh\\Debugbar\\ServiceProvider::register()\n * @static\n */\n public static function debug()\n {\n return \\Illuminate\\Support\\Collection::debug();\n }\n\n /**\n * @see \\Spatie\\Fractal\\FractalServiceProvider::packageBooted()\n * @param mixed $transformer\n * @static\n */\n public static function transformWith($transformer)\n {\n return \\Illuminate\\Support\\Collection::transformWith($transformer);\n }\n\n }\n }\n\nnamespace Illuminate\\Http {\n /**\n */\n class Request extends \\Symfony\\Component\\HttpFoundation\\Request {\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n }\n\nnamespace Illuminate\\Testing {\n /**\n * @template TResponse of \\Symfony\\Component\\HttpFoundation\\Response\n * @mixin \\Illuminate\\Http\\Response\n */\n class TestResponse {\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param array $structure\n * @static\n */\n public static function assertJsonTypedStructure($structure)\n {\n return \\Illuminate\\Testing\\TestResponse::assertJsonTypedStructure($structure);\n }\n\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param string $key\n * @static\n */\n public static function assertViewHasNull($key)\n {\n return \\Illuminate\\Testing\\TestResponse::assertViewHasNull($key);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Schema {\n /**\n */\n class Blueprint {\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function nestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::nestedSet();\n }\n\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function dropNestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::dropNestedSet();\n }\n\n }\n }\n\nnamespace Illuminate\\Validation {\n /**\n */\n class Rule {\n /**\n * @see \\Propaganistas\\LaravelPhone\\PhoneServiceProvider::registerValidator()\n * @static\n */\n public static function phone()\n {\n return \\Illuminate\\Validation\\Rule::phone();\n }\n\n }\n }\n\nnamespace Illuminate\\Console\\Scheduling {\n /**\n */\n class Event {\n /**\n * @see \\Sentry\\Laravel\\Features\\ConsoleSchedulingIntegration::register()\n * @param string|null $monitorSlug\n * @param int|null $checkInMargin\n * @param int|null $maxRuntime\n * @param bool $updateMonitorConfig\n * @param int|null $failureIssueThreshold\n * @param int|null $recoveryThreshold\n * @static\n */\n public static function sentryMonitor($monitorSlug = null, $checkInMargin = null, $maxRuntime = null, $updateMonitorConfig = true, $failureIssueThreshold = null, $recoveryThreshold = null)\n {\n return \\Illuminate\\Console\\Scheduling\\Event::sentryMonitor($monitorSlug, $checkInMargin, $maxRuntime, $updateMonitorConfig, $failureIssueThreshold, $recoveryThreshold);\n }\n\n }\n }\n\nnamespace Illuminate\\Http\\Client {\n /**\n * @mixin \\Illuminate\\Http\\Client\\PendingRequest\n */\n class Factory {\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n }\n\nnamespace Illuminate\\Routing {\n /**\n * @mixin \\Illuminate\\Routing\\RouteRegistrar\n */\n class Router {\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n */\n class ResponseFactory {\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Eloquent {\n /**\n * @template TKey of array-key\n * @template TModel of \\Illuminate\\Database\\Eloquent\\Model\n * @extends \\Illuminate\\Support\\Collection<TKey, TModel>\n */\n class Collection extends \\Illuminate\\Support\\Collection {\n }\n }\n\n\nnamespace {\n class App extends \\Illuminate\\Support\\Facades\\App {}\n class Arr extends \\Illuminate\\Support\\Arr {}\n class Artisan extends \\Illuminate\\Support\\Facades\\Artisan {}\n class Auth extends \\Illuminate\\Support\\Facades\\Auth {}\n class Benchmark extends \\Illuminate\\Support\\Benchmark {}\n class Blade extends \\Illuminate\\Support\\Facades\\Blade {}\n class Broadcast extends \\Illuminate\\Support\\Facades\\Broadcast {}\n class Bus extends \\Illuminate\\Support\\Facades\\Bus {}\n class Cache extends \\Illuminate\\Support\\Facades\\Cache {}\n class Concurrency extends \\Illuminate\\Support\\Facades\\Concurrency {}\n class Config extends \\Illuminate\\Support\\Facades\\Config {}\n class Context extends \\Illuminate\\Support\\Facades\\Context {}\n class Cookie extends \\Illuminate\\Support\\Facades\\Cookie {}\n class Crypt extends \\Illuminate\\Support\\Facades\\Crypt {}\n class DB extends \\Illuminate\\Support\\Facades\\DB {}\n\n /**\n * @template TCollection of static\n * @template TModel of static\n * @template TValue of static\n * @template TValue of static\n */\n class Eloquent extends \\Illuminate\\Database\\Eloquent\\Model { /**\n * Create and return an un-saved model instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function make($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->make($attributes);\n }\n\n /**\n * Register a new global scope.\n *\n * @param string $identifier\n * @param \\Illuminate\\Database\\Eloquent\\Scope|\\Closure $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withGlobalScope($identifier, $scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withGlobalScope($identifier, $scope);\n }\n\n /**\n * Remove a registered global scope.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Scope|string $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScope($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScope($scope);\n }\n\n /**\n * Remove all or passed registered global scopes.\n *\n * @param array|null $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopes($scopes = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopes($scopes);\n }\n\n /**\n * Remove all global scopes except the given scopes.\n *\n * @param array $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopesExcept($scopes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopesExcept($scopes);\n }\n\n /**\n * Get an array of global scopes that were removed from the query.\n *\n * @return array\n * @static\n */\n public static function removedScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->removedScopes();\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKey($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKey($id);\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKeyNot($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKeyNot($id);\n }\n\n /**\n * Add a basic where clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function where($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->where($column, $operator, $value, $boolean);\n }\n\n /**\n * Add a basic where clause to the query, and return the first result.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return TModel|null\n * @static\n */\n public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstWhere($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhere($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhere($column, $operator, $value);\n }\n\n /**\n * Add a basic \"where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNot($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNot($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNot($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNot($column, $operator, $value);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function latest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->latest($column);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function oldest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->oldest($column);\n }\n\n /**\n * Create a collection of models from plain arrays.\n *\n * @param array $items\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function hydrate($items)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hydrate($items);\n }\n\n /**\n * Insert into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return bool\n * @static\n */\n public static function fillAndInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsert($values);\n }\n\n /**\n * Insert (ignoring errors) into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return int\n * @static\n */\n public static function fillAndInsertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertOrIgnore($values);\n }\n\n /**\n * Insert a record into the database and get its ID after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<string, mixed> $values\n * @return int\n * @static\n */\n public static function fillAndInsertGetId($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertGetId($values);\n }\n\n /**\n * Enrich the given values by merging in the model's default attributes, adding timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return array<int, array<string, mixed>>\n * @static\n */\n public static function fillForInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillForInsert($values);\n }\n\n /**\n * Create a collection of models from a raw query.\n *\n * @param string $query\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function fromQuery($query, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fromQuery($query, $bindings);\n }\n\n /**\n * Find a model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel|null)\n * @static\n */\n public static function find($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->find($id, $columns);\n }\n\n /**\n * Find a sole model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function findSole($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findSole($id, $columns);\n }\n\n /**\n * Find multiple models by their primary keys.\n *\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $ids\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function findMany($ids, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findMany($ids, $columns);\n }\n\n /**\n * Find a model by its primary key or throw an exception.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function findOrFail($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrFail($id, $columns);\n }\n\n /**\n * Find a model by its primary key or return fresh model instance.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @static\n */\n public static function findOrNew($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrNew($id, $columns);\n }\n\n /**\n * Find a model by its primary key or call a callback.\n *\n * @template TValue\n * @param mixed $id\n * @param (\\Closure(): TValue)|list<string>|string $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return ( $id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>)\n * ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * : TModel|TValue\n * )\n * @static\n */\n public static function findOr($id, $columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOr($id, $columns, $callback);\n }\n\n /**\n * Get the first record matching the attributes or instantiate it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrNew($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrNew($attributes, $values);\n }\n\n /**\n * Get the first record matching the attributes. If the record is not found, create it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrCreate($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrCreate($attributes, $values);\n }\n\n /**\n * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function createOrFirst($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createOrFirst($attributes, $values);\n }\n\n /**\n * Create or update a record matching the attributes, and fill it with values.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function updateOrCreate($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->updateOrCreate($attributes, $values);\n }\n\n /**\n * Create a record matching the attributes, or increment the existing record.\n *\n * @param array $attributes\n * @param string $column\n * @param int|float $default\n * @param int|float $step\n * @param array $extra\n * @return TModel\n * @static\n */\n public static function incrementOrCreate($attributes, $column = 'count', $default = 1, $step = 1, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->incrementOrCreate($attributes, $column, $default, $step, $extra);\n }\n\n /**\n * Execute the query and get the first result or throw an exception.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function firstOrFail($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrFail($columns);\n }\n\n /**\n * Execute the query and get the first result or call a callback.\n *\n * @template TValue\n * @param (\\Closure(): TValue)|list<string> $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return TModel|TValue\n * @static\n */\n public static function firstOr($columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOr($columns, $callback);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function sole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->sole($columns);\n }\n\n /**\n * Get a single column's value from the first result of a query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @static\n */\n public static function value($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->value($column);\n }\n\n /**\n * Get a single column's value from the first result of a query if it's the sole matching record.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function soleValue($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->soleValue($column);\n }\n\n /**\n * Get a single column's value from the first result of the query or throw an exception.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function valueOrFail($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->valueOrFail($column);\n }\n\n /**\n * Execute the query as a \"select\" statement.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function get($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->get($columns);\n }\n\n /**\n * Get the hydrated models without eager loading.\n *\n * @param array|string $columns\n * @return array<int, TModel>\n * @static\n */\n public static function getModels($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModels($columns);\n }\n\n /**\n * Eager load the relationships for the models.\n *\n * @param array<int, TModel> $models\n * @return array<int, TModel>\n * @static\n */\n public static function eagerLoadRelations($models)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eagerLoadRelations($models);\n }\n\n /**\n * Register a closure to be invoked after the query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function afterQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->afterQuery($callback);\n }\n\n /**\n * Invoke the \"after query\" modification callbacks.\n *\n * @param mixed $result\n * @return mixed\n * @static\n */\n public static function applyAfterQueryCallbacks($result)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyAfterQueryCallbacks($result);\n }\n\n /**\n * Get a lazy collection for the given query.\n *\n * @return \\Illuminate\\Support\\LazyCollection<int, TModel>\n * @static\n */\n public static function cursor()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursor();\n }\n\n /**\n * Get a collection with the values of a given column.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param string|null $key\n * @return \\Illuminate\\Support\\Collection<array-key, mixed>\n * @static\n */\n public static function pluck($column, $key = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pluck($column, $key);\n }\n\n /**\n * Paginate the given query.\n *\n * @param int|null|\\Closure $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @param \\Closure|int|null $total\n * @return \\Illuminate\\Pagination\\LengthAwarePaginator\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null, $total = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->paginate($perPage, $columns, $pageName, $page, $total);\n }\n\n /**\n * Paginate the given query into a simple paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @return \\Illuminate\\Contracts\\Pagination\\Paginator\n * @static\n */\n public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->simplePaginate($perPage, $columns, $pageName, $page);\n }\n\n /**\n * Paginate the given query into a cursor paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $cursorName\n * @param \\Illuminate\\Pagination\\Cursor|string|null $cursor\n * @return \\Illuminate\\Contracts\\Pagination\\CursorPaginator\n * @static\n */\n public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor);\n }\n\n /**\n * Save a new model and return the instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function create($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->create($attributes);\n }\n\n /**\n * Save a new model and return the instance without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function createQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createQuietly($attributes);\n }\n\n /**\n * Save a new model and return the instance. Allow mass-assignment.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreate($attributes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreate($attributes);\n }\n\n /**\n * Save a new model instance with mass assignment without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreateQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreateQuietly($attributes);\n }\n\n /**\n * Insert new records or update the existing ones.\n *\n * @param array $values\n * @param array|string $uniqueBy\n * @param array|null $update\n * @return int\n * @static\n */\n public static function upsert($values, $uniqueBy, $update = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->upsert($values, $uniqueBy, $update);\n }\n\n /**\n * Register a replacement for the default delete function.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function onDelete($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n $instance->onDelete($callback);\n }\n\n /**\n * Call the given local model scopes.\n *\n * @param array|string $scopes\n * @return static|mixed\n * @static\n */\n public static function scopes($scopes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->scopes($scopes);\n }\n\n /**\n * Apply the scopes to the Eloquent builder instance and return it.\n *\n * @return static\n * @static\n */\n public static function applyScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyScopes();\n }\n\n /**\n * Prevent the specified relations from being eager loaded.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function without($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->without($relations);\n }\n\n /**\n * Set the relationships that should be eager loaded while removing any previously added eager loading specifications.\n *\n * @param array<array-key, array|(\\Closure(\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*,*,*>): mixed)|string>|string $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withOnly($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withOnly($relations);\n }\n\n /**\n * Create a new instance of the model being queried.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function newModelInstance($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->newModelInstance($attributes);\n }\n\n /**\n * Specify attributes that should be added to any new models created by this builder.\n * \n * The given key / value pairs will also be added as where conditions to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|array|string $attributes\n * @param mixed $value\n * @param bool $asConditions\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAttributes($attributes, $value = null, $asConditions = true)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAttributes($attributes, $value, $asConditions);\n }\n\n /**\n * Apply query-time casts to the model instance.\n *\n * @param array $casts\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCasts($casts)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCasts($casts);\n }\n\n /**\n * Execute the given Closure within a transaction savepoint if needed.\n *\n * @template TModelValue\n * @param \\Closure(): TModelValue $scope\n * @return TModelValue\n * @static\n */\n public static function withSavepointIfNeeded($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSavepointIfNeeded($scope);\n }\n\n /**\n * Get the underlying query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function getQuery()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getQuery();\n }\n\n /**\n * Set the underlying query builder instance.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setQuery($query)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setQuery($query);\n }\n\n /**\n * Get a base query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function toBase()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->toBase();\n }\n\n /**\n * Get the relationships being eagerly loaded.\n *\n * @return array\n * @static\n */\n public static function getEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getEagerLoads();\n }\n\n /**\n * Set the relationships being eagerly loaded.\n *\n * @param array $eagerLoad\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setEagerLoads($eagerLoad)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setEagerLoads($eagerLoad);\n }\n\n /**\n * Indicate that the given relationships should not be eagerly loaded.\n *\n * @param array $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoad($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoad($relations);\n }\n\n /**\n * Flush the relationships being eagerly loaded.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoads();\n }\n\n /**\n * Get the \"limit\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getLimit()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getLimit();\n }\n\n /**\n * Get the \"offset\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getOffset()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getOffset();\n }\n\n /**\n * Get the model instance being queried.\n *\n * @return TModel\n * @static\n */\n public static function getModel()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModel();\n }\n\n /**\n * Set a model instance for the model being queried.\n *\n * @template TModelNew of \\Illuminate\\Database\\Eloquent\\Model\n * @param TModelNew $model\n * @return static<TModelNew>\n * @static\n */\n public static function setModel($model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setModel($model);\n }\n\n /**\n * Get the given macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getMacro($name);\n }\n\n /**\n * Checks if a macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMacro($name);\n }\n\n /**\n * Get the given global macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::getGlobalMacro($name);\n }\n\n /**\n * Checks if a global macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::hasGlobalMacro($name);\n }\n\n /**\n * Clone the Eloquent query builder.\n *\n * @return static\n * @static\n */\n public static function clone()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->clone();\n }\n\n /**\n * Register a closure to be invoked on a clone.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function onClone($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->onClone($callback);\n }\n\n /**\n * Chunk the results of the query.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @return bool\n * @static\n */\n public static function chunk($count, $callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunk($count, $callback);\n }\n\n /**\n * Run a map over each item while chunking.\n *\n * @template TReturn\n * @param callable(TValue): TReturn $callback\n * @param int $count\n * @return \\Illuminate\\Support\\Collection<int, TReturn>\n * @static\n */\n public static function chunkMap($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkMap($callback, $count);\n }\n\n /**\n * Execute a callback over each item while chunking.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function each($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->each($callback, $count);\n }\n\n /**\n * Chunk the results of a query by comparing IDs.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkById($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkById($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in descending order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkByIdDesc($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkByIdDesc($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in a given order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @param bool $descending\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function orderedChunkById($count, $callback, $column = null, $alias = null, $descending = false)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orderedChunkById($count, $callback, $column, $alias, $descending);\n }\n\n /**\n * Execute a callback over each item while chunking by ID.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function eachById($callback, $count = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eachById($callback, $count, $column, $alias);\n }\n\n /**\n * Query lazily, by chunks of the given size.\n *\n * @param int $chunkSize\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazy($chunkSize = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazy($chunkSize);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyById($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyById($chunkSize, $column, $alias);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs in descending order.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyByIdDesc($chunkSize, $column, $alias);\n }\n\n /**\n * Execute the query and get the first result.\n *\n * @param array|string $columns\n * @return TValue|null\n * @static\n */\n public static function first($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->first($columns);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TValue\n * @throws \\Illuminate\\Database\\RecordsNotFoundException\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function baseSole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->baseSole($columns);\n }\n\n /**\n * Pass the query to a given callback and then return it.\n *\n * @param callable($this): mixed $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function tap($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->tap($callback);\n }\n\n /**\n * Pass the query to a given callback and return the result.\n *\n * @template TReturn\n * @param (callable($this): TReturn) $callback\n * @return (TReturn is null|void ? $this : TReturn)\n * @static\n */\n public static function pipe($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pipe($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->has($relation, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHas($relation, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHas($relation, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHave($relation, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHave($relation, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHave($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHave($relation);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n * \n * Also load the relationship with the same condition.\n *\n * @param string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHasMorph($relation, $types, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHasMorph($relation, $types, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHaveMorph($relation, $types, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHaveMorph($relation, $types)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHaveMorph($relation, $types);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a basic where clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic where clause to a relationship query and eager-load the relationship with the same conditions.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param \\Closure|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic count / exists condition to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a where clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or where\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a doesn't have clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or doesn't have\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a not morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNotMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphedTo($relation, $model);\n }\n\n /**\n * Add a not morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNotMorphedTo($relation, $model);\n }\n\n /**\n * Add a \"belongs to\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereBelongsTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"BelongsTo\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereBelongsTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereBelongsTo($related, $relationshipName);\n }\n\n /**\n * Add a \"belongs to many\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereAttachedTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereAttachedTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"belongs to many\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereAttachedTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereAttachedTo($related, $relationshipName);\n }\n\n /**\n * Add subselect queries to include an aggregate value for a relationship.\n *\n * @param mixed $relations\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string|null $function\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAggregate($relations, $column, $function = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAggregate($relations, $column, $function);\n }\n\n /**\n * Add subselect queries to count the relations.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCount($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCount($relations);\n }\n\n /**\n * Add subselect queries to include the max of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMax($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMax($relation, $column);\n }\n\n /**\n * Add subselect queries to include the min of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMin($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMin($relation, $column);\n }\n\n /**\n * Add subselect queries to include the sum of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withSum($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSum($relation, $column);\n }\n\n /**\n * Add subselect queries to include the average of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAvg($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAvg($relation, $column);\n }\n\n /**\n * Add subselect queries to include the existence of related models.\n *\n * @param string|array $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withExists($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withExists($relation);\n }\n\n /**\n * Merge the where constraints from another query to the current query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Builder<*> $from\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeConstraintsFrom($from)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->mergeConstraintsFrom($from);\n }\n\n /**\n * Set the columns to be selected.\n *\n * @param mixed $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function select($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->select($columns);\n }\n\n /**\n * Add a subselect expression to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function selectSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectSub($query, $as);\n }\n\n /**\n * Add a new \"raw\" select expression to the query.\n *\n * @param string $expression\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function selectRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectRaw($expression, $bindings);\n }\n\n /**\n * Makes \"from\" fetch from a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function fromSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromSub($query, $as);\n }\n\n /**\n * Add a raw from clause to the query.\n *\n * @param string $expression\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function fromRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromRaw($expression, $bindings);\n }\n\n /**\n * Add a new select column to the query.\n *\n * @param mixed $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addSelect($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addSelect($column);\n }\n\n /**\n * Force the query to only return distinct results.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function distinct()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->distinct();\n }\n\n /**\n * Set the table which the query is targeting.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function from($table, $as = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->from($table, $as);\n }\n\n /**\n * Add an index hint to suggest a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useIndex($index);\n }\n\n /**\n * Add an index hint to force a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forceIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forceIndex($index);\n }\n\n /**\n * Add an index hint to ignore a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function ignoreIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ignoreIndex($index);\n }\n\n /**\n * Add a join clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->join($table, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @param string $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinWhere($table, $first, $operator, $second, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinWhere($table, $first, $operator, $second, $type);\n }\n\n /**\n * Add a subquery join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a lateral join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinLateral($query, $as, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinLateral($query, $as, $type);\n }\n\n /**\n * Add a lateral left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinLateral($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinLateral($query, $as);\n }\n\n /**\n * Add a left join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a right join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"right join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery right join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a \"cross join\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoin($table, $first = null, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery cross join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoinSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoinSub($query, $as);\n }\n\n /**\n * Merge an array of where clauses and bindings.\n *\n * @param array $wheres\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeWheres($wheres, $bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeWheres($wheres, $bindings);\n }\n\n /**\n * Prepare the value and operator for a where clause.\n *\n * @param string $value\n * @param string $operator\n * @param bool $useDefault\n * @return array\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function prepareValueAndOperator($value, $operator, $useDefault = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->prepareValueAndOperator($value, $operator, $useDefault);\n }\n\n /**\n * Add a \"where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @param string|null $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereColumn($first, $operator, $second, $boolean);\n }\n\n /**\n * Add an \"or where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereColumn($first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereColumn($first, $operator, $second);\n }\n\n /**\n * Add a raw where clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $sql\n * @param mixed $bindings\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or where clause to the query.\n *\n * @param string $sql\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRaw($sql, $bindings);\n }\n\n /**\n * Add a \"where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereLike($column, $value, $caseSensitive = false, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereLike($column, $value, $caseSensitive, $boolean, $not);\n }\n\n /**\n * Add an \"or where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotLike($column, $value, $caseSensitive = false, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotLike($column, $value, $caseSensitive, $boolean);\n }\n\n /**\n * Add an \"or where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIn($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIn($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIn($column, $values);\n }\n\n /**\n * Add a \"where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotIn($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotIn($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotIn($column, $values);\n }\n\n /**\n * Add a \"where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerInRaw($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerInRaw($column, $values);\n }\n\n /**\n * Add a \"where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerNotInRaw($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerNotInRaw($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerNotInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerNotInRaw($column, $values);\n }\n\n /**\n * Add a \"where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNull($column);\n }\n\n /**\n * Add a \"where not null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotNull($columns, $boolean);\n }\n\n /**\n * Add a where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetweenColumns($column, $values, $boolean, $not);\n }\n\n /**\n * Add an or where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetween($column, $values);\n }\n\n /**\n * Add an or where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetweenColumns($column, $values);\n }\n\n /**\n * Add a where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetween($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetween($column, $values, $boolean);\n }\n\n /**\n * Add a where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetweenColumns($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetweenColumns($column, $values, $boolean);\n }\n\n /**\n * Add an or where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetween($column, $values);\n }\n\n /**\n * Add an or where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetweenColumns($column, $values);\n }\n\n /**\n * Add a where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueBetween($value, $columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueBetween($value, $columns, $boolean, $not);\n }\n\n /**\n * Add an or where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueBetween($value, $columns);\n }\n\n /**\n * Add a where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueNotBetween($value, $columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueNotBetween($value, $columns, $boolean);\n }\n\n /**\n * Add an or where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueNotBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueNotBetween($value, $columns);\n }\n\n /**\n * Add an \"or where not null\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotNull($column);\n }\n\n /**\n * Add a \"where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDate($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDate($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDate($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDate($column, $operator, $value);\n }\n\n /**\n * Add a \"where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTime($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTime($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTime($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTime($column, $operator, $value);\n }\n\n /**\n * Add a \"where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDay($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDay($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDay($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDay($column, $operator, $value);\n }\n\n /**\n * Add a \"where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMonth($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereMonth($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMonth($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereMonth($column, $operator, $value);\n }\n\n /**\n * Add a \"where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereYear($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereYear($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereYear($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereYear($column, $operator, $value);\n }\n\n /**\n * Add a nested where statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNested($callback, $boolean);\n }\n\n /**\n * Create a new query instance for nested where condition.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function forNestedWhere()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forNestedWhere();\n }\n\n /**\n * Add another query builder as a nested where to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedWhereQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedWhereQuery($query, $boolean);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereExists($callback, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereExists($callback, $boolean, $not);\n }\n\n /**\n * Add an or exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereExists($callback, $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereExists($callback, $not);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotExists($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotExists($callback, $boolean);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotExists($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotExists($callback);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addWhereExistsQuery($query, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addWhereExistsQuery($query, $boolean, $not);\n }\n\n /**\n * Adds a where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function whereRowValues($columns, $operator, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRowValues($columns, $operator, $values, $boolean);\n }\n\n /**\n * Adds an or where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRowValues($columns, $operator, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRowValues($columns, $operator, $values);\n }\n\n /**\n * Add a \"where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContains($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContains($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContains($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContains($column, $value);\n }\n\n /**\n * Add a \"where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContain($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContain($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContain($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContain($column, $value);\n }\n\n /**\n * Add a \"where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonOverlaps($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonOverlaps($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonOverlaps($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonOverlaps($column, $value);\n }\n\n /**\n * Add a \"where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntOverlap($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntOverlap($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntOverlap($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntOverlap($column, $value);\n }\n\n /**\n * Add a clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContainsKey($column, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContainsKey($column, $boolean, $not);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContainsKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContainsKey($column);\n }\n\n /**\n * Add a clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContainKey($column, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContainKey($column, $boolean);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContainKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContainKey($column);\n }\n\n /**\n * Add a \"where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonLength($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonLength($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonLength($column, $operator, $value);\n }\n\n /**\n * Handles dynamic \"where\" clauses to the query.\n *\n * @param string $method\n * @param array $parameters\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dynamicWhere($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dynamicWhere($method, $parameters);\n }\n\n /**\n * Add a \"where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFullText($columns, $value, $options = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFullText($columns, $value, $options, $boolean);\n }\n\n /**\n * Add a \"or where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFullText($columns, $value, $options = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFullText($columns, $value, $options);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAll($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAll($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAll($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAll($columns, $operator, $value);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAny($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAny($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAny($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAny($columns, $operator, $value);\n }\n\n /**\n * Add a \"where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNone($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNone($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNone($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNone($columns, $operator, $value);\n }\n\n /**\n * Add a \"group by\" clause to the query.\n *\n * @param array|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $groups\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupBy(...$groups)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupBy(...$groups);\n }\n\n /**\n * Add a raw groupBy clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupByRaw($sql, $bindings);\n }\n\n /**\n * Add a \"having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function having($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->having($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHaving($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHaving($column, $operator, $value);\n }\n\n /**\n * Add a nested having statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNested($callback, $boolean);\n }\n\n /**\n * Add another query builder as a nested having to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedHavingQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedHavingQuery($query, $boolean);\n }\n\n /**\n * Add a \"having null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or having null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNull($column);\n }\n\n /**\n * Add a \"having not null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNotNull($columns, $boolean);\n }\n\n /**\n * Add an \"or having not null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNotNull($column);\n }\n\n /**\n * Add a \"having between \" clause to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a raw having clause to the query.\n *\n * @param string $sql\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or having clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingRaw($sql, $bindings);\n }\n\n /**\n * Add an \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function orderBy($column, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderBy($column, $direction);\n }\n\n /**\n * Add a descending \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByDesc($column);\n }\n\n /**\n * Put the query's results in random order.\n *\n * @param string|int $seed\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function inRandomOrder($seed = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->inRandomOrder($seed);\n }\n\n /**\n * Add a raw \"order by\" clause to the query.\n *\n * @param string $sql\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByRaw($sql, $bindings);\n }\n\n /**\n * Alias to set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function skip($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->skip($value);\n }\n\n /**\n * Set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function offset($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->offset($value);\n }\n\n /**\n * Alias to set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function take($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->take($value);\n }\n\n /**\n * Set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function limit($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->limit($value);\n }\n\n /**\n * Add a \"group limit\" clause to the query.\n *\n * @param int $value\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupLimit($value, $column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupLimit($value, $column);\n }\n\n /**\n * Set the limit and offset for a given page.\n *\n * @param int $page\n * @param int $perPage\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPage($page, $perPage = 15)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPage($page, $perPage);\n }\n\n /**\n * Constrain the query to the previous \"page\" of results before a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageBeforeId($perPage, $lastId, $column);\n }\n\n /**\n * Constrain the query to the next \"page\" of results after a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageAfterId($perPage, $lastId, $column);\n }\n\n /**\n * Remove all existing orders and optionally add a new order.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorder($column = null, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorder($column, $direction);\n }\n\n /**\n * Add descending \"reorder\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorderDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorderDesc($column);\n }\n\n /**\n * Add a union statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @param bool $all\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function union($query, $all = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->union($query, $all);\n }\n\n /**\n * Add a union all statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function unionAll($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->unionAll($query);\n }\n\n /**\n * Lock the selected rows in the table.\n *\n * @param string|bool $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lock($value = true)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lock($value);\n }\n\n /**\n * Lock the selected rows in the table for updating.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lockForUpdate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lockForUpdate();\n }\n\n /**\n * Share lock the selected rows in the table.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function sharedLock()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sharedLock();\n }\n\n /**\n * Register a closure to be invoked before the query is executed.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function beforeQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->beforeQuery($callback);\n }\n\n /**\n * Invoke the \"before query\" modification callbacks.\n *\n * @return void\n * @static\n */\n public static function applyBeforeQueryCallbacks()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->applyBeforeQueryCallbacks();\n }\n\n /**\n * Get the SQL representation of the query.\n *\n * @return string\n * @static\n */\n public static function toSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toSql();\n }\n\n /**\n * Get the raw SQL representation of the query with embedded bindings.\n *\n * @return string\n * @static\n */\n public static function toRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toRawSql();\n }\n\n /**\n * Get a single expression value from the first result of a query.\n *\n * @return mixed\n * @static\n */\n public static function rawValue($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rawValue($expression, $bindings);\n }\n\n /**\n * Get the count of the total records for the paginator.\n *\n * @param array<string|\\Illuminate\\Contracts\\Database\\Query\\Expression> $columns\n * @return int<0, max>\n * @static\n */\n public static function getCountForPagination($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getCountForPagination($columns);\n }\n\n /**\n * Concatenate values of a given column as a string.\n *\n * @param string $column\n * @param string $glue\n * @return string\n * @static\n */\n public static function implode($column, $glue = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->implode($column, $glue);\n }\n\n /**\n * Determine if any rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function exists()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->exists();\n }\n\n /**\n * Determine if no rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function doesntExist()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExist();\n }\n\n /**\n * Execute the given callback if no rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function existsOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->existsOr($callback);\n }\n\n /**\n * Execute the given callback if rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function doesntExistOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExistOr($callback);\n }\n\n /**\n * Retrieve the \"count\" result of the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $columns\n * @return int<0, max>\n * @static\n */\n public static function count($columns = '*')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->count($columns);\n }\n\n /**\n * Retrieve the minimum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function min($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->min($column);\n }\n\n /**\n * Retrieve the maximum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function max($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->max($column);\n }\n\n /**\n * Retrieve the sum of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function sum($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sum($column);\n }\n\n /**\n * Retrieve the average of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function avg($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->avg($column);\n }\n\n /**\n * Alias for the \"avg\" method.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function average($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->average($column);\n }\n\n /**\n * Execute an aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return mixed\n * @static\n */\n public static function aggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->aggregate($function, $columns);\n }\n\n /**\n * Execute a numeric aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return float|int\n * @static\n */\n public static function numericAggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->numericAggregate($function, $columns);\n }\n\n /**\n * Insert new records into the database.\n *\n * @return bool\n * @static\n */\n public static function insert($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insert($values);\n }\n\n /**\n * Insert new records into the database while ignoring errors.\n *\n * @return int<0, max>\n * @static\n */\n public static function insertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnore($values);\n }\n\n /**\n * Insert a new record and get the value of the primary key.\n *\n * @param string|null $sequence\n * @return int\n * @static\n */\n public static function insertGetId($values, $sequence = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertGetId($values, $sequence);\n }\n\n /**\n * Insert new records into the table using a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertUsing($columns, $query);\n }\n\n /**\n * Insert new records into the table using a subquery while ignoring errors.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertOrIgnoreUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnoreUsing($columns, $query);\n }\n\n /**\n * Update records in a PostgreSQL database using the update from syntax.\n *\n * @return int\n * @static\n */\n public static function updateFrom($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateFrom($values);\n }\n\n /**\n * Insert or update a record matching the attributes, and fill it with values.\n *\n * @return bool\n * @static\n */\n public static function updateOrInsert($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateOrInsert($attributes, $values);\n }\n\n /**\n * Increment the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function incrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->incrementEach($columns, $extra);\n }\n\n /**\n * Decrement the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function decrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->decrementEach($columns, $extra);\n }\n\n /**\n * Run a truncate statement on the table.\n *\n * @return void\n * @static\n */\n public static function truncate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->truncate();\n }\n\n /**\n * Get all of the query builder's columns in a text-only array with all expressions evaluated.\n *\n * @return list<string>\n * @static\n */\n public static function getColumns()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getColumns();\n }\n\n /**\n * Create a raw database expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->raw($value);\n }\n\n /**\n * Get the current query value bindings in a flattened array.\n *\n * @return list<mixed>\n * @static\n */\n public static function getBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the raw array of bindings.\n *\n * @return \\Illuminate\\Database\\Query\\array{ select: list<mixed>,\n * from: list<mixed>,\n * join: list<mixed>,\n * where: list<mixed>,\n * groupBy: list<mixed>,\n * having: list<mixed>,\n * order: list<mixed>,\n * union: list<mixed>,\n * unionOrder: list<mixed>,\n * }\n * @static\n */\n public static function getRawBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getRawBindings();\n }\n\n /**\n * Set the bindings on the query builder.\n *\n * @param list<mixed> $bindings\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setBindings($bindings, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->setBindings($bindings, $type);\n }\n\n /**\n * Add a binding to the query.\n *\n * @param mixed $value\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function addBinding($value, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addBinding($value, $type);\n }\n\n /**\n * Cast the given binding value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function castBinding($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->castBinding($value);\n }\n\n /**\n * Merge an array of bindings into our bindings.\n *\n * @param self $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeBindings($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeBindings($query);\n }\n\n /**\n * Remove all of the expressions from a list of bindings.\n *\n * @param array<mixed> $bindings\n * @return list<mixed>\n * @static\n */\n public static function cleanBindings($bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cleanBindings($bindings);\n }\n\n /**\n * Get the database query processor instance.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getProcessor()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getProcessor();\n }\n\n /**\n * Get the query grammar instance.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getGrammar()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getGrammar();\n }\n\n /**\n * Use the \"write\" PDO connection when executing the query.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useWritePdo()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useWritePdo();\n }\n\n /**\n * Clone the query without the given properties.\n *\n * @return static\n * @static\n */\n public static function cloneWithout($properties)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithout($properties);\n }\n\n /**\n * Clone the query without the given bindings.\n *\n * @return static\n * @static\n */\n public static function cloneWithoutBindings($except)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithoutBindings($except);\n }\n\n /**\n * Dump the current SQL and bindings.\n *\n * @param mixed $args\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dump(...$args)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dump(...$args);\n }\n\n /**\n * Dump the raw current SQL with embedded bindings.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dumpRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dumpRawSql();\n }\n\n /**\n * Die and dump the current SQL and bindings.\n *\n * @return never\n * @static\n */\n public static function dd()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dd();\n }\n\n /**\n * Die and dump the current SQL with embedded bindings.\n *\n * @return never\n * @static\n */\n public static function ddRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ddRawSql();\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function wherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->wherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrPast($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrPast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFuture($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrFuture($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereToday($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereToday($columns, $boolean);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBeforeToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrBefore($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAfterToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrAfter($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBeforeToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrBefore($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAfterToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrAfter($columns);\n }\n\n /**\n * Explains the query.\n *\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function explain()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->explain();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\Query\\Builder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\Query\\Builder::mixin($mixin, $replace);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\Query\\Builder::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n}\n class Event extends \\Illuminate\\Support\\Facades\\Event {}\n class File extends \\Illuminate\\Support\\Facades\\File {}\n class Gate extends \\Illuminate\\Support\\Facades\\Gate {}\n class Hash extends \\Illuminate\\Support\\Facades\\Hash {}\n class Http extends \\Illuminate\\Support\\Facades\\Http {}\n class Js extends \\Illuminate\\Support\\Js {}\n class Lang extends \\Illuminate\\Support\\Facades\\Lang {}\n class Log extends \\Illuminate\\Support\\Facades\\Log {}\n class Mail extends \\Illuminate\\Support\\Facades\\Mail {}\n class Notification extends \\Illuminate\\Support\\Facades\\Notification {}\n class Number extends \\Illuminate\\Support\\Number {}\n class Password extends \\Illuminate\\Support\\Facades\\Password {}\n class Process extends \\Illuminate\\Support\\Facades\\Process {}\n class Queue extends \\Illuminate\\Support\\Facades\\Queue {}\n class RateLimiter extends \\Illuminate\\Support\\Facades\\RateLimiter {}\n class Redirect extends \\Illuminate\\Support\\Facades\\Redirect {}\n class Request extends \\Illuminate\\Support\\Facades\\Request {}\n class Response extends \\Illuminate\\Support\\Facades\\Response {}\n class Route extends \\Illuminate\\Support\\Facades\\Route {}\n class Schedule extends \\Illuminate\\Support\\Facades\\Schedule {}\n class Schema extends \\Illuminate\\Support\\Facades\\Schema {}\n class Session extends \\Illuminate\\Support\\Facades\\Session {}\n class Storage extends \\Illuminate\\Support\\Facades\\Storage {}\n class Str extends \\Illuminate\\Support\\Str {}\n class Uri extends \\Illuminate\\Support\\Uri {}\n class URL extends \\Illuminate\\Support\\Facades\\URL {}\n class Validator extends \\Illuminate\\Support\\Facades\\Validator {}\n class View extends \\Illuminate\\Support\\Facades\\View {}\n class Vite extends \\Illuminate\\Support\\Facades\\Vite {}\n class AWS extends \\Aws\\Laravel\\AwsFacade {}\n class Avatar extends \\Laravolt\\Avatar\\Facade {}\n class Fractal extends \\Spatie\\Fractal\\Facades\\Fractal {}\n class Laratrust extends \\Laratrust\\LaratrustFacade {}\n class RedisManager extends \\Illuminate\\Support\\Facades\\Redis {}\n class Sentry extends \\Sentry\\Laravel\\Facade {}\n class Statsd extends \\League\\StatsD\\Laravel5\\Facade\\StatsdFacade {}\n class Debugbar extends \\Barryvdh\\Debugbar\\Facades\\Debugbar {}\n class PDF extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Pdf extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Datadog extends \\ChaseConey\\LaravelDatadogHelper\\Datadog {}\n class Flare extends \\Spatie\\LaravelIgnition\\Facades\\Flare {}\n class Hashids extends \\Vinkla\\Hashids\\Facades\\Hashids {}\n}","depth":4,"on_screen":true,"value":"<?php\n/* @noinspection ALL */\n// @formatter:off\n// phpcs:ignoreFile\n\n/**\n * A helper file for Laravel, to provide autocomplete information to your IDE\n * Generated for Laravel 12.33.0.\n *\n * This file should not be included in your code, only analyzed by your IDE!\n *\n * @author Barry vd. Heuvel <barryvdh@gmail.com>\n * @see https://github.com/barryvdh/laravel-ide-helper\n */\nnamespace Illuminate\\Support\\Facades {\n /**\n * @see \\Illuminate\\Foundation\\Application\n */\n class App {\n /**\n * Begin configuring a new Laravel application instance.\n *\n * @param string|null $basePath\n * @return \\Illuminate\\Foundation\\Configuration\\ApplicationBuilder\n * @static\n */\n public static function configure($basePath = null)\n {\n return \\Illuminate\\Foundation\\Application::configure($basePath);\n }\n\n /**\n * Infer the application's base directory from the environment.\n *\n * @return string\n * @static\n */\n public static function inferBasePath()\n {\n return \\Illuminate\\Foundation\\Application::inferBasePath();\n }\n\n /**\n * Get the version number of the application.\n *\n * @return string\n * @static\n */\n public static function version()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->version();\n }\n\n /**\n * Run the given array of bootstrap classes.\n *\n * @param string[] $bootstrappers\n * @return void\n * @static\n */\n public static function bootstrapWith($bootstrappers)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bootstrapWith($bootstrappers);\n }\n\n /**\n * Register a callback to run after loading the environment.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterLoadingEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterLoadingEnvironment($callback);\n }\n\n /**\n * Register a callback to run before a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function beforeBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Register a callback to run after a bootstrapper.\n *\n * @param string $bootstrapper\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterBootstrapping($bootstrapper, $callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterBootstrapping($bootstrapper, $callback);\n }\n\n /**\n * Determine if the application has been bootstrapped before.\n *\n * @return bool\n * @static\n */\n public static function hasBeenBootstrapped()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasBeenBootstrapped();\n }\n\n /**\n * Set the base path for the application.\n *\n * @param string $basePath\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function setBasePath($basePath)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->setBasePath($basePath);\n }\n\n /**\n * Get the path to the application \"app\" directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->path($path);\n }\n\n /**\n * Set the application directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useAppPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useAppPath($path);\n }\n\n /**\n * Get the base path of the Laravel installation.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->basePath($path);\n }\n\n /**\n * Get the path to the bootstrap directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function bootstrapPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bootstrapPath($path);\n }\n\n /**\n * Get the path to the service provider list in the bootstrap directory.\n *\n * @return string\n * @static\n */\n public static function getBootstrapProvidersPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBootstrapProvidersPath();\n }\n\n /**\n * Set the bootstrap file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useBootstrapPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useBootstrapPath($path);\n }\n\n /**\n * Get the path to the application configuration files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function configPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configPath($path);\n }\n\n /**\n * Set the configuration directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useConfigPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useConfigPath($path);\n }\n\n /**\n * Get the path to the database directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function databasePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->databasePath($path);\n }\n\n /**\n * Set the database directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useDatabasePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useDatabasePath($path);\n }\n\n /**\n * Get the path to the language files.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function langPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->langPath($path);\n }\n\n /**\n * Set the language file directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useLangPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useLangPath($path);\n }\n\n /**\n * Get the path to the public / web directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function publicPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->publicPath($path);\n }\n\n /**\n * Set the public / web directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function usePublicPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->usePublicPath($path);\n }\n\n /**\n * Get the path to the storage directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function storagePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->storagePath($path);\n }\n\n /**\n * Set the storage directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useStoragePath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useStoragePath($path);\n }\n\n /**\n * Get the path to the resources directory.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function resourcePath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resourcePath($path);\n }\n\n /**\n * Get the path to the views directory.\n * \n * This method returns the first configured path in the array of view paths.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function viewPath($path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->viewPath($path);\n }\n\n /**\n * Join the given paths together.\n *\n * @param string $basePath\n * @param string $path\n * @return string\n * @static\n */\n public static function joinPaths($basePath, $path = '')\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->joinPaths($basePath, $path);\n }\n\n /**\n * Get the path to the environment file directory.\n *\n * @return string\n * @static\n */\n public static function environmentPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentPath();\n }\n\n /**\n * Set the directory for the environment file.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function useEnvironmentPath($path)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->useEnvironmentPath($path);\n }\n\n /**\n * Set the environment file to be loaded during bootstrapping.\n *\n * @param string $file\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function loadEnvironmentFrom($file)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->loadEnvironmentFrom($file);\n }\n\n /**\n * Get the environment file the application is using.\n *\n * @return string\n * @static\n */\n public static function environmentFile()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFile();\n }\n\n /**\n * Get the fully qualified path to the environment file.\n *\n * @return string\n * @static\n */\n public static function environmentFilePath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environmentFilePath();\n }\n\n /**\n * Get or check the current application environment.\n *\n * @param string|array $environments\n * @return string|bool\n * @static\n */\n public static function environment(...$environments)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->environment(...$environments);\n }\n\n /**\n * Determine if the application is in the local environment.\n *\n * @return bool\n * @static\n */\n public static function isLocal()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocal();\n }\n\n /**\n * Determine if the application is in the production environment.\n *\n * @return bool\n * @static\n */\n public static function isProduction()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isProduction();\n }\n\n /**\n * Detect the application's current environment.\n *\n * @param \\Closure $callback\n * @return string\n * @static\n */\n public static function detectEnvironment($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->detectEnvironment($callback);\n }\n\n /**\n * Determine if the application is running in the console.\n *\n * @return bool\n * @static\n */\n public static function runningInConsole()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningInConsole();\n }\n\n /**\n * Determine if the application is running any of the given console commands.\n *\n * @param string|array $commands\n * @return bool\n * @static\n */\n public static function runningConsoleCommand(...$commands)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningConsoleCommand(...$commands);\n }\n\n /**\n * Determine if the application is running unit tests.\n *\n * @return bool\n * @static\n */\n public static function runningUnitTests()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->runningUnitTests();\n }\n\n /**\n * Determine if the application is running with debug mode enabled.\n *\n * @return bool\n * @static\n */\n public static function hasDebugModeEnabled()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasDebugModeEnabled();\n }\n\n /**\n * Register a new registered listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function registered($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registered($callback);\n }\n\n /**\n * Register all of the configured providers.\n *\n * @return void\n * @static\n */\n public static function registerConfiguredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerConfiguredProviders();\n }\n\n /**\n * Register a service provider with the application.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @param bool $force\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function register($provider, $force = false)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->register($provider, $force);\n }\n\n /**\n * Get the registered service provider instance if it exists.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return \\Illuminate\\Support\\ServiceProvider|null\n * @static\n */\n public static function getProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProvider($provider);\n }\n\n /**\n * Get the registered service provider instances if any exist.\n *\n * @param \\Illuminate\\Support\\ServiceProvider|string $provider\n * @return array\n * @static\n */\n public static function getProviders($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getProviders($provider);\n }\n\n /**\n * Resolve a service provider instance from the class name.\n *\n * @param string $provider\n * @return \\Illuminate\\Support\\ServiceProvider\n * @static\n */\n public static function resolveProvider($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveProvider($provider);\n }\n\n /**\n * Load and boot all of the remaining deferred providers.\n *\n * @return void\n * @static\n */\n public static function loadDeferredProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProviders();\n }\n\n /**\n * Load the provider for a deferred service.\n *\n * @param string $service\n * @return void\n * @static\n */\n public static function loadDeferredProvider($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->loadDeferredProvider($service);\n }\n\n /**\n * Register a deferred provider and service.\n *\n * @param string $provider\n * @param string|null $service\n * @return void\n * @static\n */\n public static function registerDeferredProvider($provider, $service = null)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerDeferredProvider($provider, $service);\n }\n\n /**\n * Resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function make($abstract, $parameters = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->make($abstract, $parameters);\n }\n\n /**\n * Determine if the given abstract type has been bound.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function bound($abstract)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->bound($abstract);\n }\n\n /**\n * Determine if the application has booted.\n *\n * @return bool\n * @static\n */\n public static function isBooted()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isBooted();\n }\n\n /**\n * Boot the application's service providers.\n *\n * @return void\n * @static\n */\n public static function boot()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->boot();\n }\n\n /**\n * Register a new boot listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booting($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booting($callback);\n }\n\n /**\n * Register a new \"booted\" listener.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function booted($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->booted($callback);\n }\n\n /**\n * {@inheritdoc}\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function handle($request, $type = 1, $catch = true)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handle($request, $type, $catch);\n }\n\n /**\n * Handle the incoming HTTP request and send the response to the browser.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function handleRequest($request)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->handleRequest($request);\n }\n\n /**\n * Handle the incoming Artisan command.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @return int\n * @static\n */\n public static function handleCommand($input)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->handleCommand($input);\n }\n\n /**\n * Determine if the framework's base configuration should be merged.\n *\n * @return bool\n * @static\n */\n public static function shouldMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldMergeFrameworkConfiguration();\n }\n\n /**\n * Indicate that the framework's base configuration should not be merged.\n *\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function dontMergeFrameworkConfiguration()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->dontMergeFrameworkConfiguration();\n }\n\n /**\n * Determine if middleware has been disabled for the application.\n *\n * @return bool\n * @static\n */\n public static function shouldSkipMiddleware()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->shouldSkipMiddleware();\n }\n\n /**\n * Get the path to the cached services.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedServicesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedServicesPath();\n }\n\n /**\n * Get the path to the cached packages.php file.\n *\n * @return string\n * @static\n */\n public static function getCachedPackagesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedPackagesPath();\n }\n\n /**\n * Determine if the application configuration is cached.\n *\n * @return bool\n * @static\n */\n public static function configurationIsCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->configurationIsCached();\n }\n\n /**\n * Get the path to the configuration cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedConfigPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedConfigPath();\n }\n\n /**\n * Determine if the application routes are cached.\n *\n * @return bool\n * @static\n */\n public static function routesAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->routesAreCached();\n }\n\n /**\n * Get the path to the routes cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedRoutesPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedRoutesPath();\n }\n\n /**\n * Determine if the application events are cached.\n *\n * @return bool\n * @static\n */\n public static function eventsAreCached()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->eventsAreCached();\n }\n\n /**\n * Get the path to the events cache file.\n *\n * @return string\n * @static\n */\n public static function getCachedEventsPath()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getCachedEventsPath();\n }\n\n /**\n * Add new prefix to list of absolute path prefixes.\n *\n * @param string $prefix\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function addAbsoluteCachePathPrefix($prefix)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->addAbsoluteCachePathPrefix($prefix);\n }\n\n /**\n * Get an instance of the maintenance mode manager implementation.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\MaintenanceMode\n * @static\n */\n public static function maintenanceMode()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->maintenanceMode();\n }\n\n /**\n * Determine if the application is currently down for maintenance.\n *\n * @return bool\n * @static\n */\n public static function isDownForMaintenance()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDownForMaintenance();\n }\n\n /**\n * Throw an HttpException with the given data.\n *\n * @param int $code\n * @param string $message\n * @param array $headers\n * @return never\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\HttpException\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\NotFoundHttpException\n * @static\n */\n public static function abort($code, $message = '', $headers = [])\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->abort($code, $message, $headers);\n }\n\n /**\n * Register a terminating callback with the application.\n *\n * @param callable|string $callback\n * @return \\Illuminate\\Foundation\\Application\n * @static\n */\n public static function terminating($callback)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->terminating($callback);\n }\n\n /**\n * Terminate the application.\n *\n * @return void\n * @static\n */\n public static function terminate()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->terminate();\n }\n\n /**\n * Get the service providers that have been loaded.\n *\n * @return array<string, bool>\n * @static\n */\n public static function getLoadedProviders()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLoadedProviders();\n }\n\n /**\n * Determine if the given service provider is loaded.\n *\n * @param string $provider\n * @return bool\n * @static\n */\n public static function providerIsLoaded($provider)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->providerIsLoaded($provider);\n }\n\n /**\n * Get the application's deferred services.\n *\n * @return array\n * @static\n */\n public static function getDeferredServices()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getDeferredServices();\n }\n\n /**\n * Set the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function setDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setDeferredServices($services);\n }\n\n /**\n * Determine if the given service is a deferred service.\n *\n * @param string $service\n * @return bool\n * @static\n */\n public static function isDeferredService($service)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isDeferredService($service);\n }\n\n /**\n * Add an array of services to the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function addDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addDeferredServices($services);\n }\n\n /**\n * Remove an array of services from the application's deferred services.\n *\n * @param array $services\n * @return void\n * @static\n */\n public static function removeDeferredServices($services)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->removeDeferredServices($services);\n }\n\n /**\n * Configure the real-time facade namespace.\n *\n * @param string $namespace\n * @return void\n * @static\n */\n public static function provideFacades($namespace)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->provideFacades($namespace);\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getLocale();\n }\n\n /**\n * Get the current application locale.\n *\n * @return string\n * @static\n */\n public static function currentLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentLocale();\n }\n\n /**\n * Get the current application fallback locale.\n *\n * @return string\n * @static\n */\n public static function getFallbackLocale()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getFallbackLocale();\n }\n\n /**\n * Set the current application locale.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Set the current application fallback locale.\n *\n * @param string $fallbackLocale\n * @return void\n * @static\n */\n public static function setFallbackLocale($fallbackLocale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->setFallbackLocale($fallbackLocale);\n }\n\n /**\n * Determine if the application locale is the given locale.\n *\n * @param string $locale\n * @return bool\n * @static\n */\n public static function isLocale($locale)\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isLocale($locale);\n }\n\n /**\n * Register the core class aliases in the container.\n *\n * @return void\n * @static\n */\n public static function registerCoreContainerAliases()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->registerCoreContainerAliases();\n }\n\n /**\n * Flush the container of all bindings and resolved instances.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->flush();\n }\n\n /**\n * Get the application namespace.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Define a contextual binding.\n *\n * @param array|string $concrete\n * @return \\Illuminate\\Contracts\\Container\\ContextualBindingBuilder\n * @static\n */\n public static function when($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->when($concrete);\n }\n\n /**\n * Define a contextual binding based on an attribute.\n *\n * @param string $attribute\n * @param \\Closure $handler\n * @return void\n * @static\n */\n public static function whenHasAttribute($attribute, $handler)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->whenHasAttribute($attribute, $handler);\n }\n\n /**\n * Returns true if the container can return an entry for the given identifier.\n * \n * Returns false otherwise.\n * \n * `has($id)` returning true does not mean that `get($id)` will not throw an exception.\n * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.\n *\n * @return bool\n * @param string $id Identifier of the entry to look for.\n * @return bool\n * @static\n */\n public static function has($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->has($id);\n }\n\n /**\n * Determine if the given abstract type has been resolved.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function resolved($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolved($abstract);\n }\n\n /**\n * Determine if a given type is shared.\n *\n * @param string $abstract\n * @return bool\n * @static\n */\n public static function isShared($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isShared($abstract);\n }\n\n /**\n * Determine if a given string is an alias.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function isAlias($name)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->isAlias($name);\n }\n\n /**\n * Register a binding with the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @throws \\TypeError\n * @throws ReflectionException\n * @static\n */\n public static function bind($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bind($abstract, $concrete, $shared);\n }\n\n /**\n * Determine if the container has a method binding.\n *\n * @param string $method\n * @return bool\n * @static\n */\n public static function hasMethodBinding($method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->hasMethodBinding($method);\n }\n\n /**\n * Bind a callback to resolve with Container::call.\n *\n * @param array|string $method\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function bindMethod($method, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindMethod($method, $callback);\n }\n\n /**\n * Get the method binding for the given method.\n *\n * @param string $method\n * @param mixed $instance\n * @return mixed\n * @static\n */\n public static function callMethodBinding($method, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->callMethodBinding($method, $instance);\n }\n\n /**\n * Add a contextual binding to the container.\n *\n * @param string $concrete\n * @param \\Closure|string $abstract\n * @param \\Closure|string $implementation\n * @return void\n * @static\n */\n public static function addContextualBinding($concrete, $abstract, $implementation)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->addContextualBinding($concrete, $abstract, $implementation);\n }\n\n /**\n * Register a binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @param bool $shared\n * @return void\n * @static\n */\n public static function bindIf($abstract, $concrete = null, $shared = false)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->bindIf($abstract, $concrete, $shared);\n }\n\n /**\n * Register a shared binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singleton($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singleton($abstract, $concrete);\n }\n\n /**\n * Register a shared binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function singletonIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->singletonIf($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding in the container.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scoped($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scoped($abstract, $concrete);\n }\n\n /**\n * Register a scoped binding if it hasn't already been registered.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|string|null $concrete\n * @return void\n * @static\n */\n public static function scopedIf($abstract, $concrete = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->scopedIf($abstract, $concrete);\n }\n\n /**\n * \"Extend\" an abstract type in the container.\n *\n * @param string $abstract\n * @param \\Closure $closure\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function extend($abstract, $closure)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->extend($abstract, $closure);\n }\n\n /**\n * Register an existing instance as shared in the container.\n *\n * @template TInstance of mixed\n * @param string $abstract\n * @param TInstance $instance\n * @return TInstance\n * @static\n */\n public static function instance($abstract, $instance)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->instance($abstract, $instance);\n }\n\n /**\n * Assign a set of tags to a given binding.\n *\n * @param array|string $abstracts\n * @param mixed $tags\n * @return void\n * @static\n */\n public static function tag($abstracts, $tags)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->tag($abstracts, $tags);\n }\n\n /**\n * Resolve all of the bindings for a given tag.\n *\n * @param string $tag\n * @return iterable\n * @static\n */\n public static function tagged($tag)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->tagged($tag);\n }\n\n /**\n * Alias a type to a different name.\n *\n * @param string $abstract\n * @param string $alias\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function alias($abstract, $alias)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->alias($abstract, $alias);\n }\n\n /**\n * Bind a new callback to an abstract's rebind event.\n *\n * @param string $abstract\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function rebinding($abstract, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->rebinding($abstract, $callback);\n }\n\n /**\n * Refresh an instance on the given target and method.\n *\n * @param string $abstract\n * @param mixed $target\n * @param string $method\n * @return mixed\n * @static\n */\n public static function refresh($abstract, $target, $method)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->refresh($abstract, $target, $method);\n }\n\n /**\n * Wrap the given closure such that its dependencies will be injected when executed.\n *\n * @param \\Closure $callback\n * @param array $parameters\n * @return \\Closure\n * @static\n */\n public static function wrap($callback, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->wrap($callback, $parameters);\n }\n\n /**\n * Call the given Closure / class@method and inject its dependencies.\n *\n * @param callable|string $callback\n * @param array<string, mixed> $parameters\n * @param string|null $defaultMethod\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function call($callback, $parameters = [], $defaultMethod = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->call($callback, $parameters, $defaultMethod);\n }\n\n /**\n * Get a closure to resolve the given type from the container.\n *\n * @template TClass of object\n * @param string|class-string<TClass> $abstract\n * @return ($abstract is class-string<TClass> ? \\Closure(): TClass : \\Closure(): mixed)\n * @static\n */\n public static function factory($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->factory($abstract);\n }\n\n /**\n * An alias function name for make().\n *\n * @template TClass of object\n * @param string|class-string<TClass>|callable $abstract\n * @param array $parameters\n * @return ($abstract is class-string<TClass> ? TClass : mixed)\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function makeWith($abstract, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->makeWith($abstract, $parameters);\n }\n\n /**\n * {@inheritdoc}\n *\n * @template TClass of object\n * @param string|class-string<TClass> $id\n * @return ($id is class-string<TClass> ? TClass : mixed)\n * @static\n */\n public static function get($id)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->get($id);\n }\n\n /**\n * Instantiate a concrete instance of the given type.\n *\n * @template TClass of object\n * @param \\Closure(static, array): TClass|class-string<TClass> $concrete\n * @return TClass\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @throws \\Illuminate\\Contracts\\Container\\CircularDependencyException\n * @static\n */\n public static function build($concrete)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->build($concrete);\n }\n\n /**\n * Resolve a dependency based on an attribute.\n *\n * @param \\ReflectionAttribute $attribute\n * @return mixed\n * @static\n */\n public static function resolveFromAttribute($attribute)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->resolveFromAttribute($attribute);\n }\n\n /**\n * Register a new before resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function beforeResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->beforeResolving($abstract, $callback);\n }\n\n /**\n * Register a new resolving callback.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function resolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving callback for all types.\n *\n * @param \\Closure|string $abstract\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function afterResolving($abstract, $callback = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolving($abstract, $callback);\n }\n\n /**\n * Register a new after resolving attribute callback for all types.\n *\n * @param string $attribute\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function afterResolvingAttribute($attribute, $callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->afterResolvingAttribute($attribute, $callback);\n }\n\n /**\n * Fire all of the after resolving attribute callbacks.\n *\n * @param \\ReflectionAttribute[] $attributes\n * @param mixed $object\n * @return void\n * @static\n */\n public static function fireAfterResolvingAttributeCallbacks($attributes, $object)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->fireAfterResolvingAttributeCallbacks($attributes, $object);\n }\n\n /**\n * Get the name of the binding the container is currently resolving.\n *\n * @return class-string|string|null\n * @static\n */\n public static function currentlyResolving()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentlyResolving();\n }\n\n /**\n * Get the container's bindings.\n *\n * @return array\n * @static\n */\n public static function getBindings()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the alias for an abstract if available.\n *\n * @param string $abstract\n * @return string\n * @static\n */\n public static function getAlias($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->getAlias($abstract);\n }\n\n /**\n * Remove all of the extender callbacks for a given type.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetExtenders($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetExtenders($abstract);\n }\n\n /**\n * Remove a resolved instance from the instance cache.\n *\n * @param string $abstract\n * @return void\n * @static\n */\n public static function forgetInstance($abstract)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstance($abstract);\n }\n\n /**\n * Clear all of the instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetInstances();\n }\n\n /**\n * Clear all of the scoped instances from the container.\n *\n * @return void\n * @static\n */\n public static function forgetScopedInstances()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->forgetScopedInstances();\n }\n\n /**\n * Set the callback which determines the current container environment.\n *\n * @param (callable(array<int, string>|string): bool|string)|null $callback\n * @return void\n * @static\n */\n public static function resolveEnvironmentUsing($callback)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->resolveEnvironmentUsing($callback);\n }\n\n /**\n * Determine the environment for the container.\n *\n * @param array<int, string>|string $environments\n * @return bool\n * @static\n */\n public static function currentEnvironmentIs($environments)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->currentEnvironmentIs($environments);\n }\n\n /**\n * Get the globally available instance of the container.\n *\n * @return static\n * @static\n */\n public static function getInstance()\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::getInstance();\n }\n\n /**\n * Set the shared instance of the container.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container|null $container\n * @return \\Illuminate\\Contracts\\Container\\Container|static\n * @static\n */\n public static function setInstance($container = null)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n return \\Illuminate\\Foundation\\Application::setInstance($container);\n }\n\n /**\n * Determine if a given offset exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get the value at a given offset.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set the value at a given offset.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset the value at a given offset.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\Illuminate\\Container\\Container \n /** @var \\Illuminate\\Foundation\\Application $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Application::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Application::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Application::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Application::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Console\\Kernel\n */\n class Artisan {\n /**\n * Re-route the Symfony command events to their Laravel counterparts.\n *\n * @internal\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function rerouteSymfonyCommandEvents()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->rerouteSymfonyCommandEvents();\n }\n\n /**\n * Run the console application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $output\n * @return int\n * @static\n */\n public static function handle($input, $output = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->handle($input, $output);\n }\n\n /**\n * Terminate the application.\n *\n * @param \\Symfony\\Component\\Console\\Input\\InputInterface $input\n * @param int $status\n * @return void\n * @static\n */\n public static function terminate($input, $status)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->terminate($input, $status);\n }\n\n /**\n * Register a callback to be invoked when the command lifecycle duration exceeds a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param callable $handler\n * @return void\n * @static\n */\n public static function whenCommandLifecycleIsLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->whenCommandLifecycleIsLongerThan($threshold, $handler);\n }\n\n /**\n * When the command being handled started.\n *\n * @return \\Illuminate\\Support\\Carbon|null\n * @static\n */\n public static function commandStartedAt()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->commandStartedAt();\n }\n\n /**\n * Resolve a console schedule instance.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function resolveConsoleSchedule()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->resolveConsoleSchedule();\n }\n\n /**\n * Register a Closure based command with the application.\n *\n * @param string $signature\n * @param \\Closure $callback\n * @return \\Illuminate\\Foundation\\Console\\ClosureCommand\n * @static\n */\n public static function command($signature, $callback)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->command($signature, $callback);\n }\n\n /**\n * Register the given command with the console application.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command $command\n * @return void\n * @static\n */\n public static function registerCommand($command)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->registerCommand($command);\n }\n\n /**\n * Run an Artisan console command by name.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @param \\Symfony\\Component\\Console\\Output\\OutputInterface|null $outputBuffer\n * @return int\n * @throws \\Symfony\\Component\\Console\\Exception\\CommandNotFoundException\n * @static\n */\n public static function call($command, $parameters = [], $outputBuffer = null)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->call($command, $parameters, $outputBuffer);\n }\n\n /**\n * Queue the given console command.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Foundation\\Bus\\PendingDispatch\n * @static\n */\n public static function queue($command, $parameters = [])\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->queue($command, $parameters);\n }\n\n /**\n * Get all of the commands registered with the console.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->all();\n }\n\n /**\n * Get the output for the last run command.\n *\n * @return string\n * @static\n */\n public static function output()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->output();\n }\n\n /**\n * Bootstrap the application for artisan commands.\n *\n * @return void\n * @static\n */\n public static function bootstrap()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrap();\n }\n\n /**\n * Bootstrap the application without booting service providers.\n *\n * @return void\n * @static\n */\n public static function bootstrapWithoutBootingProviders()\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->bootstrapWithoutBootingProviders();\n }\n\n /**\n * Set the Artisan application instance.\n *\n * @param \\Illuminate\\Console\\Application|null $artisan\n * @return void\n * @static\n */\n public static function setArtisan($artisan)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n $instance->setArtisan($artisan);\n }\n\n /**\n * Set the Artisan commands provided by the application.\n *\n * @param array $commands\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommands($commands)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommands($commands);\n }\n\n /**\n * Set the paths that should have their Artisan commands automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandPaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandPaths($paths);\n }\n\n /**\n * Set the paths that should have their Artisan \"routes\" automatically discovered.\n *\n * @param array $paths\n * @return \\Jiminny\\Console\\Kernel\n * @static\n */\n public static function addCommandRoutePaths($paths)\n {\n //Method inherited from \\Illuminate\\Foundation\\Console\\Kernel \n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->addCommandRoutePaths($paths);\n }\n\n /**\n * Confirm before proceeding with the action.\n * \n * This method only asks for confirmation in production.\n *\n * @param string $warning\n * @param \\Closure|bool|null $callback\n * @return bool\n * @static\n */\n public static function confirmToProceed($warning = 'Application In Production', $callback = null)\n {\n /** @var \\Jiminny\\Console\\Kernel $instance */\n return $instance->confirmToProceed($warning, $callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\AuthManager\n * @see \\Illuminate\\Auth\\SessionGuard\n */\n class Auth {\n /**\n * Attempt to get the guard from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\Guard|\\Illuminate\\Contracts\\Auth\\StatefulGuard\n * @static\n */\n public static function guard($name = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->guard($name);\n }\n\n /**\n * Create a session based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function createSessionDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createSessionDriver($name, $config);\n }\n\n /**\n * Create a token based authentication guard.\n *\n * @param string $name\n * @param array $config\n * @return \\Illuminate\\Auth\\TokenGuard\n * @static\n */\n public static function createTokenDriver($name, $config)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createTokenDriver($name, $config);\n }\n\n /**\n * Get the default authentication driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default guard driver the factory should serve.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function shouldUse($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->shouldUse($name);\n }\n\n /**\n * Set the default authentication driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a new callback based request guard.\n *\n * @param string $driver\n * @param callable $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function viaRequest($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->viaRequest($driver, $callback);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function userResolver()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->userResolver();\n }\n\n /**\n * Set the callback to be used to resolve users.\n *\n * @param \\Closure $userResolver\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function resolveUsersUsing($userResolver)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->resolveUsersUsing($userResolver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Register a custom provider creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function provider($name, $callback)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->provider($name, $callback);\n }\n\n /**\n * Determines if any guards have already been resolved.\n *\n * @return bool\n * @static\n */\n public static function hasResolvedGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->hasResolvedGuards();\n }\n\n /**\n * Forget all of the resolved guard instances.\n *\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function forgetGuards()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->forgetGuards();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Auth\\AuthManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Create the user provider implementation for the driver.\n *\n * @param string|null $provider\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider|null\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createUserProvider($provider = null)\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->createUserProvider($provider);\n }\n\n /**\n * Get the default user provider name.\n *\n * @return string\n * @static\n */\n public static function getDefaultUserProvider()\n {\n /** @var \\Illuminate\\Auth\\AuthManager $instance */\n return $instance->getDefaultUserProvider();\n }\n\n /**\n * Get the currently authenticated user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function user()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->user();\n }\n\n /**\n * Get the ID for the currently authenticated user.\n *\n * @return int|string|null\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->id();\n }\n\n /**\n * Log a user into the application without sessions or cookies.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function once($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->once($credentials);\n }\n\n /**\n * Log the given user ID into the application without sessions or cookies.\n *\n * @param mixed $id\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function onceUsingId($id)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceUsingId($id);\n }\n\n /**\n * Validate a user's credentials.\n *\n * @param array $credentials\n * @return bool\n * @static\n */\n public static function validate($credentials = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->validate($credentials);\n }\n\n /**\n * Attempt to authenticate using HTTP Basic Auth.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function basic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->basic($field, $extraConditions);\n }\n\n /**\n * Perform a stateless HTTP Basic login attempt.\n *\n * @param string $field\n * @param array $extraConditions\n * @return \\Symfony\\Component\\HttpFoundation\\Response|null\n * @throws \\Symfony\\Component\\HttpKernel\\Exception\\UnauthorizedHttpException\n * @static\n */\n public static function onceBasic($field = 'email', $extraConditions = [])\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->onceBasic($field, $extraConditions);\n }\n\n /**\n * Attempt to authenticate a user using the given credentials.\n *\n * @param array $credentials\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attempt($credentials = [], $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attempt($credentials, $remember);\n }\n\n /**\n * Attempt to authenticate a user with credentials and additional callbacks.\n *\n * @param array $credentials\n * @param array|callable|null $callbacks\n * @param bool $remember\n * @return bool\n * @static\n */\n public static function attemptWhen($credentials = [], $callbacks = null, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->attemptWhen($credentials, $callbacks, $remember);\n }\n\n /**\n * Log the given user ID into the application.\n *\n * @param mixed $id\n * @param bool $remember\n * @return \\Jiminny\\Models\\User|false\n * @static\n */\n public static function loginUsingId($id, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->loginUsingId($id, $remember);\n }\n\n /**\n * Log a user into the application.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @param bool $remember\n * @return void\n * @static\n */\n public static function login($user, $remember = false)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->login($user, $remember);\n }\n\n /**\n * Log the user out of the application.\n *\n * @return void\n * @static\n */\n public static function logout()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logout();\n }\n\n /**\n * Log the user out of the application on their current device only.\n * \n * This method does not cycle the \"remember\" token.\n *\n * @return void\n * @static\n */\n public static function logoutCurrentDevice()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->logoutCurrentDevice();\n }\n\n /**\n * Invalidate other sessions for the current user.\n * \n * The application must be using the AuthenticateSession middleware.\n *\n * @param string $password\n * @return \\Jiminny\\Models\\User|null\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function logoutOtherDevices($password)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->logoutOtherDevices($password);\n }\n\n /**\n * Register an authentication attempt event listener.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function attempting($callback)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->attempting($callback);\n }\n\n /**\n * Get the last user we attempted to authenticate.\n *\n * @return \\Jiminny\\Models\\User\n * @static\n */\n public static function getLastAttempted()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getLastAttempted();\n }\n\n /**\n * Get a unique identifier for the auth session value.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getName();\n }\n\n /**\n * Get the name of the cookie used to store the \"recaller\".\n *\n * @return string\n * @static\n */\n public static function getRecallerName()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRecallerName();\n }\n\n /**\n * Determine if the user was authenticated via \"remember me\" cookie.\n *\n * @return bool\n * @static\n */\n public static function viaRemember()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->viaRemember();\n }\n\n /**\n * Set the number of minutes the remember me cookie should be valid for.\n *\n * @param int $minutes\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRememberDuration($minutes)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRememberDuration($minutes);\n }\n\n /**\n * Get the cookie creator instance used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Cookie\\QueueingFactory\n * @throws \\RuntimeException\n * @static\n */\n public static function getCookieJar()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getCookieJar();\n }\n\n /**\n * Set the cookie creator instance used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Cookie\\QueueingFactory $cookie\n * @return void\n * @static\n */\n public static function setCookieJar($cookie)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setCookieJar($cookie);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the session store used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getSession();\n }\n\n /**\n * Return the currently cached user.\n *\n * @return \\Jiminny\\Models\\User|null\n * @static\n */\n public static function getUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getUser();\n }\n\n /**\n * Set the current user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable $user\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setUser($user)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setUser($user);\n }\n\n /**\n * Get the current request instance.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->setRequest($request);\n }\n\n /**\n * Get the timebox instance used by the guard.\n *\n * @return \\Illuminate\\Support\\Timebox\n * @static\n */\n public static function getTimebox()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getTimebox();\n }\n\n /**\n * Determine if the current user is authenticated. If not, throw an exception.\n *\n * @return \\Jiminny\\Models\\User\n * @throws \\Illuminate\\Auth\\AuthenticationException\n * @static\n */\n public static function authenticate()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->authenticate();\n }\n\n /**\n * Determine if the guard has a user instance.\n *\n * @return bool\n * @static\n */\n public static function hasUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->hasUser();\n }\n\n /**\n * Determine if the current user is authenticated.\n *\n * @return bool\n * @static\n */\n public static function check()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->check();\n }\n\n /**\n * Determine if the current user is a guest.\n *\n * @return bool\n * @static\n */\n public static function guest()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->guest();\n }\n\n /**\n * Forget the current user.\n *\n * @return \\Illuminate\\Auth\\SessionGuard\n * @static\n */\n public static function forgetUser()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->forgetUser();\n }\n\n /**\n * Get the user provider used by the guard.\n *\n * @return \\Illuminate\\Contracts\\Auth\\UserProvider\n * @static\n */\n public static function getProvider()\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n return $instance->getProvider();\n }\n\n /**\n * Set the user provider used by the guard.\n *\n * @param \\Illuminate\\Contracts\\Auth\\UserProvider $provider\n * @return void\n * @static\n */\n public static function setProvider($provider)\n {\n /** @var \\Illuminate\\Auth\\SessionGuard $instance */\n $instance->setProvider($provider);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Auth\\SessionGuard::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Auth\\SessionGuard::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Auth\\SessionGuard::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Auth\\SessionGuard::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Compilers\\BladeCompiler\n */\n class Blade {\n /**\n * Compile the view at the given path.\n *\n * @param string|null $path\n * @return void\n * @static\n */\n public static function compile($path = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->compile($path);\n }\n\n /**\n * Get the path currently being compiled.\n *\n * @return string\n * @static\n */\n public static function getPath()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getPath();\n }\n\n /**\n * Set the path currently being compiled.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function setPath($path)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setPath($path);\n }\n\n /**\n * Compile the given Blade template contents.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileString($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileString($value);\n }\n\n /**\n * Evaluate and render a Blade string to HTML.\n *\n * @param string $string\n * @param array $data\n * @param bool $deleteCachedView\n * @return string\n * @static\n */\n public static function render($string, $data = [], $deleteCachedView = false)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::render($string, $data, $deleteCachedView);\n }\n\n /**\n * Render a component instance to HTML.\n *\n * @param \\Illuminate\\View\\Component $component\n * @return string\n * @static\n */\n public static function renderComponent($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::renderComponent($component);\n }\n\n /**\n * Strip the parentheses from the given expression.\n *\n * @param string $expression\n * @return string\n * @static\n */\n public static function stripParentheses($expression)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->stripParentheses($expression);\n }\n\n /**\n * Register a custom Blade compiler.\n *\n * @param callable $compiler\n * @return void\n * @static\n */\n public static function extend($compiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->extend($compiler);\n }\n\n /**\n * Get the extensions used by the compiler.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Register an \"if\" statement directive.\n *\n * @param string $name\n * @param callable $callback\n * @return void\n * @static\n */\n public static function if($name, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->if($name, $callback);\n }\n\n /**\n * Check the result of a condition.\n *\n * @param string $name\n * @param mixed $parameters\n * @return bool\n * @static\n */\n public static function check($name, ...$parameters)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->check($name, ...$parameters);\n }\n\n /**\n * Register a class-based component alias directive.\n *\n * @param string $class\n * @param string|null $alias\n * @param string $prefix\n * @return void\n * @static\n */\n public static function component($class, $alias = null, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->component($class, $alias, $prefix);\n }\n\n /**\n * Register an array of class-based components.\n *\n * @param array $components\n * @param string $prefix\n * @return void\n * @static\n */\n public static function components($components, $prefix = '')\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->components($components, $prefix);\n }\n\n /**\n * Get the registered class component aliases.\n *\n * @return array\n * @static\n */\n public static function getClassComponentAliases()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentAliases();\n }\n\n /**\n * Register a new anonymous component path.\n *\n * @param string $path\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentPath($path, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentPath($path, $prefix);\n }\n\n /**\n * Register an anonymous component namespace.\n *\n * @param string $directory\n * @param string|null $prefix\n * @return void\n * @static\n */\n public static function anonymousComponentNamespace($directory, $prefix = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->anonymousComponentNamespace($directory, $prefix);\n }\n\n /**\n * Register a class-based component namespace.\n *\n * @param string $namespace\n * @param string $prefix\n * @return void\n * @static\n */\n public static function componentNamespace($namespace, $prefix)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->componentNamespace($namespace, $prefix);\n }\n\n /**\n * Get the registered anonymous component paths.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentPaths()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentPaths();\n }\n\n /**\n * Get the registered anonymous component namespaces.\n *\n * @return array\n * @static\n */\n public static function getAnonymousComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getAnonymousComponentNamespaces();\n }\n\n /**\n * Get the registered class component namespaces.\n *\n * @return array\n * @static\n */\n public static function getClassComponentNamespaces()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getClassComponentNamespaces();\n }\n\n /**\n * Register a component alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasComponent($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasComponent($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function include($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->include($path, $alias);\n }\n\n /**\n * Register an include alias directive.\n *\n * @param string $path\n * @param string|null $alias\n * @return void\n * @static\n */\n public static function aliasInclude($path, $alias = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->aliasInclude($path, $alias);\n }\n\n /**\n * Register a handler for custom directives, binding the handler to the compiler.\n *\n * @param string $name\n * @param callable $handler\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function bindDirective($name, $handler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->bindDirective($name, $handler);\n }\n\n /**\n * Register a handler for custom directives.\n *\n * @param string $name\n * @param callable $handler\n * @param bool $bind\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function directive($name, $handler, $bind = false)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->directive($name, $handler, $bind);\n }\n\n /**\n * Get the list of custom directives.\n *\n * @return array\n * @static\n */\n public static function getCustomDirectives()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCustomDirectives();\n }\n\n /**\n * Indicate that the following callable should be used to prepare strings for compilation.\n *\n * @param callable $callback\n * @return \\Illuminate\\View\\Compilers\\BladeCompiler\n * @static\n */\n public static function prepareStringsForCompilationUsing($callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->prepareStringsForCompilationUsing($callback);\n }\n\n /**\n * Register a new precompiler.\n *\n * @param callable $precompiler\n * @return void\n * @static\n */\n public static function precompiler($precompiler)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->precompiler($precompiler);\n }\n\n /**\n * Execute the given callback using a custom echo format.\n *\n * @param string $format\n * @param callable $callback\n * @return string\n * @static\n */\n public static function usingEchoFormat($format, $callback)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->usingEchoFormat($format, $callback);\n }\n\n /**\n * Set the echo format to be used by the compiler.\n *\n * @param string $format\n * @return void\n * @static\n */\n public static function setEchoFormat($format)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->setEchoFormat($format);\n }\n\n /**\n * Set the \"echo\" format to double encode entities.\n *\n * @return void\n * @static\n */\n public static function withDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withDoubleEncoding();\n }\n\n /**\n * Set the \"echo\" format to not double encode entities.\n *\n * @return void\n * @static\n */\n public static function withoutDoubleEncoding()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutDoubleEncoding();\n }\n\n /**\n * Indicate that component tags should not be compiled.\n *\n * @return void\n * @static\n */\n public static function withoutComponentTags()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->withoutComponentTags();\n }\n\n /**\n * Get the path to the compiled version of a view.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getCompiledPath($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->getCompiledPath($path);\n }\n\n /**\n * Determine if the view at the given path is expired.\n *\n * @param string $path\n * @return bool\n * @throws \\ErrorException\n * @static\n */\n public static function isExpired($path)\n {\n //Method inherited from \\Illuminate\\View\\Compilers\\Compiler \n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->isExpired($path);\n }\n\n /**\n * Get a new component hash for a component name.\n *\n * @param string $component\n * @return string\n * @static\n */\n public static function newComponentHash($component)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::newComponentHash($component);\n }\n\n /**\n * Compile a class component opening.\n *\n * @param string $component\n * @param string $alias\n * @param string $data\n * @param string $hash\n * @return string\n * @static\n */\n public static function compileClassComponentOpening($component, $alias, $data, $hash)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::compileClassComponentOpening($component, $alias, $data, $hash);\n }\n\n /**\n * Compile the end-component statements into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndComponentClass()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndComponentClass();\n }\n\n /**\n * Sanitize the given component attribute value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function sanitizeComponentAttribute($value)\n {\n return \\Illuminate\\View\\Compilers\\BladeCompiler::sanitizeComponentAttribute($value);\n }\n\n /**\n * Compile an end-once block into valid PHP.\n *\n * @return string\n * @static\n */\n public static function compileEndOnce()\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEndOnce();\n }\n\n /**\n * Add a handler to be executed before echoing a given class.\n *\n * @param string|callable $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Compile Blade echos into valid PHP.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function compileEchos($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->compileEchos($value);\n }\n\n /**\n * Apply the echo handler for the value if it exists.\n *\n * @param string $value\n * @return string\n * @static\n */\n public static function applyEchoHandler($value)\n {\n /** @var \\Illuminate\\View\\Compilers\\BladeCompiler $instance */\n return $instance->applyEchoHandler($value);\n }\n\n }\n /**\n * @method static mixed auth(\\Illuminate\\Http\\Request $request)\n * @method static mixed validAuthenticationResponse(\\Illuminate\\Http\\Request $request, mixed $result)\n * @method static void broadcast(array $channels, string $event, array $payload = [])\n * @method static array|null resolveAuthenticatedUser(\\Illuminate\\Http\\Request $request)\n * @method static void resolveAuthenticatedUserUsing(\\Closure $callback)\n * @method static \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster channel(\\Illuminate\\Contracts\\Broadcasting\\HasBroadcastChannel|string $channel, callable|string $callback, array $options = [])\n * @method static \\Illuminate\\Support\\Collection getChannels()\n * @see \\Illuminate\\Broadcasting\\BroadcastManager\n * @see \\Illuminate\\Broadcasting\\Broadcasters\\Broadcaster\n */\n class Broadcast {\n /**\n * Register the routes for handling broadcast channel authentication and sockets.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function routes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->routes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast user authentication.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function userRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->userRoutes($attributes);\n }\n\n /**\n * Register the routes for handling broadcast authentication and sockets.\n * \n * Alias of \"routes\" method.\n *\n * @param array|null $attributes\n * @return void\n * @static\n */\n public static function channelRoutes($attributes = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->channelRoutes($attributes);\n }\n\n /**\n * Get the socket ID for the given request.\n *\n * @param \\Illuminate\\Http\\Request|null $request\n * @return string|null\n * @static\n */\n public static function socket($request = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->socket($request);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given channels.\n *\n * @static\n */\n public static function on($channels)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->on($channels);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given private channels.\n *\n * @static\n */\n public static function private($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->private($channel);\n }\n\n /**\n * Begin sending an anonymous broadcast to the given presence channels.\n *\n * @static\n */\n public static function presence($channel)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->presence($channel);\n }\n\n /**\n * Begin broadcasting an event.\n *\n * @param mixed $event\n * @return \\Illuminate\\Broadcasting\\PendingBroadcast\n * @static\n */\n public static function event($event = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->event($event);\n }\n\n /**\n * Queue the given event for broadcast.\n *\n * @param mixed $event\n * @return void\n * @static\n */\n public static function queue($event)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->queue($event);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @static\n */\n public static function connection($driver = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->connection($driver);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Get a Pusher instance for the given configuration.\n *\n * @param array $config\n * @return \\Pusher\\Pusher\n * @static\n */\n public static function pusher($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->pusher($config);\n }\n\n /**\n * Get an Ably instance for the given configuration.\n *\n * @param array $config\n * @return \\Ably\\AblyRest\n * @static\n */\n public static function ably($config)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->ably($config);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Broadcasting\\BroadcastManager\n * @static\n */\n public static function forgetDrivers()\n {\n /** @var \\Illuminate\\Broadcasting\\BroadcastManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @see \\Illuminate\\Bus\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n */\n class Bus {\n /**\n * Dispatch a command to its appropriate handler.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function dispatch($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatch($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process.\n * \n * Queueable jobs will be dispatched to the \"sync\" queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchSync($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchSync($command, $handler);\n }\n\n /**\n * Dispatch a command to its appropriate handler in the current process without using the synchronous queue.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return mixed\n * @static\n */\n public static function dispatchNow($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchNow($command, $handler);\n }\n\n /**\n * Attempt to find the batch with the given ID.\n *\n * @param string $batchId\n * @return \\Illuminate\\Bus\\Batch|null\n * @static\n */\n public static function findBatch($batchId)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->findBatch($batchId);\n }\n\n /**\n * Create a new batch of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $jobs\n * @return \\Illuminate\\Bus\\PendingBatch\n * @static\n */\n public static function batch($jobs)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->batch($jobs);\n }\n\n /**\n * Create a new chain of queueable jobs.\n *\n * @param \\Illuminate\\Support\\Collection|array|null $jobs\n * @return \\Illuminate\\Foundation\\Bus\\PendingChain\n * @static\n */\n public static function chain($jobs = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->chain($jobs);\n }\n\n /**\n * Determine if the given command has a handler.\n *\n * @param mixed $command\n * @return bool\n * @static\n */\n public static function hasCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->hasCommandHandler($command);\n }\n\n /**\n * Retrieve the handler for a command.\n *\n * @param mixed $command\n * @return mixed\n * @static\n */\n public static function getCommandHandler($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->getCommandHandler($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler behind a queue.\n *\n * @param mixed $command\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function dispatchToQueue($command)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->dispatchToQueue($command);\n }\n\n /**\n * Dispatch a command to its appropriate handler after the current process.\n *\n * @param mixed $command\n * @param mixed $handler\n * @return void\n * @static\n */\n public static function dispatchAfterResponse($command, $handler = null)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n $instance->dispatchAfterResponse($command, $handler);\n }\n\n /**\n * Set the pipes through which commands should be piped before dispatching.\n *\n * @param array $pipes\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function pipeThrough($pipes)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->pipeThrough($pipes);\n }\n\n /**\n * Map a command to a handler.\n *\n * @param array $map\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function map($map)\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->map($map);\n }\n\n /**\n * Allow dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withDispatchingAfterResponses();\n }\n\n /**\n * Disable dispatching after responses.\n *\n * @return \\Illuminate\\Bus\\Dispatcher\n * @static\n */\n public static function withoutDispatchingAfterResponses()\n {\n /** @var \\Illuminate\\Bus\\Dispatcher $instance */\n return $instance->withoutDispatchingAfterResponses();\n }\n\n /**\n * Specify the jobs that should be dispatched instead of faked.\n *\n * @param array|string $jobsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function except($jobsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->except($jobsToDispatch);\n }\n\n /**\n * Assert if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatched($command, $callback);\n }\n\n /**\n * Assert if a job was pushed exactly once.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedOnce($command);\n }\n\n /**\n * Assert if a job was pushed a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatched($command, $callback);\n }\n\n /**\n * Assert that no jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Assert if a job was explicitly dispatched synchronously based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was pushed synchronously a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedSyncTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedSyncTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedSync($command, $callback);\n }\n\n /**\n * Assert if a job was dispatched after the response was sent based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a job was pushed after the response was sent a number of times.\n *\n * @param string|\\Closure $command\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedAfterResponseTimes($command, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedAfterResponseTimes($command, $times);\n }\n\n /**\n * Determine if a job was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNotDispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Assert if a chain of jobs was dispatched.\n *\n * @param array $expectedChain\n * @return void\n * @static\n */\n public static function assertChained($expectedChain)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertChained($expectedChain);\n }\n\n /**\n * Assert no chained jobs was dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingChained()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingChained();\n }\n\n /**\n * Assert if a job was dispatched with an empty chain based on a truth-test callback.\n *\n * @param string|\\Closure $command\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertDispatchedWithoutChain($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertDispatchedWithoutChain($command, $callback);\n }\n\n /**\n * Create a new assertion about a chained batch.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Support\\Testing\\Fakes\\ChainedBatchTruthTest\n * @static\n */\n public static function chainedBatch($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->chainedBatch($callback);\n }\n\n /**\n * Assert if a batch was dispatched based on a truth-test callback.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function assertBatched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatched($callback);\n }\n\n /**\n * Assert the number of batches that have been dispatched.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertBatchCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertBatchCount($count);\n }\n\n /**\n * Assert that no batched jobs were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingBatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingBatched();\n }\n\n /**\n * Assert that no jobs were dispatched, chained, or batched.\n *\n * @return void\n * @static\n */\n public static function assertNothingPlaced()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n $instance->assertNothingPlaced();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatched($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched synchronously matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedSync($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedSync($command, $callback);\n }\n\n /**\n * Get all of the jobs dispatched after the response was sent matching a truth-test callback.\n *\n * @param string $command\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatchedAfterResponse($command, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedAfterResponse($command, $callback);\n }\n\n /**\n * Get all of the pending batches matching a truth-test callback.\n *\n * @param callable $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function batched($callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->batched($callback);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatched($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatched($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedSync($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedSync($command);\n }\n\n /**\n * Determine if there are any stored commands for a given class.\n *\n * @param string $command\n * @return bool\n * @static\n */\n public static function hasDispatchedAfterResponse($command)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->hasDispatchedAfterResponse($command);\n }\n\n /**\n * Dispatch an empty job batch for testing.\n *\n * @param string $name\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function dispatchFakeBatch($name = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchFakeBatch($name);\n }\n\n /**\n * Record the fake pending batch dispatch.\n *\n * @param \\Illuminate\\Bus\\PendingBatch $pendingBatch\n * @return \\Illuminate\\Bus\\Batch\n * @static\n */\n public static function recordPendingBatch($pendingBatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->recordPendingBatch($pendingBatch);\n }\n\n /**\n * Specify if commands should be serialized and restored when being batched.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\BusFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the batches that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedBatches()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\BusFake $instance */\n return $instance->dispatchedBatches();\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\CacheManager\n * @see \\Illuminate\\Cache\\Repository\n */\n class Cache {\n /**\n * Get a cache store instance by name, wrapped in a repository.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function store($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->store($name);\n }\n\n /**\n * Get a cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Get a memoized cache driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function memo($driver = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->memo($driver);\n }\n\n /**\n * Resolve the given store.\n *\n * @param string $name\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Build a cache repository with the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new cache repository with the given implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @param array $config\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function repository($store, $config = [])\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->repository($store, $config);\n }\n\n /**\n * Re-set the event dispatcher on all resolved cache repositories.\n *\n * @return void\n * @static\n */\n public static function refreshEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->refreshEventDispatcher();\n }\n\n /**\n * Get the default cache driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default cache driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Unset the given driver instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function forgetDriver($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->forgetDriver($name);\n }\n\n /**\n * Disconnect the given driver and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Cache\\CacheManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Cache\\CacheManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if an item exists in the cache.\n *\n * @param array|string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if an item doesn't exist in the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve multiple items from the cache by key.\n * \n * Items not found in the cache will have a null value.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function many($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->many($keys);\n }\n\n /**\n * Obtains multiple cache items by their unique keys.\n *\n * @return iterable\n * @param iterable<string> $keys A list of keys that can be obtained in a single operation.\n * @param mixed $default Default value to return for keys that do not exist.\n * @return iterable<string, mixed> A list of key => value pairs. Cache keys that do not exist or are stale will have $default as value.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function getMultiple($keys, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getMultiple($keys, $default);\n }\n\n /**\n * Retrieve an item from the cache and delete it.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Store an item in the cache.\n *\n * @param array|string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function put($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->put($key, $value, $ttl);\n }\n\n /**\n * Persists data in the cache, uniquely referenced by a key with an optional expiration TTL time.\n *\n * @return bool\n * @param string $key The key of the item to store.\n * @param mixed $value The value of the item to store, must be serializable.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function set($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->set($key, $value, $ttl);\n }\n\n /**\n * Store multiple items in the cache for a given number of seconds.\n *\n * @param array $values\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function putMany($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->putMany($values, $ttl);\n }\n\n /**\n * Persists a set of key => value pairs in the cache, with an optional TTL.\n *\n * @return bool\n * @param iterable $values A list of key => value pairs for a multiple-set operation.\n * @param null|int|\\DateInterval $ttl Optional. The TTL value of this item. If no value is sent and\n * the driver supports TTL then the library may set a default value\n * for it or let the driver take care of that.\n * @return bool True on success and false on failure.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $values is neither an array nor a Traversable,\n * or if any of the $values are not a legal value.\n * @static\n */\n public static function setMultiple($values, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setMultiple($values, $ttl);\n }\n\n /**\n * Store an item in the cache if the key does not exist.\n *\n * @param string $key\n * @param mixed $value\n * @param \\DateTimeInterface|\\DateInterval|int|null $ttl\n * @return bool\n * @static\n */\n public static function add($key, $value, $ttl = null)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->add($key, $value, $ttl);\n }\n\n /**\n * Increment the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function increment($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->increment($key, $value);\n }\n\n /**\n * Decrement the value of an item in the cache.\n *\n * @param string $key\n * @param mixed $value\n * @return int|bool\n * @static\n */\n public static function decrement($key, $value = 1)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->decrement($key, $value);\n }\n\n /**\n * Store an item in the cache indefinitely.\n *\n * @param string $key\n * @param mixed $value\n * @return bool\n * @static\n */\n public static function forever($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forever($key, $value);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure|\\DateTimeInterface|\\DateInterval|int|null $ttl\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function remember($key, $ttl, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->remember($key, $ttl, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function sear($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->sear($key, $callback);\n }\n\n /**\n * Get an item from the cache, or execute the given Closure and store the result forever.\n *\n * @template TCacheValue\n * @param string $key\n * @param \\Closure(): TCacheValue $callback\n * @return TCacheValue\n * @static\n */\n public static function rememberForever($key, $callback)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->rememberForever($key, $callback);\n }\n\n /**\n * Retrieve an item from the cache by key, refreshing it in the background if it is stale.\n *\n * @template TCacheValue\n * @param string $key\n * @param array{ 0: \\DateTimeInterface|\\DateInterval|int, 1: \\DateTimeInterface|\\DateInterval|int } $ttl\n * @param (callable(): TCacheValue) $callback\n * @param array{ seconds?: int, owner?: string }|null $lock\n * @param bool $alwaysDefer\n * @return TCacheValue\n * @static\n */\n public static function flexible($key, $ttl, $callback, $lock = null, $alwaysDefer = false)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->flexible($key, $ttl, $callback, $lock, $alwaysDefer);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Delete an item from the cache by its unique key.\n *\n * @return bool\n * @param string $key The unique cache key of the item to delete.\n * @return bool True if the item was successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if the $key string is not a legal value.\n * @static\n */\n public static function delete($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->delete($key);\n }\n\n /**\n * Deletes multiple cache items in a single operation.\n *\n * @return bool\n * @param iterable<string> $keys A list of string-based keys to be deleted.\n * @return bool True if the items were successfully removed. False if there was an error.\n * @throws \\Psr\\SimpleCache\\InvalidArgumentException\n * MUST be thrown if $keys is neither an array nor a Traversable,\n * or if any of the $keys are not a legal value.\n * @static\n */\n public static function deleteMultiple($keys)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->deleteMultiple($keys);\n }\n\n /**\n * Wipes clean the entire cache's keys.\n *\n * @return bool\n * @return bool True on success and false on failure.\n * @static\n */\n public static function clear()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->clear();\n }\n\n /**\n * Begin executing a new tags operation if the store supports it.\n *\n * @param mixed $names\n * @return \\Illuminate\\Cache\\TaggedCache\n * @throws \\BadMethodCallException\n * @static\n */\n public static function tags($names)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->tags($names);\n }\n\n /**\n * Get the name of the cache store.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getName();\n }\n\n /**\n * Determine if the current store supports tags.\n *\n * @return bool\n * @static\n */\n public static function supportsTags()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->supportsTags();\n }\n\n /**\n * Get the default cache time.\n *\n * @return int|null\n * @static\n */\n public static function getDefaultCacheTime()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getDefaultCacheTime();\n }\n\n /**\n * Set the default cache time in seconds.\n *\n * @param int|null $seconds\n * @return \\Illuminate\\Cache\\Repository\n * @static\n */\n public static function setDefaultCacheTime($seconds)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setDefaultCacheTime($seconds);\n }\n\n /**\n * Get the cache store implementation.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Store\n * @static\n */\n public static function getStore()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getStore();\n }\n\n /**\n * Set the cache store implementation.\n *\n * @param \\Illuminate\\Contracts\\Cache\\Store $store\n * @return static\n * @static\n */\n public static function setStore($store)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->setStore($store);\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getEventDispatcher()\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setEventDispatcher($events)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->setEventDispatcher($events);\n }\n\n /**\n * Determine if a cached value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Retrieve an item from the cache by key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Store an item in the cache for the default time.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Remove an item from the cache.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cache\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cache\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cache\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cache\\Repository::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Cache\\Repository $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a lock instance.\n *\n * @param string $name\n * @param int $seconds\n * @param string|null $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function lock($name, $seconds = 0, $owner = null)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lock($name, $seconds, $owner);\n }\n\n /**\n * Restore a lock instance using the owner identifier.\n *\n * @param string $name\n * @param string $owner\n * @return \\Illuminate\\Contracts\\Cache\\Lock\n * @static\n */\n public static function restoreLock($name, $owner)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->restoreLock($name, $owner);\n }\n\n /**\n * Remove all items from the cache.\n *\n * @return bool\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->flush();\n }\n\n /**\n * Remove all expired tag set entries.\n *\n * @return void\n * @static\n */\n public static function flushStaleTags()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->flushStaleTags();\n }\n\n /**\n * Get the Redis connection instance.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->connection();\n }\n\n /**\n * Get the Redis connection instance that should be used to manage locks.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function lockConnection()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->lockConnection();\n }\n\n /**\n * Specify the name of the connection that should be used to store data.\n *\n * @param string $connection\n * @return void\n * @static\n */\n public static function setConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setConnection($connection);\n }\n\n /**\n * Specify the name of the connection that should be used to manage locks.\n *\n * @param string $connection\n * @return \\Illuminate\\Cache\\RedisStore\n * @static\n */\n public static function setLockConnection($connection)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->setLockConnection($connection);\n }\n\n /**\n * Get the Redis database instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the cache key prefix.\n *\n * @return string\n * @static\n */\n public static function getPrefix()\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n return $instance->getPrefix();\n }\n\n /**\n * Set the cache key prefix.\n *\n * @param string $prefix\n * @return void\n * @static\n */\n public static function setPrefix($prefix)\n {\n /** @var \\Illuminate\\Cache\\RedisStore $instance */\n $instance->setPrefix($prefix);\n }\n\n }\n /**\n * @method static array run(\\Closure|array $tasks)\n * @method static \\Illuminate\\Support\\Defer\\DeferredCallback defer(\\Closure|array $tasks)\n * @see \\Illuminate\\Concurrency\\ConcurrencyManager\n */\n class Concurrency {\n /**\n * Get a driver instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function driver($name = null)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->driver($name);\n }\n\n /**\n * Create an instance of the process concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ProcessDriver\n * @static\n */\n public static function createProcessDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createProcessDriver($config);\n }\n\n /**\n * Create an instance of the fork concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\ForkDriver\n * @throws \\RuntimeException\n * @static\n */\n public static function createForkDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createForkDriver($config);\n }\n\n /**\n * Create an instance of the sync concurrency driver.\n *\n * @param array $config\n * @return \\Illuminate\\Concurrency\\SyncDriver\n * @static\n */\n public static function createSyncDriver($config)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->createSyncDriver($config);\n }\n\n /**\n * Get the default instance name.\n *\n * @return string\n * @static\n */\n public static function getDefaultInstance()\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getDefaultInstance();\n }\n\n /**\n * Set the default instance name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultInstance($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->setDefaultInstance($name);\n }\n\n /**\n * Get the instance specific configuration.\n *\n * @param string $name\n * @return array\n * @static\n */\n public static function getInstanceConfig($name)\n {\n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->getInstanceConfig($name);\n }\n\n /**\n * Get an instance by name.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function instance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->instance($name);\n }\n\n /**\n * Unset the given instances.\n *\n * @param array|string|null $name\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function forgetInstance($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->forgetInstance($name);\n }\n\n /**\n * Disconnect the given instance and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom instance creator Closure.\n *\n * @param string $name\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function extend($name, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->extend($name, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Concurrency\\ConcurrencyManager\n * @static\n */\n public static function setApplication($app)\n {\n //Method inherited from \\Illuminate\\Support\\MultipleInstanceManager \n /** @var \\Illuminate\\Concurrency\\ConcurrencyManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @see \\Illuminate\\Config\\Repository\n */\n class Config {\n /**\n * Determine if the given configuration value exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Get the specified configuration value.\n *\n * @param array|string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get many configuration values.\n *\n * @param array<string|int,mixed> $keys\n * @return array<string,mixed>\n * @static\n */\n public static function getMany($keys)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->getMany($keys);\n }\n\n /**\n * Get the specified string configuration value.\n *\n * @param string $key\n * @param (\\Closure():(string|null))|string|null $default\n * @return string\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Get the specified integer configuration value.\n *\n * @param string $key\n * @param (\\Closure():(int|null))|int|null $default\n * @return int\n * @static\n */\n public static function integer($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Get the specified float configuration value.\n *\n * @param string $key\n * @param (\\Closure():(float|null))|float|null $default\n * @return float\n * @static\n */\n public static function float($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Get the specified boolean configuration value.\n *\n * @param string $key\n * @param (\\Closure():(bool|null))|bool|null $default\n * @return bool\n * @static\n */\n public static function boolean($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Get the specified array configuration value.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return array<array-key, mixed>\n * @static\n */\n public static function array($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->array($key, $default);\n }\n\n /**\n * Get the specified array configuration value as a collection.\n *\n * @param string $key\n * @param (\\Closure():(array<array-key, mixed>|null))|array<array-key, mixed>|null $default\n * @return Collection<array-key, mixed>\n * @static\n */\n public static function collection($key, $default = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->collection($key, $default);\n }\n\n /**\n * Set a given configuration value.\n *\n * @param array|string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function set($key, $value = null)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->set($key, $value);\n }\n\n /**\n * Prepend a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function prepend($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->prepend($key, $value);\n }\n\n /**\n * Push a value onto an array configuration value.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Get all of the configuration items for the application.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Determine if the given configuration option exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function offsetExists($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * Get a configuration option.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function offsetGet($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * Set a configuration option.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($key, $value)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetSet($key, $value);\n }\n\n /**\n * Unset a configuration option.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function offsetUnset($key)\n {\n /** @var \\Illuminate\\Config\\Repository $instance */\n $instance->offsetUnset($key);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Config\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Config\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Config\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Config\\Repository::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Log\\Context\\Repository\n */\n class Context {\n /**\n * Determine if the given key exists.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the given key is missing.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if the given key exists within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hasHidden($key);\n }\n\n /**\n * Determine if the given key is missing within the hidden context data.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function missingHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->missingHidden($key);\n }\n\n /**\n * Retrieve all the context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->all();\n }\n\n /**\n * Retrieve all the hidden context data.\n *\n * @return array<string, mixed>\n * @static\n */\n public static function allHidden()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->allHidden();\n }\n\n /**\n * Retrieve the given key's value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->getHidden($key, $default);\n }\n\n /**\n * Retrieve the given key's value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Retrieve the given key's hidden value and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pullHidden($key, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pullHidden($key, $default);\n }\n\n /**\n * Retrieve only the values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->only($keys);\n }\n\n /**\n * Retrieve only the hidden values of the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function onlyHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->onlyHidden($keys);\n }\n\n /**\n * Retrieve all values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->except($keys);\n }\n\n /**\n * Retrieve all hidden values except those with the given keys.\n *\n * @param array<int, string> $keys\n * @return array<string, mixed>\n * @static\n */\n public static function exceptHidden($keys)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->exceptHidden($keys);\n }\n\n /**\n * Add a context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function add($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->add($key, $value);\n }\n\n /**\n * Add a hidden context value.\n *\n * @param string|array<string, mixed> $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHidden($key, $value = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHidden($key, $value);\n }\n\n /**\n * Add a context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function remember($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->remember($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet, and return the value.\n *\n * @param string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function rememberHidden($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->rememberHidden($key, $value);\n }\n\n /**\n * Forget the given context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forget($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forget($key);\n }\n\n /**\n * Forget the given hidden context key.\n *\n * @param string|array<int, string> $key\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function forgetHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->forgetHidden($key);\n }\n\n /**\n * Add a context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addIf($key, $value);\n }\n\n /**\n * Add a hidden context value if it does not exist yet.\n *\n * @param string $key\n * @param mixed $value\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function addHiddenIf($key, $value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->addHiddenIf($key, $value);\n }\n\n /**\n * Push the given values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function push($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->push($key, ...$values);\n }\n\n /**\n * Pop the latest value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function pop($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pop($key);\n }\n\n /**\n * Push the given hidden values onto the key's stack.\n *\n * @param string $key\n * @param mixed $values\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function pushHidden($key, ...$values)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->pushHidden($key, ...$values);\n }\n\n /**\n * Pop the latest hidden value from the key's stack.\n *\n * @param string $key\n * @return mixed\n * @throws \\RuntimeException\n * @static\n */\n public static function popHidden($key)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->popHidden($key);\n }\n\n /**\n * Increment a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement a context counter.\n *\n * @param string $key\n * @param int $amount\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Determine if the given value is in the given stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function stackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->stackContains($key, $value, $strict);\n }\n\n /**\n * Determine if the given value is in the given hidden stack.\n *\n * @param string $key\n * @param mixed $value\n * @param bool $strict\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function hiddenStackContains($key, $value, $strict = false)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hiddenStackContains($key, $value, $strict);\n }\n\n /**\n * Run the callback function with the given context values and restore the original context state when complete.\n *\n * @param callable $callback\n * @param array<string, mixed> $data\n * @param array<string, mixed> $hidden\n * @return mixed\n * @throws \\Throwable\n * @static\n */\n public static function scope($callback, $data = [], $hidden = [])\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->scope($callback, $data, $hidden);\n }\n\n /**\n * Determine if the repository is empty.\n *\n * @return bool\n * @static\n */\n public static function isEmpty()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->isEmpty();\n }\n\n /**\n * Execute the given callback when context is about to be dehydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function dehydrating($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrating($callback);\n }\n\n /**\n * Execute the given callback when context has been hydrated.\n *\n * @param callable $callback\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function hydrated($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrated($callback);\n }\n\n /**\n * Handle unserialize exceptions using the given callback.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleUnserializeExceptionsUsing($callback)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->handleUnserializeExceptionsUsing($callback);\n }\n\n /**\n * Flush all context data.\n *\n * @return \\Illuminate\\Log\\Context\\Repository\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->flush();\n }\n\n /**\n * Dehydrate the context data.\n *\n * @internal\n * @return \\Illuminate\\Log\\Context\\?array\n * @static\n */\n public static function dehydrate()\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->dehydrate();\n }\n\n /**\n * Hydrate the context instance.\n *\n * @internal\n * @param \\Illuminate\\Log\\Context\\?array $context\n * @return \\Illuminate\\Log\\Context\\Repository\n * @throws \\RuntimeException\n * @static\n */\n public static function hydrate($context)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->hydrate($context);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Log\\Context\\Repository::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Log\\Context\\Repository::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Log\\Context\\Repository::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Log\\Context\\Repository::flushMacros();\n }\n\n /**\n * Restore the model from the model identifier instance.\n *\n * @param \\Illuminate\\Contracts\\Database\\ModelIdentifier $value\n * @return \\Illuminate\\Database\\Eloquent\\Model\n * @static\n */\n public static function restoreModel($value)\n {\n /** @var \\Illuminate\\Log\\Context\\Repository $instance */\n return $instance->restoreModel($value);\n }\n\n }\n /**\n * @see \\Illuminate\\Cookie\\CookieJar\n */\n class Cookie {\n /**\n * Create a new cookie instance.\n *\n * @param string $name\n * @param string $value\n * @param int $minutes\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function make($name, $value, $minutes = 0, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->make($name, $value, $minutes, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Create a cookie that lasts \"forever\" (400 days).\n *\n * @param string $name\n * @param string $value\n * @param string|null $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param bool $httpOnly\n * @param bool $raw\n * @param string|null $sameSite\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forever($name, $value, $path = null, $domain = null, $secure = null, $httpOnly = true, $raw = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forever($name, $value, $path, $domain, $secure, $httpOnly, $raw, $sameSite);\n }\n\n /**\n * Expire the given cookie.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie\n * @static\n */\n public static function forget($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->forget($name, $path, $domain);\n }\n\n /**\n * Determine if a cookie has been queued.\n *\n * @param string $key\n * @param string|null $path\n * @return bool\n * @static\n */\n public static function hasQueued($key, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->hasQueued($key, $path);\n }\n\n /**\n * Get a queued cookie instance.\n *\n * @param string $key\n * @param mixed $default\n * @param string|null $path\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie|null\n * @static\n */\n public static function queued($key, $default = null, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->queued($key, $default, $path);\n }\n\n /**\n * Queue a cookie to send with the next response.\n *\n * @param mixed $parameters\n * @return void\n * @static\n */\n public static function queue(...$parameters)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->queue(...$parameters);\n }\n\n /**\n * Queue a cookie to expire with the next response.\n *\n * @param string $name\n * @param string|null $path\n * @param string|null $domain\n * @return void\n * @static\n */\n public static function expire($name, $path = null, $domain = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->expire($name, $path, $domain);\n }\n\n /**\n * Remove a cookie from the queue.\n *\n * @param string $name\n * @param string|null $path\n * @return void\n * @static\n */\n public static function unqueue($name, $path = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n $instance->unqueue($name, $path);\n }\n\n /**\n * Set the default path and domain for the jar.\n *\n * @param string $path\n * @param string|null $domain\n * @param bool|null $secure\n * @param string|null $sameSite\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function setDefaultPathAndDomain($path, $domain, $secure = false, $sameSite = null)\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->setDefaultPathAndDomain($path, $domain, $secure, $sameSite);\n }\n\n /**\n * Get the cookies which have been queued for the next request.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\Cookie[]\n * @static\n */\n public static function getQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->getQueuedCookies();\n }\n\n /**\n * Flush the cookies which have been queued for the next request.\n *\n * @return \\Illuminate\\Cookie\\CookieJar\n * @static\n */\n public static function flushQueuedCookies()\n {\n /** @var \\Illuminate\\Cookie\\CookieJar $instance */\n return $instance->flushQueuedCookies();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Cookie\\CookieJar::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Cookie\\CookieJar::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Cookie\\CookieJar::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Cookie\\CookieJar::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Encryption\\Encrypter\n */\n class Crypt {\n /**\n * Determine if the given key and cipher combination is valid.\n *\n * @param string $key\n * @param string $cipher\n * @return bool\n * @static\n */\n public static function supported($key, $cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::supported($key, $cipher);\n }\n\n /**\n * Create a new encryption key for the given cipher.\n *\n * @param string $cipher\n * @return string\n * @static\n */\n public static function generateKey($cipher)\n {\n return \\Illuminate\\Encryption\\Encrypter::generateKey($cipher);\n }\n\n /**\n * Encrypt the given value.\n *\n * @param mixed $value\n * @param bool $serialize\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encrypt($value, $serialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encrypt($value, $serialize);\n }\n\n /**\n * Encrypt a string without serialization.\n *\n * @param string $value\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\EncryptException\n * @static\n */\n public static function encryptString($value)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->encryptString($value);\n }\n\n /**\n * Decrypt the given value.\n *\n * @param string $payload\n * @param bool $unserialize\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decrypt($payload, $unserialize = true)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decrypt($payload, $unserialize);\n }\n\n /**\n * Decrypt the given string without unserialization.\n *\n * @param string $payload\n * @return string\n * @throws \\Illuminate\\Contracts\\Encryption\\DecryptException\n * @static\n */\n public static function decryptString($payload)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->decryptString($payload);\n }\n\n /**\n * Get the encryption key that the encrypter is currently using.\n *\n * @return string\n * @static\n */\n public static function getKey()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getKey();\n }\n\n /**\n * Get the current encryption key and all previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getAllKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getAllKeys();\n }\n\n /**\n * Get the previous encryption keys.\n *\n * @return array\n * @static\n */\n public static function getPreviousKeys()\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->getPreviousKeys();\n }\n\n /**\n * Set the previous / legacy encryption keys that should be utilized if decryption fails.\n *\n * @param array $keys\n * @return \\Illuminate\\Encryption\\Encrypter\n * @static\n */\n public static function previousKeys($keys)\n {\n /** @var \\Illuminate\\Encryption\\Encrypter $instance */\n return $instance->previousKeys($keys);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\DatabaseManager\n */\n class DB {\n /**\n * Get a database connection instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Build a database connection instance from the given configuration.\n *\n * @param array $config\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Calculate the dynamic connection name for an on-demand connection based on its configuration.\n *\n * @param array $config\n * @return string\n * @static\n */\n public static function calculateDynamicConnectionName($config)\n {\n return \\Illuminate\\Database\\DatabaseManager::calculateDynamicConnectionName($config);\n }\n\n /**\n * Get a database connection instance from the given configuration.\n *\n * @param \\UnitEnum|string $name\n * @param array $config\n * @param bool $force\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function connectUsing($name, $config, $force = false)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->connectUsing($name, $config, $force);\n }\n\n /**\n * Disconnect from the given database and remove from local cache.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Disconnect from the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Reconnect to the given database.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function reconnect($name = null)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Set the default database connection for the callback execution.\n *\n * @param \\UnitEnum|string $name\n * @param callable $callback\n * @return mixed\n * @static\n */\n public static function usingConnection($name, $callback)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->usingConnection($name, $callback);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Get all of the supported drivers.\n *\n * @return string[]\n * @static\n */\n public static function supportedDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->supportedDrivers();\n }\n\n /**\n * Get all of the drivers that are actually available.\n *\n * @return string[]\n * @static\n */\n public static function availableDrivers()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->availableDrivers();\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Remove an extension connection resolver.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function forgetExtension($name)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->forgetExtension($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string, \\Illuminate\\Database\\Connection>\n * @static\n */\n public static function getConnections()\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Set the database reconnector callback.\n *\n * @param callable $reconnector\n * @return void\n * @static\n */\n public static function setReconnector($reconnector)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n $instance->setReconnector($reconnector);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Database\\DatabaseManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\DatabaseManager::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\DatabaseManager::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Database\\DatabaseManager::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\DatabaseManager::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\DatabaseManager $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Get a human-readable name for the given connection driver.\n *\n * @return string\n * @static\n */\n public static function getDriverTitle()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverTitle();\n }\n\n /**\n * Determine if the connected database is a MariaDB database.\n *\n * @return bool\n * @static\n */\n public static function isMaria()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->isMaria();\n }\n\n /**\n * Get the server version for the connection.\n *\n * @return string\n * @static\n */\n public static function getServerVersion()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getServerVersion();\n }\n\n /**\n * Get a schema builder instance for the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\MariaDbBuilder\n * @static\n */\n public static function getSchemaBuilder()\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaBuilder();\n }\n\n /**\n * Get the schema state for the connection.\n *\n * @param \\Illuminate\\Filesystem\\Filesystem|null $files\n * @param callable|null $processFactory\n * @return \\Illuminate\\Database\\Schema\\MariaDbSchemaState\n * @static\n */\n public static function getSchemaState($files = null, $processFactory = null)\n {\n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaState($files, $processFactory);\n }\n\n /**\n * Run an insert statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param string|null $sequence\n * @return bool\n * @static\n */\n public static function insert($query, $bindings = [], $sequence = null)\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->insert($query, $bindings, $sequence);\n }\n\n /**\n * Get the connection's last insert ID.\n *\n * @return string|int|null\n * @static\n */\n public static function getLastInsertId()\n {\n //Method inherited from \\Illuminate\\Database\\MySqlConnection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getLastInsertId();\n }\n\n /**\n * Set the query grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultQueryGrammar();\n }\n\n /**\n * Set the schema grammar to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultSchemaGrammar();\n }\n\n /**\n * Set the query post processor to the default implementation.\n *\n * @return void\n * @static\n */\n public static function useDefaultPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->useDefaultPostProcessor();\n }\n\n /**\n * Begin a fluent query against a database table.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|\\UnitEnum|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function table($table, $as = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->table($table, $as);\n }\n\n /**\n * Get a new query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function query()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->query();\n }\n\n /**\n * Run a select statement and return a single result.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @static\n */\n public static function selectOne($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectOne($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement and return the first column of the first row.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return mixed\n * @throws \\Illuminate\\Database\\MultipleColumnsSelectedException\n * @static\n */\n public static function scalar($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->scalar($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return array\n * @static\n */\n public static function selectFromWriteConnection($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectFromWriteConnection($query, $bindings);\n }\n\n /**\n * Run a select statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function select($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->select($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns all of the result sets.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return array\n * @static\n */\n public static function selectResultSets($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->selectResultSets($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run a select statement against the database and returns a generator.\n *\n * @param string $query\n * @param array $bindings\n * @param bool $useReadPdo\n * @return \\Generator<int, \\stdClass>\n * @static\n */\n public static function cursor($query, $bindings = [], $useReadPdo = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->cursor($query, $bindings, $useReadPdo);\n }\n\n /**\n * Run an update statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function update($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->update($query, $bindings);\n }\n\n /**\n * Run a delete statement against the database.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function delete($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->delete($query, $bindings);\n }\n\n /**\n * Execute an SQL statement and return the boolean result.\n *\n * @param string $query\n * @param array $bindings\n * @return bool\n * @static\n */\n public static function statement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->statement($query, $bindings);\n }\n\n /**\n * Run an SQL statement and get the number of rows affected.\n *\n * @param string $query\n * @param array $bindings\n * @return int\n * @static\n */\n public static function affectingStatement($query, $bindings = [])\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->affectingStatement($query, $bindings);\n }\n\n /**\n * Run a raw, unprepared query against the PDO connection.\n *\n * @param string $query\n * @return bool\n * @static\n */\n public static function unprepared($query)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->unprepared($query);\n }\n\n /**\n * Get the number of open connections for the database.\n *\n * @return int|null\n * @static\n */\n public static function threadCount()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->threadCount();\n }\n\n /**\n * Execute the given callback in \"dry run\" mode.\n *\n * @param (\\Closure(\\Illuminate\\Database\\Connection): mixed) $callback\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function pretend($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretend($callback);\n }\n\n /**\n * Execute the given callback without \"pretending\".\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutPretending($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutPretending($callback);\n }\n\n /**\n * Bind values to their parameters in the given statement.\n *\n * @param \\PDOStatement $statement\n * @param array $bindings\n * @return void\n * @static\n */\n public static function bindValues($statement, $bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->bindValues($statement, $bindings);\n }\n\n /**\n * Prepare the query bindings for execution.\n *\n * @param array $bindings\n * @return array\n * @static\n */\n public static function prepareBindings($bindings)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->prepareBindings($bindings);\n }\n\n /**\n * Log a query in the connection's query log.\n *\n * @param string $query\n * @param array $bindings\n * @param float|null $time\n * @return void\n * @static\n */\n public static function logQuery($query, $bindings, $time = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->logQuery($query, $bindings, $time);\n }\n\n /**\n * Register a callback to be invoked when the connection queries for longer than a given amount of time.\n *\n * @param \\DateTimeInterface|\\Carbon\\CarbonInterval|float|int $threshold\n * @param (callable(\\Illuminate\\Database\\Connection, \\Illuminate\\Database\\Events\\QueryExecuted): mixed) $handler\n * @return void\n * @static\n */\n public static function whenQueryingForLongerThan($threshold, $handler)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->whenQueryingForLongerThan($threshold, $handler);\n }\n\n /**\n * Allow all the query duration handlers to run again, even if they have already run.\n *\n * @return void\n * @static\n */\n public static function allowQueryDurationHandlersToRunAgain()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->allowQueryDurationHandlersToRunAgain();\n }\n\n /**\n * Get the duration of all run queries in milliseconds.\n *\n * @return float\n * @static\n */\n public static function totalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->totalQueryDuration();\n }\n\n /**\n * Reset the duration of all run queries.\n *\n * @return void\n * @static\n */\n public static function resetTotalQueryDuration()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->resetTotalQueryDuration();\n }\n\n /**\n * Reconnect to the database if a PDO connection is missing.\n *\n * @return void\n * @static\n */\n public static function reconnectIfMissingConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->reconnectIfMissingConnection();\n }\n\n /**\n * Register a hook to be run just before a database transaction is started.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeStartingTransaction($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeStartingTransaction($callback);\n }\n\n /**\n * Register a hook to be run just before a database query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function beforeExecuting($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->beforeExecuting($callback);\n }\n\n /**\n * Register a database query listener with the connection.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function listen($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->listen($callback);\n }\n\n /**\n * Get a new raw query expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->raw($value);\n }\n\n /**\n * Escape a value for safe SQL embedding.\n *\n * @param string|float|int|bool|null $value\n * @param bool $binary\n * @return string\n * @static\n */\n public static function escape($value, $binary = false)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->escape($value, $binary);\n }\n\n /**\n * Determine if the database connection has modified any database records.\n *\n * @return bool\n * @static\n */\n public static function hasModifiedRecords()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->hasModifiedRecords();\n }\n\n /**\n * Indicate if any records have been modified.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function recordsHaveBeenModified($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->recordsHaveBeenModified($value);\n }\n\n /**\n * Set the record modification state.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setRecordModificationState($value)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setRecordModificationState($value);\n }\n\n /**\n * Reset the record modification state.\n *\n * @return void\n * @static\n */\n public static function forgetRecordModificationState()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->forgetRecordModificationState();\n }\n\n /**\n * Indicate that the connection should use the write PDO connection for reads.\n *\n * @param bool $value\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function useWriteConnectionWhenReading($value = true)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->useWriteConnectionWhenReading($value);\n }\n\n /**\n * Get the current PDO connection.\n *\n * @return \\PDO\n * @static\n */\n public static function getPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPdo();\n }\n\n /**\n * Get the current PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawPdo();\n }\n\n /**\n * Get the current PDO connection used for reading.\n *\n * @return \\PDO\n * @static\n */\n public static function getReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getReadPdo();\n }\n\n /**\n * Get the current read PDO connection parameter without executing any reconnect logic.\n *\n * @return \\PDO|\\Closure|null\n * @static\n */\n public static function getRawReadPdo()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawReadPdo();\n }\n\n /**\n * Set the PDO connection.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPdo($pdo);\n }\n\n /**\n * Set the PDO connection used for reading.\n *\n * @param \\PDO|\\Closure|null $pdo\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadPdo($pdo)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadPdo($pdo);\n }\n\n /**\n * Get the database connection name.\n *\n * @return string|null\n * @static\n */\n public static function getName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getName();\n }\n\n /**\n * Get the database connection full name.\n *\n * @return string|null\n * @static\n */\n public static function getNameWithReadWriteType()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getNameWithReadWriteType();\n }\n\n /**\n * Get an option from the configuration options.\n *\n * @param string|null $option\n * @return mixed\n * @static\n */\n public static function getConfig($option = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getConfig($option);\n }\n\n /**\n * Get the PDO driver name.\n *\n * @return string\n * @static\n */\n public static function getDriverName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDriverName();\n }\n\n /**\n * Get the query grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getQueryGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryGrammar();\n }\n\n /**\n * Set the query grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setQueryGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setQueryGrammar($grammar);\n }\n\n /**\n * Get the schema grammar used by the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\Grammars\\Grammar\n * @static\n */\n public static function getSchemaGrammar()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getSchemaGrammar();\n }\n\n /**\n * Set the schema grammar used by the connection.\n *\n * @param \\Illuminate\\Database\\Schema\\Grammars\\Grammar $grammar\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setSchemaGrammar($grammar)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setSchemaGrammar($grammar);\n }\n\n /**\n * Get the query post processor used by the connection.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getPostProcessor()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getPostProcessor();\n }\n\n /**\n * Set the query post processor used by the connection.\n *\n * @param \\Illuminate\\Database\\Query\\Processors\\Processor $processor\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setPostProcessor($processor)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setPostProcessor($processor);\n }\n\n /**\n * Get the event dispatcher used by the connection.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getEventDispatcher();\n }\n\n /**\n * Set the event dispatcher instance on the connection.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setEventDispatcher($events)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setEventDispatcher($events);\n }\n\n /**\n * Unset the event dispatcher for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetEventDispatcher()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetEventDispatcher();\n }\n\n /**\n * Set the transaction manager instance on the connection.\n *\n * @param \\Illuminate\\Database\\DatabaseTransactionsManager $manager\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTransactionManager($manager)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTransactionManager($manager);\n }\n\n /**\n * Unset the transaction manager for this connection.\n *\n * @return void\n * @static\n */\n public static function unsetTransactionManager()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->unsetTransactionManager();\n }\n\n /**\n * Determine if the connection is in a \"dry run\".\n *\n * @return bool\n * @static\n */\n public static function pretending()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->pretending();\n }\n\n /**\n * Get the connection query log.\n *\n * @return \\Illuminate\\Database\\array{query: string, bindings: array, time: float|null}[]\n * @static\n */\n public static function getQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getQueryLog();\n }\n\n /**\n * Get the connection query log with embedded bindings.\n *\n * @return array\n * @static\n */\n public static function getRawQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getRawQueryLog();\n }\n\n /**\n * Clear the query log.\n *\n * @return void\n * @static\n */\n public static function flushQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->flushQueryLog();\n }\n\n /**\n * Enable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function enableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->enableQueryLog();\n }\n\n /**\n * Disable the query log on the connection.\n *\n * @return void\n * @static\n */\n public static function disableQueryLog()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->disableQueryLog();\n }\n\n /**\n * Determine whether we're logging queries.\n *\n * @return bool\n * @static\n */\n public static function logging()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->logging();\n }\n\n /**\n * Get the name of the connected database.\n *\n * @return string\n * @static\n */\n public static function getDatabaseName()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getDatabaseName();\n }\n\n /**\n * Set the name of the connected database.\n *\n * @param string $database\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setDatabaseName($database)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setDatabaseName($database);\n }\n\n /**\n * Set the read / write type of the connection.\n *\n * @param string|null $readWriteType\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setReadWriteType($readWriteType)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setReadWriteType($readWriteType);\n }\n\n /**\n * Get the table prefix for the connection.\n *\n * @return string\n * @static\n */\n public static function getTablePrefix()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->getTablePrefix();\n }\n\n /**\n * Set the table prefix in use by the connection.\n *\n * @param string $prefix\n * @return \\Illuminate\\Database\\MariaDbConnection\n * @static\n */\n public static function setTablePrefix($prefix)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->setTablePrefix($prefix);\n }\n\n /**\n * Execute the given callback without table prefix.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutTablePrefix($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->withoutTablePrefix($callback);\n }\n\n /**\n * Register a connection resolver.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function resolverFor($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n \\Illuminate\\Database\\MariaDbConnection::resolverFor($driver, $callback);\n }\n\n /**\n * Get the connection resolver for the given driver.\n *\n * @param string $driver\n * @return \\Closure|null\n * @static\n */\n public static function getResolver($driver)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n return \\Illuminate\\Database\\MariaDbConnection::getResolver($driver);\n }\n\n /**\n * @template TReturn of mixed\n * \n * Execute a Closure within a transaction.\n * @param (\\Closure(static): TReturn) $callback\n * @param int $attempts\n * @return TReturn\n * @throws \\Throwable\n * @static\n */\n public static function transaction($callback, $attempts = 1)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transaction($callback, $attempts);\n }\n\n /**\n * Start a new database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function beginTransaction()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->beginTransaction();\n }\n\n /**\n * Commit the active database transaction.\n *\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function commit()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->commit();\n }\n\n /**\n * Rollback the active database transaction.\n *\n * @param int|null $toLevel\n * @return void\n * @throws \\Throwable\n * @static\n */\n public static function rollBack($toLevel = null)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->rollBack($toLevel);\n }\n\n /**\n * Get the number of active transactions.\n *\n * @return int\n * @static\n */\n public static function transactionLevel()\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n return $instance->transactionLevel();\n }\n\n /**\n * Execute the callback after a transaction commits.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterCommit($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterCommit($callback);\n }\n\n /**\n * Execute the callback after a transaction rolls back.\n *\n * @param callable $callback\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function afterRollBack($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Connection \n /** @var \\Illuminate\\Database\\MariaDbConnection $instance */\n $instance->afterRollBack($callback);\n }\n\n }\n /**\n * @see \\Illuminate\\Events\\Dispatcher\n * @see \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n */\n class Event {\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|string $events\n * @param \\Illuminate\\Events\\Queued\\Closure|callable|array|class-string|null $listener\n * @return void\n * @static\n */\n public static function listen($events, $listener = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->listen($events, $listener);\n }\n\n /**\n * Determine if a given event has listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasListeners($eventName);\n }\n\n /**\n * Determine if the given event has any wildcard listeners.\n *\n * @param string $eventName\n * @return bool\n * @static\n */\n public static function hasWildcardListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->hasWildcardListeners($eventName);\n }\n\n /**\n * Register an event and payload to be fired later.\n *\n * @param string $event\n * @param object|array $payload\n * @return void\n * @static\n */\n public static function push($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->push($event, $payload);\n }\n\n /**\n * Flush a set of pushed events.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function flush($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->flush($event);\n }\n\n /**\n * Register an event subscriber with the dispatcher.\n *\n * @param object|string $subscriber\n * @return void\n * @static\n */\n public static function subscribe($subscriber)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->subscribe($subscriber);\n }\n\n /**\n * Fire an event until the first non-null response is returned.\n *\n * @param string|object $event\n * @param mixed $payload\n * @return mixed\n * @static\n */\n public static function until($event, $payload = [])\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->until($event, $payload);\n }\n\n /**\n * Fire an event and call the listeners.\n *\n * @param string|object $event\n * @param mixed $payload\n * @param bool $halt\n * @return array|null\n * @static\n */\n public static function dispatch($event, $payload = [], $halt = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->dispatch($event, $payload, $halt);\n }\n\n /**\n * Get all of the listeners for a given event name.\n *\n * @param string $eventName\n * @return array\n * @static\n */\n public static function getListeners($eventName)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getListeners($eventName);\n }\n\n /**\n * Register an event listener with the dispatcher.\n *\n * @param \\Closure|string|array $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function makeListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->makeListener($listener, $wildcard);\n }\n\n /**\n * Create a class based listener using the IoC container.\n *\n * @param string $listener\n * @param bool $wildcard\n * @return \\Closure\n * @static\n */\n public static function createClassListener($listener, $wildcard = false)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->createClassListener($listener, $wildcard);\n }\n\n /**\n * Remove a set of listeners from the dispatcher.\n *\n * @param string $event\n * @return void\n * @static\n */\n public static function forget($event)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forget($event);\n }\n\n /**\n * Forget all of the pushed listeners.\n *\n * @return void\n * @static\n */\n public static function forgetPushed()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n $instance->forgetPushed();\n }\n\n /**\n * Set the queue resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setQueueResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setQueueResolver($resolver);\n }\n\n /**\n * Set the database transaction manager resolver implementation.\n *\n * @param callable $resolver\n * @return \\Illuminate\\Events\\Dispatcher\n * @static\n */\n public static function setTransactionManagerResolver($resolver)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->setTransactionManagerResolver($resolver);\n }\n\n /**\n * Execute the given callback while deferring events, then dispatch all deferred events.\n *\n * @param callable $callback\n * @param array|null $events\n * @return mixed\n * @static\n */\n public static function defer($callback, $events = null)\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->defer($callback, $events);\n }\n\n /**\n * Gets the raw, unprepared listeners.\n *\n * @return array\n * @static\n */\n public static function getRawListeners()\n {\n /** @var \\Illuminate\\Events\\Dispatcher $instance */\n return $instance->getRawListeners();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Events\\Dispatcher::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Events\\Dispatcher::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Events\\Dispatcher::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Events\\Dispatcher::flushMacros();\n }\n\n /**\n * Specify the events that should be dispatched instead of faked.\n *\n * @param array|string $eventsToDispatch\n * @return \\Illuminate\\Support\\Testing\\Fakes\\EventFake\n * @static\n */\n public static function except($eventsToDispatch)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->except($eventsToDispatch);\n }\n\n /**\n * Assert if an event has a listener attached to it.\n *\n * @param string $expectedEvent\n * @param string|array $expectedListener\n * @return void\n * @static\n */\n public static function assertListening($expectedEvent, $expectedListener)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertListening($expectedEvent, $expectedListener);\n }\n\n /**\n * Assert if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatched($event, $callback);\n }\n\n /**\n * Assert if an event was dispatched exactly once.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedOnce($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedOnce($event);\n }\n\n /**\n * Assert if an event was dispatched a number of times.\n *\n * @param string $event\n * @param int $times\n * @return void\n * @static\n */\n public static function assertDispatchedTimes($event, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertDispatchedTimes($event, $times);\n }\n\n /**\n * Determine if an event was dispatched based on a truth-test callback.\n *\n * @param string|\\Closure $event\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotDispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNotDispatched($event, $callback);\n }\n\n /**\n * Assert that no events were dispatched.\n *\n * @return void\n * @static\n */\n public static function assertNothingDispatched()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n $instance->assertNothingDispatched();\n }\n\n /**\n * Get all of the events matching a truth-test callback.\n *\n * @param string $event\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dispatched($event, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatched($event, $callback);\n }\n\n /**\n * Determine if the given event has been dispatched.\n *\n * @param string $event\n * @return bool\n * @static\n */\n public static function hasDispatched($event)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->hasDispatched($event);\n }\n\n /**\n * Get the events that have been dispatched.\n *\n * @return array\n * @static\n */\n public static function dispatchedEvents()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\EventFake $instance */\n return $instance->dispatchedEvents();\n }\n\n }\n /**\n * @see \\Illuminate\\Filesystem\\Filesystem\n */\n class File {\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->missing($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @param bool $lock\n * @return string\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function get($path, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->get($path, $lock);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @param bool $lock\n * @return array\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function json($path, $flags = 0, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->json($path, $flags, $lock);\n }\n\n /**\n * Get contents of a file with shared access.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function sharedGet($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->sharedGet($path);\n }\n\n /**\n * Get the returned value of a file.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function getRequire($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->getRequire($path, $data);\n }\n\n /**\n * Require the given file once.\n *\n * @param string $path\n * @param array $data\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function requireOnce($path, $data = [])\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->requireOnce($path, $data);\n }\n\n /**\n * Get the contents of a file one line at a time.\n *\n * @param string $path\n * @return \\Illuminate\\Support\\LazyCollection\n * @throws \\Illuminate\\Contracts\\Filesystem\\FileNotFoundException\n * @static\n */\n public static function lines($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lines($path);\n }\n\n /**\n * Get the hash of the file at the given path.\n *\n * @param string $path\n * @param string $algorithm\n * @return string|false\n * @static\n */\n public static function hash($path, $algorithm = 'md5')\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hash($path, $algorithm);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param string $contents\n * @param bool $lock\n * @return int|bool\n * @static\n */\n public static function put($path, $contents, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->put($path, $contents, $lock);\n }\n\n /**\n * Write the contents of a file, replacing it atomically if it already exists.\n *\n * @param string $path\n * @param string $content\n * @param int|null $mode\n * @return void\n * @static\n */\n public static function replace($path, $content, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replace($path, $content, $mode);\n }\n\n /**\n * Replace a given string within a given file.\n *\n * @param array|string $search\n * @param array|string $replace\n * @param string $path\n * @return void\n * @static\n */\n public static function replaceInFile($search, $replace, $path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->replaceInFile($search, $replace, $path);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @return int\n * @static\n */\n public static function prepend($path, $data)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->prepend($path, $data);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param bool $lock\n * @return int\n * @static\n */\n public static function append($path, $data, $lock = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->append($path, $data, $lock);\n }\n\n /**\n * Get or set UNIX mode of a file or directory.\n *\n * @param string $path\n * @param int|null $mode\n * @return mixed\n * @static\n */\n public static function chmod($path, $mode = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->chmod($path, $mode);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function move($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->move($path, $target);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $path\n * @param string $target\n * @return bool\n * @static\n */\n public static function copy($path, $target)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copy($path, $target);\n }\n\n /**\n * Create a symlink to the target file or directory. On Windows, a hard link is created if the target is a file.\n *\n * @param string $target\n * @param string $link\n * @return bool|null\n * @static\n */\n public static function link($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->link($target, $link);\n }\n\n /**\n * Create a relative symlink to the target file or directory.\n *\n * @param string $target\n * @param string $link\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function relativeLink($target, $link)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->relativeLink($target, $link);\n }\n\n /**\n * Extract the file name from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function name($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->name($path);\n }\n\n /**\n * Extract the trailing name component from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function basename($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->basename($path);\n }\n\n /**\n * Extract the parent directory from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function dirname($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->dirname($path);\n }\n\n /**\n * Extract the file extension from a file path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function extension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->extension($path);\n }\n\n /**\n * Guess the file extension from the mime-type of a given file.\n *\n * @param string $path\n * @return string|null\n * @throws \\RuntimeException\n * @static\n */\n public static function guessExtension($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->guessExtension($path);\n }\n\n /**\n * Get the file type of a given file.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function type($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->type($path);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Determine if the given path is a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function isDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isDirectory($directory);\n }\n\n /**\n * Determine if the given path is a directory that does not contain any other files or directories.\n *\n * @param string $directory\n * @param bool $ignoreDotFiles\n * @return bool\n * @static\n */\n public static function isEmptyDirectory($directory, $ignoreDotFiles = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isEmptyDirectory($directory, $ignoreDotFiles);\n }\n\n /**\n * Determine if the given path is readable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isReadable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isReadable($path);\n }\n\n /**\n * Determine if the given path is writable.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isWritable($path)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isWritable($path);\n }\n\n /**\n * Determine if two files are the same by comparing their hashes.\n *\n * @param string $firstFile\n * @param string $secondFile\n * @return bool\n * @static\n */\n public static function hasSameHash($firstFile, $secondFile)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->hasSameHash($firstFile, $secondFile);\n }\n\n /**\n * Determine if the given path is a file.\n *\n * @param string $file\n * @return bool\n * @static\n */\n public static function isFile($file)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->isFile($file);\n }\n\n /**\n * Find path names matching a given pattern.\n *\n * @param string $pattern\n * @param int $flags\n * @return array\n * @static\n */\n public static function glob($pattern, $flags = 0)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->glob($pattern, $flags);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function files($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->files($directory, $hidden);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string $directory\n * @param bool $hidden\n * @return \\Symfony\\Component\\Finder\\SplFileInfo[]\n * @static\n */\n public static function allFiles($directory, $hidden = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->allFiles($directory, $hidden);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string $directory\n * @return array\n * @static\n */\n public static function directories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->directories($directory);\n }\n\n /**\n * Ensure a directory exists.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @return void\n * @static\n */\n public static function ensureDirectoryExists($path, $mode = 493, $recursive = true)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n $instance->ensureDirectoryExists($path, $mode, $recursive);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @param int $mode\n * @param bool $recursive\n * @param bool $force\n * @return bool\n * @static\n */\n public static function makeDirectory($path, $mode = 493, $recursive = false, $force = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->makeDirectory($path, $mode, $recursive, $force);\n }\n\n /**\n * Move a directory.\n *\n * @param string $from\n * @param string $to\n * @param bool $overwrite\n * @return bool\n * @static\n */\n public static function moveDirectory($from, $to, $overwrite = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->moveDirectory($from, $to, $overwrite);\n }\n\n /**\n * Copy a directory from one location to another.\n *\n * @param string $directory\n * @param string $destination\n * @param int|null $options\n * @return bool\n * @static\n */\n public static function copyDirectory($directory, $destination, $options = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->copyDirectory($directory, $destination, $options);\n }\n\n /**\n * Recursively delete a directory.\n * \n * The directory itself may be optionally preserved.\n *\n * @param string $directory\n * @param bool $preserve\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory, $preserve = false)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectory($directory, $preserve);\n }\n\n /**\n * Remove all of the directories within a given directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectories($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->deleteDirectories($directory);\n }\n\n /**\n * Empty the specified directory of all files and folders.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function cleanDirectory($directory)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->cleanDirectory($directory);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\Filesystem $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Filesystem\\Filesystem::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Filesystem\\Filesystem::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Filesystem\\Filesystem::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Filesystem\\Filesystem::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Auth\\Access\\Gate\n */\n class Gate {\n /**\n * Determine if a given ability has been defined.\n *\n * @param string|array $ability\n * @return bool\n * @static\n */\n public static function has($ability)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->has($ability);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is false.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function allowIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allowIf($condition, $message, $code);\n }\n\n /**\n * Perform an on-demand authorization check. Throw an authorization exception if the condition or callback is true.\n *\n * @param \\Illuminate\\Auth\\Access\\Response|\\Closure|bool $condition\n * @param string|null $message\n * @param string|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function denyIf($condition, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyIf($condition, $message, $code);\n }\n\n /**\n * Define a new ability.\n *\n * @param \\UnitEnum|string $ability\n * @param callable|array|string $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function define($ability, $callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->define($ability, $callback);\n }\n\n /**\n * Define abilities for a resource.\n *\n * @param string $name\n * @param string $class\n * @param array|null $abilities\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function resource($name, $class, $abilities = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resource($name, $class, $abilities);\n }\n\n /**\n * Define a policy class for a given class type.\n *\n * @param string $class\n * @param string $policy\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function policy($class, $policy)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policy($class, $policy);\n }\n\n /**\n * Register a callback to run before all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->before($callback);\n }\n\n /**\n * Register a callback to run after all Gate checks.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->after($callback);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function allows($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->allows($ability, $arguments);\n }\n\n /**\n * Determine if any of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $ability\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function denies($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denies($ability, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function check($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->check($abilities, $arguments);\n }\n\n /**\n * Determine if any one of the given abilities should be granted for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function any($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->any($abilities, $arguments);\n }\n\n /**\n * Determine if all of the given abilities should be denied for the current user.\n *\n * @param iterable|\\UnitEnum|string $abilities\n * @param mixed $arguments\n * @return bool\n * @static\n */\n public static function none($abilities, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->none($abilities, $arguments);\n }\n\n /**\n * Determine if the given ability should be granted for the current user.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function authorize($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->authorize($ability, $arguments);\n }\n\n /**\n * Inspect the user for the given ability.\n *\n * @param \\UnitEnum|string $ability\n * @param mixed $arguments\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function inspect($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->inspect($ability, $arguments);\n }\n\n /**\n * Get the raw result from the authorization callback.\n *\n * @param string $ability\n * @param mixed $arguments\n * @return mixed\n * @throws \\Illuminate\\Auth\\Access\\AuthorizationException\n * @static\n */\n public static function raw($ability, $arguments = [])\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->raw($ability, $arguments);\n }\n\n /**\n * Get a policy instance for a given class.\n *\n * @param object|string $class\n * @return mixed\n * @static\n */\n public static function getPolicyFor($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->getPolicyFor($class);\n }\n\n /**\n * Specify a callback to be used to guess policy names.\n *\n * @param callable $callback\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function guessPolicyNamesUsing($callback)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->guessPolicyNamesUsing($callback);\n }\n\n /**\n * Build a policy class instance of the given type.\n *\n * @param object|string $class\n * @return mixed\n * @throws \\Illuminate\\Contracts\\Container\\BindingResolutionException\n * @static\n */\n public static function resolvePolicy($class)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->resolvePolicy($class);\n }\n\n /**\n * Get a gate instance for the given user.\n *\n * @param \\Illuminate\\Contracts\\Auth\\Authenticatable|mixed $user\n * @return static\n * @static\n */\n public static function forUser($user)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->forUser($user);\n }\n\n /**\n * Get all of the defined abilities.\n *\n * @return array\n * @static\n */\n public static function abilities()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->abilities();\n }\n\n /**\n * Get all of the defined policies.\n *\n * @return array\n * @static\n */\n public static function policies()\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->policies();\n }\n\n /**\n * Set the default denial response for gates and policies.\n *\n * @param \\Illuminate\\Auth\\Access\\Response $response\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function defaultDenialResponse($response)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->defaultDenialResponse($response);\n }\n\n /**\n * Set the container instance used by the gate.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Auth\\Access\\Gate\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Deny with a HTTP status code.\n *\n * @param int $status\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyWithStatus($status, $message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyWithStatus($status, $message, $code);\n }\n\n /**\n * Deny with a 404 HTTP status code.\n *\n * @param string|null $message\n * @param int|null $code\n * @return \\Illuminate\\Auth\\Access\\Response\n * @static\n */\n public static function denyAsNotFound($message = null, $code = null)\n {\n /** @var \\Illuminate\\Auth\\Access\\Gate $instance */\n return $instance->denyAsNotFound($message, $code);\n }\n\n }\n /**\n * @see \\Illuminate\\Hashing\\HashManager\n * @see \\Illuminate\\Hashing\\AbstractHasher\n */\n class Hash {\n /**\n * Create an instance of the Bcrypt hash Driver.\n *\n * @return \\Illuminate\\Hashing\\BcryptHasher\n * @static\n */\n public static function createBcryptDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createBcryptDriver();\n }\n\n /**\n * Create an instance of the Argon2i hash Driver.\n *\n * @return \\Illuminate\\Hashing\\ArgonHasher\n * @static\n */\n public static function createArgonDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgonDriver();\n }\n\n /**\n * Create an instance of the Argon2id hash Driver.\n *\n * @return \\Illuminate\\Hashing\\Argon2IdHasher\n * @static\n */\n public static function createArgon2idDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->createArgon2idDriver();\n }\n\n /**\n * Get information about the given hashed value.\n *\n * @param string $hashedValue\n * @return array\n * @static\n */\n public static function info($hashedValue)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->info($hashedValue);\n }\n\n /**\n * Hash the given value.\n *\n * @param string $value\n * @param array $options\n * @return string\n * @static\n */\n public static function make($value, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->make($value, $options);\n }\n\n /**\n * Check the given plain value against a hash.\n *\n * @param string $value\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function check($value, $hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->check($value, $hashedValue, $options);\n }\n\n /**\n * Check if the given hash has been hashed using the given options.\n *\n * @param string $hashedValue\n * @param array $options\n * @return bool\n * @static\n */\n public static function needsRehash($hashedValue, $options = [])\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->needsRehash($hashedValue, $options);\n }\n\n /**\n * Determine if a given string is already hashed.\n *\n * @param string $value\n * @return bool\n * @static\n */\n public static function isHashed($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->isHashed($value);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Verifies that the configuration is less than or equal to what is configured.\n *\n * @param array $value\n * @return bool\n * @internal\n * @static\n */\n public static function verifyConfiguration($value)\n {\n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->verifyConfiguration($value);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Hashing\\HashManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Hashing\\HashManager $instance */\n return $instance->forgetDrivers();\n }\n\n }\n /**\n * @method static \\Illuminate\\Http\\Client\\PendingRequest baseUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBody(\\Psr\\Http\\Message\\StreamInterface|string $content, string $contentType = 'application/json')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asForm()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest attach(string|array $name, string|resource $contents = '', string|null $filename = null, array $headers = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest asMultipart()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest bodyFormat(string $format)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withQueryParameters(array $parameters)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest contentType(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest acceptJson()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest accept(string $contentType)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withHeader(string $name, mixed $value)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest replaceHeaders(array $headers)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withBasicAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withDigestAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withNtlmAuth(string $username, string $password)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withToken(string $token, string $type = 'Bearer')\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUserAgent(string|bool $userAgent)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withUrlParameters(array $parameters = [])\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withCookies(array $cookies, string $domain)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest maxRedirects(int $max)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutRedirecting()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withoutVerifying()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest sink(string|resource $to)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest timeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest connectTimeout(int|float $seconds)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest retry(array|int $times, \\Closure|int $sleepMilliseconds = 0, callable|null $when = null, bool $throw = true)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withOptions(array $options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withRequestMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest withResponseMiddleware(callable $middleware)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest beforeSending(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throw(callable|null $callback = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwIf(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest throwUnless(callable|bool $condition)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dump()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dd()\n * @method static \\Illuminate\\Http\\Client\\Response get(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response head(string $url, array|string|null $query = null)\n * @method static \\Illuminate\\Http\\Client\\Response post(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response patch(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response put(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static \\Illuminate\\Http\\Client\\Response delete(string $url, array|\\JsonSerializable|\\Illuminate\\Contracts\\Support\\Arrayable $data = [])\n * @method static array pool(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Batch batch(callable $callback)\n * @method static \\Illuminate\\Http\\Client\\Response send(string $method, string $url, array $options = [])\n * @method static \\GuzzleHttp\\Client buildClient()\n * @method static \\GuzzleHttp\\Client createClient(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\GuzzleHttp\\HandlerStack buildHandlerStack()\n * @method static \\GuzzleHttp\\HandlerStack pushHandlers(\\GuzzleHttp\\HandlerStack $handlerStack)\n * @method static \\Closure buildBeforeSendingHandler()\n * @method static \\Closure buildRecorderHandler()\n * @method static \\Closure buildStubHandler()\n * @method static \\GuzzleHttp\\Psr7\\RequestInterface runBeforeSendingCallbacks(\\GuzzleHttp\\Psr7\\RequestInterface $request, array $options)\n * @method static array mergeOptions(array ...$options)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest stub(callable $callback)\n * @method static bool isAllowedRequestUrl(string $url)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest async(bool $async = true)\n * @method static \\GuzzleHttp\\Promise\\PromiseInterface|null getPromise()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest truncateExceptionsAt(int $length)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest dontTruncateExceptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setClient(\\GuzzleHttp\\Client $client)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest setHandler(callable $handler)\n * @method static array getOptions()\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Http\\Client\\PendingRequest|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Http\\Client\\Factory\n */\n class Http {\n /**\n * Add middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalMiddleware($middleware);\n }\n\n /**\n * Add request middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalRequestMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalRequestMiddleware($middleware);\n }\n\n /**\n * Add response middleware to apply to every request.\n *\n * @param callable $middleware\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalResponseMiddleware($middleware)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalResponseMiddleware($middleware);\n }\n\n /**\n * Set the options to apply to every request.\n *\n * @param \\Closure|array $options\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function globalOptions($options)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->globalOptions($options);\n }\n\n /**\n * Create a new response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array $headers\n * @return \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::response($body, $status, $headers);\n }\n\n /**\n * Create a new PSR-7 response instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\GuzzleHttp\\Psr7\\Response\n * @static\n */\n public static function psr7Response($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::psr7Response($body, $status, $headers);\n }\n\n /**\n * Create a new RequestException instance for use during stubbing.\n *\n * @param array|string|null $body\n * @param int $status\n * @param array<string, mixed> $headers\n * @return \\Illuminate\\Http\\Client\\RequestException\n * @static\n */\n public static function failedRequest($body = null, $status = 200, $headers = [])\n {\n return \\Illuminate\\Http\\Client\\Factory::failedRequest($body, $status, $headers);\n }\n\n /**\n * Create a new connection exception for use during stubbing.\n *\n * @param string|null $message\n * @return \\Closure(\\Illuminate\\Http\\Client\\Request): \\GuzzleHttp\\Promise\\PromiseInterface\n * @static\n */\n public static function failedConnection($message = null)\n {\n return \\Illuminate\\Http\\Client\\Factory::failedConnection($message);\n }\n\n /**\n * Get an invokable object that returns a sequence of responses in order for use during stubbing.\n *\n * @param array $responses\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function sequence($responses = [])\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->sequence($responses);\n }\n\n /**\n * Register a stub callable that will intercept requests and be able to return stub responses.\n *\n * @param callable|array<string, mixed>|null $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Register a response sequence for the given URL pattern.\n *\n * @param string $url\n * @return \\Illuminate\\Http\\Client\\ResponseSequence\n * @static\n */\n public static function fakeSequence($url = '*')\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->fakeSequence($url);\n }\n\n /**\n * Stub the given URL using the given callback.\n *\n * @param string $url\n * @param \\Illuminate\\Http\\Client\\Response|\\GuzzleHttp\\Promise\\PromiseInterface|callable|int|string|array|\\Illuminate\\Http\\Client\\ResponseSequence $callback\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function stubUrl($url, $callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->stubUrl($url, $callback);\n }\n\n /**\n * Indicate that an exception should be thrown if any request is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function preventStrayRequests($prevent = true)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventStrayRequests($prevent);\n }\n\n /**\n * Determine if stray requests are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayRequests()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->preventingStrayRequests();\n }\n\n /**\n * Allow stray, unfaked requests entirely, or optionally allow only specific URLs.\n *\n * @param array<int, string>|null $only\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function allowStrayRequests($only = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->allowStrayRequests($only);\n }\n\n /**\n * Begin recording request / response pairs.\n *\n * @return \\Illuminate\\Http\\Client\\Factory\n * @static\n */\n public static function record()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->record();\n }\n\n /**\n * Record a request response pair.\n *\n * @param \\Illuminate\\Http\\Client\\Request $request\n * @param \\Illuminate\\Http\\Client\\Response|null $response\n * @return void\n * @static\n */\n public static function recordRequestResponsePair($request, $response)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->recordRequestResponsePair($request, $response);\n }\n\n /**\n * Assert that a request / response pair was recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSent($callback);\n }\n\n /**\n * Assert that the given request was sent in the given order.\n *\n * @param list<string|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable> $callbacks\n * @return void\n * @static\n */\n public static function assertSentInOrder($callbacks)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentInOrder($callbacks);\n }\n\n /**\n * Assert that a request / response pair was not recorded matching a given truth test.\n *\n * @param callable|(\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool) $callback\n * @return void\n * @static\n */\n public static function assertNotSent($callback)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNotSent($callback);\n }\n\n /**\n * Assert that no request / response pair was recorded.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert how many requests have been recorded.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert that every created response sequence is empty.\n *\n * @return void\n * @static\n */\n public static function assertSequencesAreEmpty()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n $instance->assertSequencesAreEmpty();\n }\n\n /**\n * Get a collection of the request / response pairs matching the given truth test.\n *\n * @param (\\Closure(\\Illuminate\\Http\\Client\\Request, \\Illuminate\\Http\\Client\\Response|null): bool)|callable $callback\n * @return \\Illuminate\\Support\\Collection<int, array{0: \\Illuminate\\Http\\Client\\Request, 1: \\Illuminate\\Http\\Client\\Response|null}>\n * @static\n */\n public static function recorded($callback = null)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->recorded($callback);\n }\n\n /**\n * Create a new pending request instance for this factory.\n *\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function createPendingRequest()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->createPendingRequest();\n }\n\n /**\n * Get the current event dispatcher implementation.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher|null\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Get the array of global middleware.\n *\n * @return array\n * @static\n */\n public static function getGlobalMiddleware()\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->getGlobalMiddleware();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Client\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Client\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Client\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Client\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Http\\Client\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n /**\n * @see \\Illuminate\\Translation\\Translator\n */\n class Lang {\n /**\n * Determine if a translation exists for a given locale.\n *\n * @param string $key\n * @param string|null $locale\n * @return bool\n * @static\n */\n public static function hasForLocale($key, $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->hasForLocale($key, $locale);\n }\n\n /**\n * Determine if a translation exists.\n *\n * @param string $key\n * @param string|null $locale\n * @param bool $fallback\n * @return bool\n * @static\n */\n public static function has($key, $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->has($key, $locale, $fallback);\n }\n\n /**\n * Get the translation for the given key.\n *\n * @param string $key\n * @param array $replace\n * @param string|null $locale\n * @param bool $fallback\n * @return string|array\n * @static\n */\n public static function get($key, $replace = [], $locale = null, $fallback = true)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->get($key, $replace, $locale, $fallback);\n }\n\n /**\n * Get a translation according to an integer value.\n *\n * @param string $key\n * @param \\Countable|int|float|array $number\n * @param array $replace\n * @param string|null $locale\n * @return string\n * @static\n */\n public static function choice($key, $number, $replace = [], $locale = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->choice($key, $number, $replace, $locale);\n }\n\n /**\n * Add translation lines to the given locale.\n *\n * @param array $lines\n * @param string $locale\n * @param string $namespace\n * @return void\n * @static\n */\n public static function addLines($lines, $locale, $namespace = '*')\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addLines($lines, $locale, $namespace);\n }\n\n /**\n * Load the specified language group.\n *\n * @param string $namespace\n * @param string $group\n * @param string $locale\n * @return void\n * @static\n */\n public static function load($namespace, $group, $locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->load($namespace, $group, $locale);\n }\n\n /**\n * Register a callback that is responsible for handling missing translation keys.\n *\n * @param callable|null $callback\n * @return static\n * @static\n */\n public static function handleMissingKeysUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->handleMissingKeysUsing($callback);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string $hint\n * @return void\n * @static\n */\n public static function addNamespace($namespace, $hint)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addNamespace($namespace, $hint);\n }\n\n /**\n * Add a new path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addPath($path);\n }\n\n /**\n * Add a new JSON path to the loader.\n *\n * @param string $path\n * @return void\n * @static\n */\n public static function addJsonPath($path)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->addJsonPath($path);\n }\n\n /**\n * Parse a key into namespace, group, and item.\n *\n * @param string $key\n * @return array\n * @static\n */\n public static function parseKey($key)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->parseKey($key);\n }\n\n /**\n * Specify a callback that should be invoked to determined the applicable locale array.\n *\n * @param callable $callback\n * @return void\n * @static\n */\n public static function determineLocalesUsing($callback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->determineLocalesUsing($callback);\n }\n\n /**\n * Get the message selector instance.\n *\n * @return \\Illuminate\\Translation\\MessageSelector\n * @static\n */\n public static function getSelector()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getSelector();\n }\n\n /**\n * Set the message selector instance.\n *\n * @param \\Illuminate\\Translation\\MessageSelector $selector\n * @return void\n * @static\n */\n public static function setSelector($selector)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setSelector($selector);\n }\n\n /**\n * Get the language line loader implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Loader\n * @static\n */\n public static function getLoader()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLoader();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function locale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->locale();\n }\n\n /**\n * Get the default locale being used.\n *\n * @return string\n * @static\n */\n public static function getLocale()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getLocale();\n }\n\n /**\n * Set the default locale.\n *\n * @param string $locale\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setLocale($locale)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLocale($locale);\n }\n\n /**\n * Get the fallback locale being used.\n *\n * @return string\n * @static\n */\n public static function getFallback()\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n return $instance->getFallback();\n }\n\n /**\n * Set the fallback locale being used.\n *\n * @param string $fallback\n * @return void\n * @static\n */\n public static function setFallback($fallback)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setFallback($fallback);\n }\n\n /**\n * Set the loaded translation groups.\n *\n * @param array $loaded\n * @return void\n * @static\n */\n public static function setLoaded($loaded)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setLoaded($loaded);\n }\n\n /**\n * Add a handler to be executed in order to format a given class to a string during translation replacements.\n *\n * @param callable|string $class\n * @param callable|null $handler\n * @return void\n * @static\n */\n public static function stringable($class, $handler = null)\n {\n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->stringable($class, $handler);\n }\n\n /**\n * Set the parsed value of a key.\n *\n * @param string $key\n * @param array $parsed\n * @return void\n * @static\n */\n public static function setParsedKey($key, $parsed)\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->setParsedKey($key, $parsed);\n }\n\n /**\n * Flush the cache of parsed keys.\n *\n * @return void\n * @static\n */\n public static function flushParsedKeys()\n {\n //Method inherited from \\Illuminate\\Support\\NamespacedItemResolver \n /** @var \\Illuminate\\Translation\\Translator $instance */\n $instance->flushParsedKeys();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Translation\\Translator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Translation\\Translator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Translation\\Translator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Translation\\Translator::flushMacros();\n }\n\n }\n /**\n * @method static void write(string $level, \\Illuminate\\Contracts\\Support\\Arrayable|\\Illuminate\\Contracts\\Support\\Jsonable|\\Illuminate\\Support\\Stringable|array|string $message, array $context = [])\n * @method static \\Illuminate\\Log\\Logger withContext(array $context = [])\n * @method static void listen(\\Closure $callback)\n * @method static \\Psr\\Log\\LoggerInterface getLogger()\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $dispatcher)\n * @method static \\Illuminate\\Log\\Logger|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Log\\Logger|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Log\\LogManager\n */\n class Log {\n /**\n * Build an on-demand log channel.\n *\n * @param array $config\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new, on-demand aggregate logger instance.\n *\n * @param array $channels\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function stack($channels, $channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->stack($channels, $channel);\n }\n\n /**\n * Get a log channel instance.\n *\n * @param string|null $channel\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function channel($channel = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->channel($channel);\n }\n\n /**\n * Get a log driver instance.\n *\n * @param string|null $driver\n * @return \\Psr\\Log\\LoggerInterface\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Share context across channels and stacks.\n *\n * @param array $context\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function shareContext($context)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->shareContext($context);\n }\n\n /**\n * The context shared across channels and stacks.\n *\n * @return array\n * @static\n */\n public static function sharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->sharedContext();\n }\n\n /**\n * Flush the log context on all currently resolved channels.\n *\n * @param string[]|null $keys\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function withoutContext($keys = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->withoutContext($keys);\n }\n\n /**\n * Flush the shared context.\n *\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function flushSharedContext()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->flushSharedContext();\n }\n\n /**\n * Get the default log driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default log driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Unset the given channel instance.\n *\n * @param string|null $driver\n * @return void\n * @static\n */\n public static function forgetChannel($driver = null)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->forgetChannel($driver);\n }\n\n /**\n * Get all of the resolved log channels.\n *\n * @return array\n * @static\n */\n public static function getChannels()\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->getChannels();\n }\n\n /**\n * System is unusable.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function emergency($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->emergency($message, $context);\n }\n\n /**\n * Action must be taken immediately.\n * \n * Example: Entire website down, database unavailable, etc. This should\n * trigger the SMS alerts and wake you up.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function alert($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->alert($message, $context);\n }\n\n /**\n * Critical conditions.\n * \n * Example: Application component unavailable, unexpected exception.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function critical($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->critical($message, $context);\n }\n\n /**\n * Runtime errors that do not require immediate action but should typically\n * be logged and monitored.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function error($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->error($message, $context);\n }\n\n /**\n * Exceptional occurrences that are not errors.\n * \n * Example: Use of deprecated APIs, poor use of an API, undesirable things\n * that are not necessarily wrong.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function warning($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->warning($message, $context);\n }\n\n /**\n * Normal but significant events.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function notice($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->notice($message, $context);\n }\n\n /**\n * Interesting events.\n * \n * Example: User logs in, SQL logs.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function info($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->info($message, $context);\n }\n\n /**\n * Detailed debug information.\n *\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function debug($message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->debug($message, $context);\n }\n\n /**\n * Logs with an arbitrary level.\n *\n * @param mixed $level\n * @param string|\\Stringable $message\n * @param array $context\n * @return void\n * @static\n */\n public static function log($level, $message, $context = [])\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n $instance->log($level, $message, $context);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Log\\LogManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Log\\LogManager $instance */\n return $instance->setApplication($app);\n }\n\n }\n /**\n * @method static void alwaysFrom(string $address, string|null $name = null)\n * @method static void alwaysReplyTo(string $address, string|null $name = null)\n * @method static void alwaysReturnPath(string $address)\n * @method static void alwaysTo(string $address, string|null $name = null)\n * @method static \\Illuminate\\Mail\\SentMessage|null html(string $html, mixed $callback)\n * @method static \\Illuminate\\Mail\\SentMessage|null plain(string $view, array $data, mixed $callback)\n * @method static string render(string|array $view, array $data = [])\n * @method static mixed onQueue(\\BackedEnum|string|null $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed queueOn(string $queue, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static mixed laterOn(string $queue, \\DateTimeInterface|\\DateInterval|int $delay, \\Illuminate\\Contracts\\Mail\\Mailable $view)\n * @method static \\Symfony\\Component\\Mailer\\Transport\\TransportInterface getSymfonyTransport()\n * @method static \\Illuminate\\Contracts\\View\\Factory getViewFactory()\n * @method static void setSymfonyTransport(\\Symfony\\Component\\Mailer\\Transport\\TransportInterface $transport)\n * @method static \\Illuminate\\Mail\\Mailer setQueue(\\Illuminate\\Contracts\\Queue\\Factory $queue)\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @see \\Illuminate\\Mail\\MailManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\MailFake\n */\n class Mail {\n /**\n * Get a mailer instance by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Mail\\Mailer\n * @static\n */\n public static function mailer($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->mailer($name);\n }\n\n /**\n * Get a mailer driver instance.\n *\n * @param string|null $driver\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function driver($driver = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Build a new mailer instance.\n *\n * @param array $config\n * @return \\Illuminate\\Mail\\Mailer\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create a new transport instance.\n *\n * @param array $config\n * @return \\Symfony\\Component\\Mailer\\Transport\\TransportInterface\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function createSymfonyTransport($config)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->createSymfonyTransport($config);\n }\n\n /**\n * Get the default mail driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default mail driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Disconnect the given mailer and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom transport creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Forget all of the resolved mailer instances.\n *\n * @return \\Illuminate\\Mail\\MailManager\n * @static\n */\n public static function forgetMailers()\n {\n /** @var \\Illuminate\\Mail\\MailManager $instance */\n return $instance->forgetMailers();\n }\n\n /**\n * Assert if a mailable was sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSent($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent or queued to be sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotOutgoing($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotOutgoing($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not sent based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotSent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotSent($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were sent or queued to be sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingOutgoing()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingOutgoing();\n }\n\n /**\n * Assert that no mailables were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert if a mailable was queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|int|null $callback\n * @return void\n * @static\n */\n public static function assertQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueued($mailable, $callback);\n }\n\n /**\n * Determine if a mailable was not queued based on a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|array|string|null $callback\n * @return void\n * @static\n */\n public static function assertNotQueued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNotQueued($mailable, $callback);\n }\n\n /**\n * Assert that no mailables were queued.\n *\n * @return void\n * @static\n */\n public static function assertNothingQueued()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertNothingQueued();\n }\n\n /**\n * Assert the total number of mailables that were sent.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertSentCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertSentCount($count);\n }\n\n /**\n * Assert the total number of mailables that were queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertQueuedCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertQueuedCount($count);\n }\n\n /**\n * Assert the total number of mailables that were sent or queued.\n *\n * @param int $count\n * @return void\n * @static\n */\n public static function assertOutgoingCount($count)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->assertOutgoingCount($count);\n }\n\n /**\n * Get all of the mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->sent($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been sent.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasSent($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasSent($mailable);\n }\n\n /**\n * Get all of the queued mailables matching a truth-test callback.\n *\n * @param string|\\Closure $mailable\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function queued($mailable, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queued($mailable, $callback);\n }\n\n /**\n * Determine if the given mailable has been queued.\n *\n * @param string $mailable\n * @return bool\n * @static\n */\n public static function hasQueued($mailable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->hasQueued($mailable);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function to($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->to($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function cc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->cc($users);\n }\n\n /**\n * Begin the process of mailing a mailable class instance.\n *\n * @param mixed $users\n * @return \\Illuminate\\Mail\\PendingMail\n * @static\n */\n public static function bcc($users)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->bcc($users);\n }\n\n /**\n * Send a new message with only a raw text part.\n *\n * @param string $text\n * @param \\Closure|string $callback\n * @return void\n * @static\n */\n public static function raw($text, $callback)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->raw($text, $callback);\n }\n\n /**\n * Send a new message using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return mixed|void\n * @static\n */\n public static function send($view, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->send($view, $data, $callback);\n }\n\n /**\n * Send a new message synchronously using a view.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $mailable\n * @param array $data\n * @param \\Closure|string|null $callback\n * @return void\n * @static\n */\n public static function sendNow($mailable, $data = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n $instance->sendNow($mailable, $data, $callback);\n }\n\n /**\n * Queue a new message for sending.\n *\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function queue($view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->queue($view, $queue);\n }\n\n /**\n * Queue a new e-mail message for sending after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param \\Illuminate\\Contracts\\Mail\\Mailable|string|array $view\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $view, $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\MailFake $instance */\n return $instance->later($delay, $view, $queue);\n }\n\n }\n /**\n * @see \\Illuminate\\Notifications\\ChannelManager\n * @see \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n */\n class Notification {\n /**\n * Send the given notification to the given notifiable entities.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @return void\n * @static\n */\n public static function send($notifiables, $notification)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->send($notifiables, $notification);\n }\n\n /**\n * Send the given notification immediately.\n *\n * @param \\Illuminate\\Support\\Collection|mixed $notifiables\n * @param mixed $notification\n * @param array|null $channels\n * @return void\n * @static\n */\n public static function sendNow($notifiables, $notification, $channels = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->sendNow($notifiables, $notification, $channels);\n }\n\n /**\n * Get a channel instance.\n *\n * @param string|null $name\n * @return mixed\n * @static\n */\n public static function channel($name = null)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->channel($name);\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default channel driver name.\n *\n * @return string\n * @static\n */\n public static function deliversVia()\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->deliversVia();\n }\n\n /**\n * Set the default channel driver name.\n *\n * @param string $channel\n * @return void\n * @static\n */\n public static function deliverVia($channel)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n $instance->deliverVia($channel);\n }\n\n /**\n * Set the locale of notifications.\n *\n * @param string $locale\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function locale($locale)\n {\n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->locale($locale);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Notifications\\ChannelManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Notifications\\ChannelManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Assert if a notification was sent on-demand based on a truth-test callback.\n *\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentOnDemand($notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemand($notification, $callback);\n }\n\n /**\n * Assert if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert if a notification was sent on-demand a number of times.\n *\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentOnDemandTimes($notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentOnDemandTimes($notification, $times);\n }\n\n /**\n * Assert if a notification was sent a number of times.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param int $times\n * @return void\n * @static\n */\n public static function assertSentToTimes($notifiable, $notification, $times = 1)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentToTimes($notifiable, $notification, $times);\n }\n\n /**\n * Determine if a notification was sent based on a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string|\\Closure $notification\n * @param callable|null $callback\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNotSentTo($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNotSentTo($notifiable, $notification, $callback);\n }\n\n /**\n * Assert that no notifications were sent.\n *\n * @return void\n * @static\n */\n public static function assertNothingSent()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSent();\n }\n\n /**\n * Assert that no notifications were sent to the given notifiable.\n *\n * @param mixed $notifiable\n * @return void\n * @throws \\Exception\n * @static\n */\n public static function assertNothingSentTo($notifiable)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertNothingSentTo($notifiable);\n }\n\n /**\n * Assert the total amount of times a notification was sent.\n *\n * @param string $notification\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertSentTimes($notification, $expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertSentTimes($notification, $expectedCount);\n }\n\n /**\n * Assert the total count of notification that were sent.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Get all of the notifications matching a truth-test callback.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function sent($notifiable, $notification, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sent($notifiable, $notification, $callback);\n }\n\n /**\n * Determine if there are more notifications left to inspect.\n *\n * @param mixed $notifiable\n * @param string $notification\n * @return bool\n * @static\n */\n public static function hasSent($notifiable, $notification)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->hasSent($notifiable, $notification);\n }\n\n /**\n * Specify if notification should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the notifications that have been sent.\n *\n * @return array\n * @static\n */\n public static function sentNotifications()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake $instance */\n return $instance->sentNotifications();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Support\\Testing\\Fakes\\NotificationFake::flushMacros();\n }\n\n }\n /**\n * @method static string sendResetLink(array $credentials, \\Closure|null $callback = null)\n * @method static mixed reset(array $credentials, \\Closure $callback)\n * @method static \\Illuminate\\Contracts\\Auth\\CanResetPassword|null getUser(array $credentials)\n * @method static string createToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static void deleteToken(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user)\n * @method static bool tokenExists(\\Illuminate\\Contracts\\Auth\\CanResetPassword $user, string $token)\n * @method static \\Illuminate\\Auth\\Passwords\\TokenRepositoryInterface getRepository()\n * @method static \\Illuminate\\Support\\Timebox getTimebox()\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager\n * @see \\Illuminate\\Auth\\Passwords\\PasswordBroker\n */\n class Password {\n /**\n * Attempt to get the broker from the local cache.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Auth\\PasswordBroker\n * @static\n */\n public static function broker($name = null)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->broker($name);\n }\n\n /**\n * Get the default password broker name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default password broker name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Auth\\Passwords\\PasswordBrokerManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n }\n /**\n * @method static \\Illuminate\\Process\\PendingProcess command(array|string $command)\n * @method static \\Illuminate\\Process\\PendingProcess path(string $path)\n * @method static \\Illuminate\\Process\\PendingProcess timeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess idleTimeout(int $timeout)\n * @method static \\Illuminate\\Process\\PendingProcess forever()\n * @method static \\Illuminate\\Process\\PendingProcess env(array $environment)\n * @method static \\Illuminate\\Process\\PendingProcess input(\\Traversable|resource|string|int|float|bool|null $input)\n * @method static \\Illuminate\\Process\\PendingProcess quietly()\n * @method static \\Illuminate\\Process\\PendingProcess tty(bool $tty = true)\n * @method static \\Illuminate\\Process\\PendingProcess options(array $options)\n * @method static \\Illuminate\\Contracts\\Process\\ProcessResult run(array|string|null $command = null, callable|null $output = null)\n * @method static \\Illuminate\\Process\\InvokedProcess start(array|string|null $command = null, callable|null $output = null)\n * @method static bool supportsTty()\n * @method static \\Illuminate\\Process\\PendingProcess withFakeHandlers(array $fakeHandlers)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed when(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @method static \\Illuminate\\Process\\PendingProcess|mixed unless(\\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)\n * @see \\Illuminate\\Process\\PendingProcess\n * @see \\Illuminate\\Process\\Factory\n */\n class Process {\n /**\n * Create a new fake process response for testing purposes.\n *\n * @param array|string $output\n * @param array|string $errorOutput\n * @param int $exitCode\n * @return \\Illuminate\\Process\\FakeProcessResult\n * @static\n */\n public static function result($output = '', $errorOutput = '', $exitCode = 0)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->result($output, $errorOutput, $exitCode);\n }\n\n /**\n * Begin describing a fake process lifecycle.\n *\n * @return \\Illuminate\\Process\\FakeProcessDescription\n * @static\n */\n public static function describe()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->describe();\n }\n\n /**\n * Begin describing a fake process sequence.\n *\n * @param array $processes\n * @return \\Illuminate\\Process\\FakeProcessSequence\n * @static\n */\n public static function sequence($processes = [])\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->sequence($processes);\n }\n\n /**\n * Indicate that the process factory should fake processes.\n *\n * @param \\Closure|array|null $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function fake($callback = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->fake($callback);\n }\n\n /**\n * Determine if the process factory has fake process handlers and is recording processes.\n *\n * @return bool\n * @static\n */\n public static function isRecording()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->isRecording();\n }\n\n /**\n * Record the given process if processes should be recorded.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function recordIfRecording($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->recordIfRecording($process, $result);\n }\n\n /**\n * Record the given process.\n *\n * @param \\Illuminate\\Process\\PendingProcess $process\n * @param \\Illuminate\\Contracts\\Process\\ProcessResult $result\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function record($process, $result)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->record($process, $result);\n }\n\n /**\n * Indicate that an exception should be thrown if any process is not faked.\n *\n * @param bool $prevent\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function preventStrayProcesses($prevent = true)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventStrayProcesses($prevent);\n }\n\n /**\n * Determine if stray processes are being prevented.\n *\n * @return bool\n * @static\n */\n public static function preventingStrayProcesses()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->preventingStrayProcesses();\n }\n\n /**\n * Assert that a process was recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRan($callback);\n }\n\n /**\n * Assert that a process was recorded a given number of times matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @param int $times\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertRanTimes($callback, $times = 1)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertRanTimes($callback, $times);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNotRan($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNotRan($callback);\n }\n\n /**\n * Assert that a process was not recorded matching a given truth test.\n *\n * @param \\Closure|string $callback\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertDidntRun($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertDidntRun($callback);\n }\n\n /**\n * Assert that no processes were recorded.\n *\n * @return \\Illuminate\\Process\\Factory\n * @static\n */\n public static function assertNothingRan()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->assertNothingRan();\n }\n\n /**\n * Start defining a pool of processes.\n *\n * @param callable $callback\n * @return \\Illuminate\\Process\\Pool\n * @static\n */\n public static function pool($callback)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pool($callback);\n }\n\n /**\n * Start defining a series of piped processes.\n *\n * @param callable|array $callback\n * @return \\Illuminate\\Contracts\\Process\\ProcessResult\n * @static\n */\n public static function pipe($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->pipe($callback, $output);\n }\n\n /**\n * Run a pool of processes and wait for them to finish executing.\n *\n * @param callable $callback\n * @param callable|null $output\n * @return \\Illuminate\\Process\\ProcessPoolResults\n * @static\n */\n public static function concurrently($callback, $output = null)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->concurrently($callback, $output);\n }\n\n /**\n * Create a new pending process associated with this factory.\n *\n * @return \\Illuminate\\Process\\PendingProcess\n * @static\n */\n public static function newPendingProcess()\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->newPendingProcess();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Process\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Process\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Process\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Process\\Factory::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Process\\Factory $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Queue\\QueueManager\n * @see \\Illuminate\\Queue\\Queue\n * @see \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n */\n class Queue {\n /**\n * Register an event listener for the before job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function before($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->before($callback);\n }\n\n /**\n * Register an event listener for the after job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function after($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->after($callback);\n }\n\n /**\n * Register an event listener for the exception occurred job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function exceptionOccurred($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->exceptionOccurred($callback);\n }\n\n /**\n * Register an event listener for the daemon queue loop.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function looping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->looping($callback);\n }\n\n /**\n * Register an event listener for the failed job event.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function failing($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->failing($callback);\n }\n\n /**\n * Register an event listener for the daemon queue starting.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function starting($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->starting($callback);\n }\n\n /**\n * Register an event listener for the daemon queue stopping.\n *\n * @param mixed $callback\n * @return void\n * @static\n */\n public static function stopping($callback)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->stopping($callback);\n }\n\n /**\n * Determine if the driver is connected.\n *\n * @param string|null $name\n * @return bool\n * @static\n */\n public static function connected($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connected($name);\n }\n\n /**\n * Resolve a queue connection instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Contracts\\Queue\\Queue\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function extend($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->extend($driver, $resolver);\n }\n\n /**\n * Add a queue connection resolver.\n *\n * @param string $driver\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function addConnector($driver, $resolver)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->addConnector($driver, $resolver);\n }\n\n /**\n * Get the name of the default queue connection.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the name of the default queue connection.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get the full name for the given connection.\n *\n * @param string|null $connection\n * @return string\n * @static\n */\n public static function getName($connection = null)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getName($connection);\n }\n\n /**\n * Get the application instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Foundation\\Application\n * @static\n */\n public static function getApplication()\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->getApplication();\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Queue\\QueueManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Queue\\QueueManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Specify the jobs that should be queued instead of faked.\n *\n * @param array|string $jobsToBeQueued\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function except($jobsToBeQueued)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->except($jobsToBeQueued);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushed($job, $callback);\n }\n\n /**\n * Assert if a job was pushed based on a truth-test callback.\n *\n * @param string $queue\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedOn($queue, $job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedOn($queue, $job, $callback);\n }\n\n /**\n * Assert if a job was pushed with chained jobs based on a truth-test callback.\n *\n * @param string $job\n * @param array $expectedChain\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithChain($job, $expectedChain = [], $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithChain($job, $expectedChain, $callback);\n }\n\n /**\n * Assert if a job was pushed with an empty chain based on a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertPushedWithoutChain($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertPushedWithoutChain($job, $callback);\n }\n\n /**\n * Assert if a closure was pushed based on a truth-test callback.\n *\n * @param callable|int|null $callback\n * @return void\n * @static\n */\n public static function assertClosurePushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosurePushed($callback);\n }\n\n /**\n * Assert that a closure was not pushed based on a truth-test callback.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertClosureNotPushed($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertClosureNotPushed($callback);\n }\n\n /**\n * Determine if a job was pushed based on a truth-test callback.\n *\n * @param string|\\Closure $job\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function assertNotPushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNotPushed($job, $callback);\n }\n\n /**\n * Assert the total count of jobs that were pushed.\n *\n * @param int $expectedCount\n * @return void\n * @static\n */\n public static function assertCount($expectedCount)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertCount($expectedCount);\n }\n\n /**\n * Assert that no jobs were pushed.\n *\n * @return void\n * @static\n */\n public static function assertNothingPushed()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n $instance->assertNothingPushed();\n }\n\n /**\n * Get all of the jobs matching a truth-test callback.\n *\n * @param string $job\n * @param callable|null $callback\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function pushed($job, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushed($job, $callback);\n }\n\n /**\n * Get all of the raw pushes matching a truth-test callback.\n *\n * @param null|\\Closure(string, ?string, array): bool $callback\n * @return \\Illuminate\\Support\\Collection<int, RawPushType>\n * @static\n */\n public static function pushedRaw($callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedRaw($callback);\n }\n\n /**\n * Get all of the jobs by listener class, passing an optional truth-test callback.\n *\n * @param class-string $listenerClass\n * @param (\\Closure(mixed, \\Illuminate\\Events\\CallQueuedListener, string|null, mixed): bool)|null $callback\n * @return \\Illuminate\\Support\\Collection<int, \\Illuminate\\Events\\CallQueuedListener>\n * @static\n */\n public static function listenersPushed($listenerClass, $callback = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->listenersPushed($listenerClass, $callback);\n }\n\n /**\n * Determine if there are any stored jobs for a given class.\n *\n * @param string $job\n * @return bool\n * @static\n */\n public static function hasPushed($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->hasPushed($job);\n }\n\n /**\n * Get the size of the queue.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function size($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->size($queue);\n }\n\n /**\n * Get the number of pending jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function pendingSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pendingSize($queue);\n }\n\n /**\n * Get the number of delayed jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function delayedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->delayedSize($queue);\n }\n\n /**\n * Get the number of reserved jobs.\n *\n * @param string|null $queue\n * @return int\n * @static\n */\n public static function reservedSize($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->reservedSize($queue);\n }\n\n /**\n * Get the creation timestamp of the oldest pending job, excluding delayed jobs.\n *\n * @param string|null $queue\n * @return int|null\n * @static\n */\n public static function creationTimeOfOldestPendingJob($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->creationTimeOfOldestPendingJob($queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function push($job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->push($job, $data, $queue);\n }\n\n /**\n * Determine if a job should be faked or actually dispatched.\n *\n * @param object $job\n * @return bool\n * @static\n */\n public static function shouldFakeJob($job)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->shouldFakeJob($job);\n }\n\n /**\n * Push a raw payload onto the queue.\n *\n * @param string $payload\n * @param string|null $queue\n * @param array $options\n * @return mixed\n * @static\n */\n public static function pushRaw($payload, $queue = null, $options = [])\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushRaw($payload, $queue, $options);\n }\n\n /**\n * Push a new job onto the queue after (n) seconds.\n *\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function later($delay, $job, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->later($delay, $job, $data, $queue);\n }\n\n /**\n * Push a new job onto the queue.\n *\n * @param string $queue\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function pushOn($queue, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushOn($queue, $job, $data);\n }\n\n /**\n * Push a new job onto a specific queue after (n) seconds.\n *\n * @param string $queue\n * @param \\DateTimeInterface|\\DateInterval|int $delay\n * @param string|object $job\n * @param mixed $data\n * @return mixed\n * @static\n */\n public static function laterOn($queue, $delay, $job, $data = '')\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->laterOn($queue, $delay, $job, $data);\n }\n\n /**\n * Pop the next job off of the queue.\n *\n * @param string|null $queue\n * @return \\Illuminate\\Contracts\\Queue\\Job|null\n * @static\n */\n public static function pop($queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pop($queue);\n }\n\n /**\n * Push an array of jobs onto the queue.\n *\n * @param array $jobs\n * @param mixed $data\n * @param string|null $queue\n * @return mixed\n * @static\n */\n public static function bulk($jobs, $data = '', $queue = null)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->bulk($jobs, $data, $queue);\n }\n\n /**\n * Get the jobs that have been pushed.\n *\n * @return array\n * @static\n */\n public static function pushedJobs()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->pushedJobs();\n }\n\n /**\n * Get the payloads that were pushed raw.\n *\n * @return list<RawPushType>\n * @static\n */\n public static function rawPushes()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->rawPushes();\n }\n\n /**\n * Specify if jobs should be serialized and restored when being \"pushed\" to the queue.\n *\n * @param bool $serializeAndRestore\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function serializeAndRestore($serializeAndRestore = true)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->serializeAndRestore($serializeAndRestore);\n }\n\n /**\n * Get the connection name for the queue.\n *\n * @return string\n * @static\n */\n public static function getConnectionName()\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->getConnectionName();\n }\n\n /**\n * Set the connection name for the queue.\n *\n * @param string $name\n * @return \\Illuminate\\Support\\Testing\\Fakes\\QueueFake\n * @static\n */\n public static function setConnectionName($name)\n {\n /** @var \\Illuminate\\Support\\Testing\\Fakes\\QueueFake $instance */\n return $instance->setConnectionName($name);\n }\n\n /**\n * Migrate the delayed jobs that are ready to the regular queue.\n *\n * @param string $from\n * @param string $to\n * @return array\n * @static\n */\n public static function migrateExpiredJobs($from, $to)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->migrateExpiredJobs($from, $to);\n }\n\n /**\n * Delete a reserved job from the queue.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @return void\n * @static\n */\n public static function deleteReserved($queue, $job)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteReserved($queue, $job);\n }\n\n /**\n * Delete a reserved job from the reserved queue and release it.\n *\n * @param string $queue\n * @param \\Illuminate\\Queue\\Jobs\\RedisJob $job\n * @param int $delay\n * @return void\n * @static\n */\n public static function deleteAndRelease($queue, $job, $delay)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->deleteAndRelease($queue, $job, $delay);\n }\n\n /**\n * Delete all of the jobs from the queue.\n *\n * @param string $queue\n * @return int\n * @static\n */\n public static function clear($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->clear($queue);\n }\n\n /**\n * Get the queue or return the default.\n *\n * @param string|null $queue\n * @return string\n * @static\n */\n public static function getQueue($queue)\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getQueue($queue);\n }\n\n /**\n * Get the connection for the queue.\n *\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function getConnection()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getConnection();\n }\n\n /**\n * Get the underlying Redis instance.\n *\n * @return \\Illuminate\\Contracts\\Redis\\Factory\n * @static\n */\n public static function getRedis()\n {\n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getRedis();\n }\n\n /**\n * Get the maximum number of attempts for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobTries($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobTries($job);\n }\n\n /**\n * Get the backoff for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobBackoff($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobBackoff($job);\n }\n\n /**\n * Get the expiration timestamp for an object-based queue handler.\n *\n * @param mixed $job\n * @return mixed\n * @static\n */\n public static function getJobExpiration($job)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getJobExpiration($job);\n }\n\n /**\n * Register a callback to be executed when creating job payloads.\n *\n * @param callable|null $callback\n * @return void\n * @static\n */\n public static function createPayloadUsing($callback)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n \\Illuminate\\Queue\\RedisQueue::createPayloadUsing($callback);\n }\n\n /**\n * Get the container instance being used by the connection.\n *\n * @return \\Illuminate\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Queue\\Queue \n /** @var \\Illuminate\\Queue\\RedisQueue $instance */\n $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\Cache\\RateLimiter\n */\n class RateLimiter {\n /**\n * Register a named limiter configuration.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @param \\Closure $callback\n * @return \\Illuminate\\Cache\\RateLimiter\n * @static\n */\n public static function for($name, $callback)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->for($name, $callback);\n }\n\n /**\n * Get the given named rate limiter.\n *\n * @param \\BackedEnum|\\UnitEnum|string $name\n * @return \\Closure|null\n * @static\n */\n public static function limiter($name)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->limiter($name);\n }\n\n /**\n * Attempts to execute a callback if it's not limited.\n *\n * @param string $key\n * @param int $maxAttempts\n * @param \\Closure $callback\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return mixed\n * @static\n */\n public static function attempt($key, $maxAttempts, $callback, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempt($key, $maxAttempts, $callback, $decaySeconds);\n }\n\n /**\n * Determine if the given key has been \"accessed\" too many times.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return bool\n * @static\n */\n public static function tooManyAttempts($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->tooManyAttempts($key, $maxAttempts);\n }\n\n /**\n * Increment (by 1) the counter for a given key for a given decay time.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @return int\n * @static\n */\n public static function hit($key, $decaySeconds = 60)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->hit($key, $decaySeconds);\n }\n\n /**\n * Increment the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function increment($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->increment($key, $decaySeconds, $amount);\n }\n\n /**\n * Decrement the counter for a given key for a given decay time by a given amount.\n *\n * @param string $key\n * @param \\DateTimeInterface|\\DateInterval|int $decaySeconds\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $decaySeconds = 60, $amount = 1)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->decrement($key, $decaySeconds, $amount);\n }\n\n /**\n * Get the number of attempts for the given key.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function attempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->attempts($key);\n }\n\n /**\n * Reset the number of attempts for the given key.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function resetAttempts($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->resetAttempts($key);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function remaining($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->remaining($key, $maxAttempts);\n }\n\n /**\n * Get the number of retries left for the given key.\n *\n * @param string $key\n * @param int $maxAttempts\n * @return int\n * @static\n */\n public static function retriesLeft($key, $maxAttempts)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->retriesLeft($key, $maxAttempts);\n }\n\n /**\n * Clear the hits and lockout timer for the given key.\n *\n * @param string $key\n * @return void\n * @static\n */\n public static function clear($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n $instance->clear($key);\n }\n\n /**\n * Get the number of seconds until the \"key\" is accessible again.\n *\n * @param string $key\n * @return int\n * @static\n */\n public static function availableIn($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->availableIn($key);\n }\n\n /**\n * Clean the rate limiter key from unicode characters.\n *\n * @param string $key\n * @return string\n * @static\n */\n public static function cleanRateLimiterKey($key)\n {\n /** @var \\Illuminate\\Cache\\RateLimiter $instance */\n return $instance->cleanRateLimiterKey($key);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\Redirector\n */\n class Redirect {\n /**\n * Create a new redirect response to the previous location.\n *\n * @param int $status\n * @param array $headers\n * @param mixed $fallback\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function back($status = 302, $headers = [], $fallback = false)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->back($status, $headers, $fallback);\n }\n\n /**\n * Create a new redirect response to the current URI.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function refresh($status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->refresh($status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function guest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->guest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param mixed $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function intended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->intended($default, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function to($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->to($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to an external URL (no validation).\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function away($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->away($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to the given HTTPS path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function secure($path, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->secure($path, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function route($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->route($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function signedRoute($route, $parameters = [], $expiration = null, $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->signedRoute($route, $parameters, $expiration, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a signed named route.\n *\n * @param \\BackedEnum|string $route\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function temporarySignedRoute($route, $expiration, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->temporarySignedRoute($route, $expiration, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function action($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->action($action, $parameters, $status, $headers);\n }\n\n /**\n * Get the URL generator instance.\n *\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function getUrlGenerator()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getUrlGenerator();\n }\n\n /**\n * Set the active session store.\n *\n * @param \\Illuminate\\Session\\Store $session\n * @return void\n * @static\n */\n public static function setSession($session)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n $instance->setSession($session);\n }\n\n /**\n * Get the \"intended\" URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function getIntendedUrl()\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->getIntendedUrl();\n }\n\n /**\n * Set the \"intended\" URL in the session.\n *\n * @param string $url\n * @return \\Illuminate\\Routing\\Redirector\n * @static\n */\n public static function setIntendedUrl($url)\n {\n /** @var \\Illuminate\\Routing\\Redirector $instance */\n return $instance->setIntendedUrl($url);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Redirector::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Redirector::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Redirector::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Redirector::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Http\\Request\n */\n class Request {\n /**\n * Create a new Illuminate HTTP request from server variables.\n *\n * @return static\n * @static\n */\n public static function capture()\n {\n return \\Illuminate\\Http\\Request::capture();\n }\n\n /**\n * Return the Request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function instance()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->instance();\n }\n\n /**\n * Get the request method.\n *\n * @return string\n * @static\n */\n public static function method()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->method();\n }\n\n /**\n * Get a URI instance for the request.\n *\n * @return \\Illuminate\\Support\\Uri\n * @static\n */\n public static function uri()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->uri();\n }\n\n /**\n * Get the root URL for the application.\n *\n * @return string\n * @static\n */\n public static function root()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->root();\n }\n\n /**\n * Get the URL (no query string) for the request.\n *\n * @return string\n * @static\n */\n public static function url()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->url();\n }\n\n /**\n * Get the full URL for the request.\n *\n * @return string\n * @static\n */\n public static function fullUrl()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrl();\n }\n\n /**\n * Get the full URL for the request with the added query string parameters.\n *\n * @param array $query\n * @return string\n * @static\n */\n public static function fullUrlWithQuery($query)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithQuery($query);\n }\n\n /**\n * Get the full URL for the request without the given query string parameters.\n *\n * @param array|string $keys\n * @return string\n * @static\n */\n public static function fullUrlWithoutQuery($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlWithoutQuery($keys);\n }\n\n /**\n * Get the current path info for the request.\n *\n * @return string\n * @static\n */\n public static function path()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->path();\n }\n\n /**\n * Get the current decoded path info for the request.\n *\n * @return string\n * @static\n */\n public static function decodedPath()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->decodedPath();\n }\n\n /**\n * Get a segment from the URI (1 based index).\n *\n * @param int $index\n * @param string|null $default\n * @return string|null\n * @static\n */\n public static function segment($index, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segment($index, $default);\n }\n\n /**\n * Get all of the segments for the request path.\n *\n * @return array\n * @static\n */\n public static function segments()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->segments();\n }\n\n /**\n * Determine if the current request URI matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the route name matches a given pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function routeIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->routeIs(...$patterns);\n }\n\n /**\n * Determine if the current request URL and query string match a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function fullUrlIs(...$patterns)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fullUrlIs(...$patterns);\n }\n\n /**\n * Get the host name.\n *\n * @return string\n * @static\n */\n public static function host()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->host();\n }\n\n /**\n * Get the HTTP host being requested.\n *\n * @return string\n * @static\n */\n public static function httpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->httpHost();\n }\n\n /**\n * Get the scheme and HTTP host.\n *\n * @return string\n * @static\n */\n public static function schemeAndHttpHost()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->schemeAndHttpHost();\n }\n\n /**\n * Determine if the request is the result of an AJAX call.\n *\n * @return bool\n * @static\n */\n public static function ajax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ajax();\n }\n\n /**\n * Determine if the request is the result of a PJAX call.\n *\n * @return bool\n * @static\n */\n public static function pjax()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->pjax();\n }\n\n /**\n * Determine if the request is the result of a prefetch call.\n *\n * @return bool\n * @static\n */\n public static function prefetch()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefetch();\n }\n\n /**\n * Determine if the request is over HTTPS.\n *\n * @return bool\n * @static\n */\n public static function secure()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->secure();\n }\n\n /**\n * Get the client IP address.\n *\n * @return string|null\n * @static\n */\n public static function ip()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ip();\n }\n\n /**\n * Get the client IP addresses.\n *\n * @return array\n * @static\n */\n public static function ips()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->ips();\n }\n\n /**\n * Get the client user agent.\n *\n * @return string|null\n * @static\n */\n public static function userAgent()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->userAgent();\n }\n\n /**\n * Merge new input into the current request's input array.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function merge($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->merge($input);\n }\n\n /**\n * Merge new input into the request's input, but only when that key is missing from the request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function mergeIfMissing($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->mergeIfMissing($input);\n }\n\n /**\n * Replace the input values for the current request.\n *\n * @param array $input\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function replace($input)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->replace($input);\n }\n\n /**\n * This method belongs to Symfony HttpFoundation and is not usually needed when using Laravel.\n * \n * Instead, you may use the \"input\" method.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the JSON payload for the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? \\Symfony\\Component\\HttpFoundation\\InputBag : mixed)\n * @static\n */\n public static function json($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->json($key, $default);\n }\n\n /**\n * Create a new request instance from the given Laravel request.\n *\n * @param \\Illuminate\\Http\\Request $from\n * @param \\Illuminate\\Http\\Request|null $to\n * @return static\n * @static\n */\n public static function createFrom($from, $to = null)\n {\n return \\Illuminate\\Http\\Request::createFrom($from, $to);\n }\n\n /**\n * Create an Illuminate request from a Symfony instance.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @return static\n * @static\n */\n public static function createFromBase($request)\n {\n return \\Illuminate\\Http\\Request::createFromBase($request);\n }\n\n /**\n * Clones a request and overrides some of its parameters.\n *\n * @return static\n * @param array|null $query The GET parameters\n * @param array|null $request The POST parameters\n * @param array|null $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array|null $cookies The COOKIE parameters\n * @param array|null $files The FILES parameters\n * @param array|null $server The SERVER parameters\n * @static\n */\n public static function duplicate($query = null, $request = null, $attributes = null, $cookies = null, $files = null, $server = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->duplicate($query, $request, $attributes, $cookies, $files, $server);\n }\n\n /**\n * Whether the request contains a Session object.\n * \n * This method does not give any information about the state of the session object,\n * like whether the session is started or not. It is just a way to check if this Request\n * is associated with a Session instance.\n *\n * @param bool $skipIfUninitialized When true, ignores factories injected by `setSessionFactory`\n * @static\n */\n public static function hasSession($skipIfUninitialized = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasSession($skipIfUninitialized);\n }\n\n /**\n * Gets the Session.\n *\n * @throws SessionNotFoundException When session is not set properly\n * @static\n */\n public static function getSession()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSession();\n }\n\n /**\n * Get the session associated with the request.\n *\n * @return \\Illuminate\\Contracts\\Session\\Session\n * @throws \\RuntimeException\n * @static\n */\n public static function session()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->session();\n }\n\n /**\n * Set the session instance on the request.\n *\n * @param \\Illuminate\\Contracts\\Session\\Session $session\n * @return void\n * @static\n */\n public static function setLaravelSession($session)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setLaravelSession($session);\n }\n\n /**\n * Set the locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setRequestLocale($locale);\n }\n\n /**\n * Set the default locale for the request instance.\n *\n * @param string $locale\n * @return void\n * @static\n */\n public static function setDefaultRequestLocale($locale)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->setDefaultRequestLocale($locale);\n }\n\n /**\n * Get the user making the request.\n *\n * @param string|null $guard\n * @return mixed\n * @static\n */\n public static function user($guard = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->user($guard);\n }\n\n /**\n * Get the route handling the request.\n *\n * @param string|null $param\n * @param mixed $default\n * @return ($param is null ? \\Illuminate\\Routing\\Route : object|string|null)\n * @static\n */\n public static function route($param = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->route($param, $default);\n }\n\n /**\n * Get a unique fingerprint for the request / route / IP address.\n *\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function fingerprint()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fingerprint();\n }\n\n /**\n * Set the JSON payload for the request.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\InputBag $json\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setJson($json)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setJson($json);\n }\n\n /**\n * Get the user resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getUserResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserResolver();\n }\n\n /**\n * Set the user resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setUserResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setUserResolver($callback);\n }\n\n /**\n * Get the route resolver callback.\n *\n * @return \\Closure\n * @static\n */\n public static function getRouteResolver()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRouteResolver();\n }\n\n /**\n * Set the route resolver callback.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function setRouteResolver($callback)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRouteResolver($callback);\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @return array\n * @static\n */\n public static function toArray()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->toArray();\n }\n\n /**\n * Determine if the given offset exists.\n *\n * @param string $offset\n * @return bool\n * @static\n */\n public static function offsetExists($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetExists($offset);\n }\n\n /**\n * Get the value at the given offset.\n *\n * @param string $offset\n * @return mixed\n * @static\n */\n public static function offsetGet($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->offsetGet($offset);\n }\n\n /**\n * Set the value at the given offset.\n *\n * @param string $offset\n * @param mixed $value\n * @return void\n * @static\n */\n public static function offsetSet($offset, $value)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetSet($offset, $value);\n }\n\n /**\n * Remove the value at the given offset.\n *\n * @param string $offset\n * @return void\n * @static\n */\n public static function offsetUnset($offset)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->offsetUnset($offset);\n }\n\n /**\n * Sets the parameters for this request.\n * \n * This method also re-initializes all properties.\n *\n * @param array $query The GET parameters\n * @param array $request The POST parameters\n * @param array $attributes The request attributes (parameters parsed from the PATH_INFO, ...)\n * @param array $cookies The COOKIE parameters\n * @param array $files The FILES parameters\n * @param array $server The SERVER parameters\n * @param string|resource|null $content The raw body data\n * @static\n */\n public static function initialize($query = [], $request = [], $attributes = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->initialize($query, $request, $attributes, $cookies, $files, $server, $content);\n }\n\n /**\n * Creates a new request with values from PHP's super globals.\n *\n * @static\n */\n public static function createFromGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::createFromGlobals();\n }\n\n /**\n * Creates a Request based on a given URI and configuration.\n * \n * The information contained in the URI always take precedence\n * over the other information (server and parameters).\n *\n * @param string $uri The URI\n * @param string $method The HTTP method\n * @param array $parameters The query (GET) or request (POST) parameters\n * @param array $cookies The request cookies ($_COOKIE)\n * @param array $files The request files ($_FILES)\n * @param array $server The server parameters ($_SERVER)\n * @param string|resource|null $content The raw body data\n * @throws BadRequestException When the URI is invalid\n * @static\n */\n public static function create($uri, $method = 'GET', $parameters = [], $cookies = [], $files = [], $server = [], $content = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::create($uri, $method, $parameters, $cookies, $files, $server, $content);\n }\n\n /**\n * Sets a callable able to create a Request instance.\n * \n * This is mainly useful when you need to override the Request class\n * to keep BC with an existing system. It should not be used for any\n * other purpose.\n *\n * @static\n */\n public static function setFactory($callable)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setFactory($callable);\n }\n\n /**\n * Overrides the PHP global variables according to this request instance.\n * \n * It overrides $_GET, $_POST, $_REQUEST, $_SERVER, $_COOKIE.\n * $_FILES is never overridden, see rfc1867\n *\n * @static\n */\n public static function overrideGlobals()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->overrideGlobals();\n }\n\n /**\n * Sets a list of trusted proxies.\n * \n * You should only list the reverse proxies that you manage directly.\n *\n * @param array $proxies A list of trusted proxies, the string 'REMOTE_ADDR' will be replaced with $_SERVER['REMOTE_ADDR'] and 'PRIVATE_SUBNETS' by IpUtils::PRIVATE_SUBNETS\n * @param int-mask-of<Request::HEADER_*> $trustedHeaderSet A bit field to set which headers to trust from your proxies\n * @static\n */\n public static function setTrustedProxies($proxies, $trustedHeaderSet)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedProxies($proxies, $trustedHeaderSet);\n }\n\n /**\n * Gets the list of trusted proxies.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedProxies()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedProxies();\n }\n\n /**\n * Gets the set of trusted headers from trusted proxies.\n *\n * @return int A bit field of Request::HEADER_* that defines which headers are trusted from your proxies\n * @static\n */\n public static function getTrustedHeaderSet()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHeaderSet();\n }\n\n /**\n * Sets a list of trusted host patterns.\n * \n * You should only list the hosts you manage using regexs.\n *\n * @param array $hostPatterns A list of trusted host patterns\n * @static\n */\n public static function setTrustedHosts($hostPatterns)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setTrustedHosts($hostPatterns);\n }\n\n /**\n * Gets the list of trusted host patterns.\n *\n * @return string[]\n * @static\n */\n public static function getTrustedHosts()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getTrustedHosts();\n }\n\n /**\n * Normalizes a query string.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized,\n * have consistent escaping and unneeded delimiters are removed.\n *\n * @static\n */\n public static function normalizeQueryString($qs)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::normalizeQueryString($qs);\n }\n\n /**\n * Enables support for the _method request parameter to determine the intended HTTP method.\n * \n * Be warned that enabling this feature might lead to CSRF issues in your code.\n * Check that you are using CSRF tokens when required.\n * If the HTTP method parameter override is enabled, an html-form with method \"POST\" can be altered\n * and used to send a \"PUT\" or \"DELETE\" request via the _method request parameter.\n * If these methods are not protected against CSRF, this presents a possible vulnerability.\n * \n * The HTTP method can only be overridden when the real HTTP method is POST.\n *\n * @static\n */\n public static function enableHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::enableHttpMethodParameterOverride();\n }\n\n /**\n * Checks whether support for the _method request parameter is enabled.\n *\n * @static\n */\n public static function getHttpMethodParameterOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getHttpMethodParameterOverride();\n }\n\n /**\n * Sets the list of HTTP methods that can be overridden.\n * \n * Set to null to allow all methods to be overridden (default). Set to an\n * empty array to disallow overrides entirely. Otherwise, provide the list\n * of uppercased method names that are allowed.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null $methods\n * @static\n */\n public static function setAllowedHttpMethodOverride($methods)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::setAllowedHttpMethodOverride($methods);\n }\n\n /**\n * Gets the list of HTTP methods that can be overridden.\n *\n * @return \\Symfony\\Component\\HttpFoundation\\uppercase-string[]|null\n * @static\n */\n public static function getAllowedHttpMethodOverride()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getAllowedHttpMethodOverride();\n }\n\n /**\n * Whether the request contains a Session which was started in one of the\n * previous requests.\n *\n * @static\n */\n public static function hasPreviousSession()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasPreviousSession();\n }\n\n /**\n * @static\n */\n public static function setSession($session)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSession($session);\n }\n\n /**\n * @internal\n * @param callable(): SessionInterface $factory\n * @static\n */\n public static function setSessionFactory($factory)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setSessionFactory($factory);\n }\n\n /**\n * Returns the client IP addresses.\n * \n * In the returned array the most trusted IP address is first, and the\n * least trusted one last. The \"real\" client IP address is the last one,\n * but this is also the least trusted one. Trusted proxies are stripped.\n * \n * Use this method carefully; you should use getClientIp() instead.\n *\n * @see getClientIp()\n * @static\n */\n public static function getClientIps()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIps();\n }\n\n /**\n * Returns the client IP address.\n * \n * This method can read the client IP address from the \"X-Forwarded-For\" header\n * when trusted proxies were set via \"setTrustedProxies()\". The \"X-Forwarded-For\"\n * header value is a comma+space separated list of IP addresses, the left-most\n * being the original client, and each successive proxy that passed the request\n * adding the IP address where it received the request from.\n * \n * If your reverse proxy uses a different header name than \"X-Forwarded-For\",\n * (\"Client-Ip\" for instance), configure it via the $trustedHeaderSet\n * argument of the Request::setTrustedProxies() method instead.\n *\n * @see getClientIps()\n * @see https://wikipedia.org/wiki/X-Forwarded-For\n * @static\n */\n public static function getClientIp()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getClientIp();\n }\n\n /**\n * Returns current script name.\n *\n * @static\n */\n public static function getScriptName()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScriptName();\n }\n\n /**\n * Returns the path being requested relative to the executed script.\n * \n * The path info always starts with a /.\n * \n * Suppose this request is instantiated from /mysite on localhost:\n * \n * * http://localhost/mysite returns an empty string\n * * http://localhost/mysite/about returns '/about'\n * * http://localhost/mysite/enco%20ded returns '/enco%20ded'\n * * http://localhost/mysite/about?var=1 returns '/about'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getPathInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPathInfo();\n }\n\n /**\n * Returns the root path from which this request is executed.\n * \n * Suppose that an index.php file instantiates this request object:\n * \n * * http://localhost/index.php returns an empty string\n * * http://localhost/index.php/page returns an empty string\n * * http://localhost/web/index.php returns '/web'\n * * http://localhost/we%20b/index.php returns '/we%20b'\n *\n * @return string The raw path (i.e. not urldecoded)\n * @static\n */\n public static function getBasePath()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBasePath();\n }\n\n /**\n * Returns the root URL from which this request is executed.\n * \n * The base URL never ends with a /.\n * \n * This is similar to getBasePath(), except that it also includes the\n * script filename (e.g. index.php) if one exists.\n *\n * @return string The raw URL (i.e. not urldecoded)\n * @static\n */\n public static function getBaseUrl()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getBaseUrl();\n }\n\n /**\n * Gets the request's scheme.\n *\n * @static\n */\n public static function getScheme()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getScheme();\n }\n\n /**\n * Returns the port on which the request is made.\n * \n * This method can read the client port from the \"X-Forwarded-Port\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Port\" header must contain the client port.\n *\n * @return int|string|null Can be a string if fetched from the server bag\n * @static\n */\n public static function getPort()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPort();\n }\n\n /**\n * Returns the user.\n *\n * @static\n */\n public static function getUser()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUser();\n }\n\n /**\n * Returns the password.\n *\n * @static\n */\n public static function getPassword()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPassword();\n }\n\n /**\n * Gets the user info.\n *\n * @return string|null A user name if any and, optionally, scheme-specific information about how to gain authorization to access the server\n * @static\n */\n public static function getUserInfo()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUserInfo();\n }\n\n /**\n * Returns the HTTP host being requested.\n * \n * The port name will be appended to the host if it's non-standard.\n *\n * @static\n */\n public static function getHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHttpHost();\n }\n\n /**\n * Returns the requested URI (path and query string).\n *\n * @return string The raw URI (i.e. not URI decoded)\n * @static\n */\n public static function getRequestUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestUri();\n }\n\n /**\n * Gets the scheme and HTTP host.\n * \n * If the URL was called with basic authentication, the user\n * and the password are not added to the generated string.\n *\n * @static\n */\n public static function getSchemeAndHttpHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getSchemeAndHttpHost();\n }\n\n /**\n * Generates a normalized URI (URL) for the Request.\n *\n * @see getQueryString()\n * @static\n */\n public static function getUri()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUri();\n }\n\n /**\n * Generates a normalized URI for the given path.\n *\n * @param string $path A path to use instead of the current one\n * @static\n */\n public static function getUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getUriForPath($path);\n }\n\n /**\n * Returns the path as relative reference from the current Request path.\n * \n * Only the URIs path component (no schema, host etc.) is relevant and must be given.\n * Both paths must be absolute and not contain relative parts.\n * Relative URLs from one resource to another are useful when generating self-contained downloadable document archives.\n * Furthermore, they can be used to reduce the link size in documents.\n * \n * Example target paths, given a base path of \"/a/b/c/d\":\n * - \"/a/b/c/d\" -> \"\"\n * - \"/a/b/c/\" -> \"./\"\n * - \"/a/b/\" -> \"../\"\n * - \"/a/b/c/other\" -> \"other\"\n * - \"/a/x/y\" -> \"../../x/y\"\n *\n * @static\n */\n public static function getRelativeUriForPath($path)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRelativeUriForPath($path);\n }\n\n /**\n * Generates the normalized query string for the Request.\n * \n * It builds a normalized query string, where keys/value pairs are alphabetized\n * and have consistent escaping.\n *\n * @static\n */\n public static function getQueryString()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getQueryString();\n }\n\n /**\n * Checks whether the request is secure or not.\n * \n * This method can read the client protocol from the \"X-Forwarded-Proto\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Proto\" header must contain the protocol: \"https\" or \"http\".\n *\n * @static\n */\n public static function isSecure()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isSecure();\n }\n\n /**\n * Returns the host name.\n * \n * This method can read the client host name from the \"X-Forwarded-Host\" header\n * when trusted proxies were set via \"setTrustedProxies()\".\n * \n * The \"X-Forwarded-Host\" header must contain the client host name.\n *\n * @throws SuspiciousOperationException when the host name is invalid or not trusted\n * @static\n */\n public static function getHost()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getHost();\n }\n\n /**\n * Sets the request method.\n *\n * @static\n */\n public static function setMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setMethod($method);\n }\n\n /**\n * Gets the request \"intended\" method.\n * \n * If the X-HTTP-Method-Override header is set, and if the method is a POST,\n * then it is used to determine the \"real\" intended HTTP method.\n * \n * The _method request parameter can also be used to determine the HTTP method,\n * but only if enableHttpMethodParameterOverride() has been called.\n * \n * The method is always an uppercased string.\n *\n * @see getRealMethod()\n * @static\n */\n public static function getMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMethod();\n }\n\n /**\n * Gets the \"real\" request method.\n *\n * @see getMethod()\n * @static\n */\n public static function getRealMethod()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRealMethod();\n }\n\n /**\n * Gets the mime type associated with the format.\n *\n * @static\n */\n public static function getMimeType($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getMimeType($format);\n }\n\n /**\n * Gets the mime types associated with the format.\n *\n * @return string[]\n * @static\n */\n public static function getMimeTypes($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n return \\Illuminate\\Http\\Request::getMimeTypes($format);\n }\n\n /**\n * Gets the format associated with the mime type.\n * \n * Resolution order:\n * 1) Exact match on the full MIME type (e.g. \"application/json\").\n * 2) Match on the canonical MIME type (i.e. before the first \";\" parameter).\n * 3) If the type is \"application/*+suffix\", use the structured syntax suffix\n * mapping (e.g. \"application/foo+json\" → \"json\"), when available.\n * 4) If $subtypeFallback is true and no match was found:\n * - return the MIME subtype (without \"x-\" prefix), provided it does not\n * contain a \"+\" (e.g. \"application/x-yaml\" → \"yaml\", \"text/csv\" → \"csv\").\n *\n * @param string|null $mimeType The mime type to check\n * @param bool $subtypeFallback Whether to fall back to the subtype if no exact match is found\n * @static\n */\n public static function getFormat($mimeType)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getFormat($mimeType);\n }\n\n /**\n * Associates a format with mime types.\n *\n * @param string $format The format to set\n * @param string|string[] $mimeTypes The associated mime types (the preferred one must be the first as it will be used as the content type)\n * @static\n */\n public static function setFormat($format, $mimeTypes)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setFormat($format, $mimeTypes);\n }\n\n /**\n * Gets the request format.\n * \n * Here is the process to determine the format:\n * \n * * format defined by the user (with setRequestFormat())\n * * _format request attribute\n * * $default\n *\n * @see getPreferredFormat\n * @static\n */\n public static function getRequestFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getRequestFormat($default);\n }\n\n /**\n * Sets the request format.\n *\n * @static\n */\n public static function setRequestFormat($format)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setRequestFormat($format);\n }\n\n /**\n * Gets the usual name of the format associated with the request's media type (provided in the Content-Type header).\n *\n * @see Request::$formats\n * @static\n */\n public static function getContentTypeFormat()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContentTypeFormat();\n }\n\n /**\n * Sets the default locale.\n *\n * @static\n */\n public static function setDefaultLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setDefaultLocale($locale);\n }\n\n /**\n * Get the default locale.\n *\n * @static\n */\n public static function getDefaultLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getDefaultLocale();\n }\n\n /**\n * Sets the locale.\n *\n * @static\n */\n public static function setLocale($locale)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->setLocale($locale);\n }\n\n /**\n * Get the locale.\n *\n * @static\n */\n public static function getLocale()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLocale();\n }\n\n /**\n * Checks if the request method is of specified type.\n *\n * @param string $method Uppercase request method (GET, POST etc)\n * @static\n */\n public static function isMethod($method)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethod($method);\n }\n\n /**\n * Checks whether or not the method is safe.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.1\n * @static\n */\n public static function isMethodSafe()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodSafe();\n }\n\n /**\n * Checks whether or not the method is idempotent.\n *\n * @static\n */\n public static function isMethodIdempotent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodIdempotent();\n }\n\n /**\n * Checks whether the method is cacheable or not.\n *\n * @see https://tools.ietf.org/html/rfc7231#section-4.2.3\n * @static\n */\n public static function isMethodCacheable()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isMethodCacheable();\n }\n\n /**\n * Returns the protocol version.\n * \n * If the application is behind a proxy, the protocol version used in the\n * requests between the client and the proxy and between the proxy and the\n * server might be different. This returns the former (from the \"Via\" header)\n * if the proxy is trusted (see \"setTrustedProxies()\"), otherwise it returns\n * the latter (from the \"SERVER_PROTOCOL\" server parameter).\n *\n * @static\n */\n public static function getProtocolVersion()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getProtocolVersion();\n }\n\n /**\n * Returns the request body content.\n *\n * @param bool $asResource If true, a resource will be returned\n * @return string|resource\n * @psalm-return ($asResource is true ? resource : string)\n * @static\n */\n public static function getContent($asResource = false)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getContent($asResource);\n }\n\n /**\n * Gets the decoded form or json request body.\n *\n * @throws JsonException When the body cannot be decoded to an array\n * @static\n */\n public static function getPayload()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPayload();\n }\n\n /**\n * Gets the Etags.\n *\n * @static\n */\n public static function getETags()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getETags();\n }\n\n /**\n * @static\n */\n public static function isNoCache()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNoCache();\n }\n\n /**\n * Gets the preferred format for the response by inspecting, in the following order:\n * * the request format set using setRequestFormat;\n * * the values of the Accept HTTP header.\n * \n * Note that if you use this method, you should send the \"Vary: Accept\" header\n * in the response to prevent any issues with intermediary HTTP caches.\n *\n * @static\n */\n public static function getPreferredFormat($default = 'html')\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredFormat($default);\n }\n\n /**\n * Returns the preferred language.\n *\n * @param string[] $locales An array of ordered available locales\n * @static\n */\n public static function getPreferredLanguage($locales = null)\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getPreferredLanguage($locales);\n }\n\n /**\n * Gets a list of languages acceptable by the client browser ordered in the user browser preferences.\n *\n * @return string[]\n * @static\n */\n public static function getLanguages()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getLanguages();\n }\n\n /**\n * Gets a list of charsets acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getCharsets()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getCharsets();\n }\n\n /**\n * Gets a list of encodings acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getEncodings()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getEncodings();\n }\n\n /**\n * Gets a list of content types acceptable by the client browser in preferable order.\n *\n * @return string[]\n * @static\n */\n public static function getAcceptableContentTypes()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->getAcceptableContentTypes();\n }\n\n /**\n * Returns true if the request is an XMLHttpRequest.\n * \n * It works if your JavaScript library sets an X-Requested-With HTTP header.\n * It is known to work with common JavaScript frameworks:\n *\n * @see https://wikipedia.org/wiki/List_of_Ajax_frameworks#JavaScript\n * @static\n */\n public static function isXmlHttpRequest()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isXmlHttpRequest();\n }\n\n /**\n * Checks whether the client browser prefers safe content or not according to RFC8674.\n *\n * @see https://tools.ietf.org/html/rfc8674\n * @static\n */\n public static function preferSafeContent()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->preferSafeContent();\n }\n\n /**\n * Indicates whether this request originated from a trusted proxy.\n * \n * This can be useful to determine whether or not to trust the\n * contents of a proxy-specific header.\n *\n * @static\n */\n public static function isFromTrustedProxy()\n {\n //Method inherited from \\Symfony\\Component\\HttpFoundation\\Request \n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isFromTrustedProxy();\n }\n\n /**\n * Filter the given array of rules into an array of rules that are included in precognitive headers.\n *\n * @param array $rules\n * @return array\n * @static\n */\n public static function filterPrecognitiveRules($rules)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filterPrecognitiveRules($rules);\n }\n\n /**\n * Determine if the request is attempting to be precognitive.\n *\n * @return bool\n * @static\n */\n public static function isAttemptingPrecognition()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isAttemptingPrecognition();\n }\n\n /**\n * Determine if the request is precognitive.\n *\n * @return bool\n * @static\n */\n public static function isPrecognitive()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isPrecognitive();\n }\n\n /**\n * Determine if the request is sending JSON.\n *\n * @return bool\n * @static\n */\n public static function isJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isJson();\n }\n\n /**\n * Determine if the current request probably expects a JSON response.\n *\n * @return bool\n * @static\n */\n public static function expectsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->expectsJson();\n }\n\n /**\n * Determine if the current request is asking for JSON.\n *\n * @return bool\n * @static\n */\n public static function wantsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->wantsJson();\n }\n\n /**\n * Determines whether the current requests accepts a given content type.\n *\n * @param string|array $contentTypes\n * @return bool\n * @static\n */\n public static function accepts($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->accepts($contentTypes);\n }\n\n /**\n * Return the most suitable content type from the given array based on content negotiation.\n *\n * @param string|array $contentTypes\n * @return string|null\n * @static\n */\n public static function prefers($contentTypes)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->prefers($contentTypes);\n }\n\n /**\n * Determine if the current request accepts any content type.\n *\n * @return bool\n * @static\n */\n public static function acceptsAnyContentType()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsAnyContentType();\n }\n\n /**\n * Determines whether a request accepts JSON.\n *\n * @return bool\n * @static\n */\n public static function acceptsJson()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsJson();\n }\n\n /**\n * Determines whether a request accepts HTML.\n *\n * @return bool\n * @static\n */\n public static function acceptsHtml()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->acceptsHtml();\n }\n\n /**\n * Determine if the given content types match.\n *\n * @param string $actual\n * @param string $type\n * @return bool\n * @static\n */\n public static function matchesType($actual, $type)\n {\n return \\Illuminate\\Http\\Request::matchesType($actual, $type);\n }\n\n /**\n * Get the data format expected in the response.\n *\n * @param string $default\n * @return string\n * @static\n */\n public static function format($default = 'html')\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->format($default);\n }\n\n /**\n * Retrieve an old input item.\n *\n * @param string|null $key\n * @param \\Illuminate\\Database\\Eloquent\\Model|string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function old($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->old($key, $default);\n }\n\n /**\n * Flash the input for the current request to the session.\n *\n * @return void\n * @static\n */\n public static function flash()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flash();\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashOnly($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashOnly($keys);\n }\n\n /**\n * Flash only some of the input to the session.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function flashExcept($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flashExcept($keys);\n }\n\n /**\n * Flush all of the old input from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n $instance->flush();\n }\n\n /**\n * Retrieve a server variable from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function server($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->server($key, $default);\n }\n\n /**\n * Determine if a header is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasHeader($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasHeader($key);\n }\n\n /**\n * Retrieve a header from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function header($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->header($key, $default);\n }\n\n /**\n * Get the bearer token from the request headers.\n *\n * @return string|null\n * @static\n */\n public static function bearerToken()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->bearerToken();\n }\n\n /**\n * Get the keys for all of the input and files.\n *\n * @return array\n * @static\n */\n public static function keys()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->keys();\n }\n\n /**\n * Get all of the input and files for the request.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function all($keys = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->all($keys);\n }\n\n /**\n * Retrieve an input item from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function input($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Retrieve input from the request as a Fluent object instance.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Fluent\n * @static\n */\n public static function fluent($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->fluent($key);\n }\n\n /**\n * Retrieve a query string item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function query($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->query($key, $default);\n }\n\n /**\n * Retrieve a request payload item from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function post($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->post($key, $default);\n }\n\n /**\n * Determine if a cookie is set on the request.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasCookie($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasCookie($key);\n }\n\n /**\n * Retrieve a cookie from the request.\n *\n * @param string|null $key\n * @param string|array|null $default\n * @return string|array|null\n * @static\n */\n public static function cookie($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->cookie($key, $default);\n }\n\n /**\n * Get an array of all of the files on the request.\n *\n * @return array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]>\n * @static\n */\n public static function allFiles()\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->allFiles();\n }\n\n /**\n * Determine if the uploaded data contains a file.\n *\n * @param string $key\n * @return bool\n * @static\n */\n public static function hasFile($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasFile($key);\n }\n\n /**\n * Retrieve a file from the request.\n *\n * @param string|null $key\n * @param mixed $default\n * @return ($key is null ? array<string, \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]> : \\Illuminate\\Http\\UploadedFile|\\Illuminate\\Http\\UploadedFile[]|null)\n * @static\n */\n public static function file($key = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->file($key, $default);\n }\n\n /**\n * Dump the items.\n *\n * @param mixed $keys\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function dump($keys = [])\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dump($keys);\n }\n\n /**\n * Dump the given arguments and terminate execution.\n *\n * @param mixed $args\n * @return never\n * @static\n */\n public static function dd(...$args)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->dd(...$args);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the data contains a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if the instance contains any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function hasAny($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->hasAny($keys);\n }\n\n /**\n * Apply the callback if the instance contains the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenHas($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenHas($key, $callback, $default);\n }\n\n /**\n * Determine if the instance contains a non-empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function filled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->filled($key);\n }\n\n /**\n * Determine if the instance contains an empty value for the given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function isNotFilled($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->isNotFilled($key);\n }\n\n /**\n * Determine if the instance contains a non-empty value for any of the given keys.\n *\n * @param string|array $keys\n * @return bool\n * @static\n */\n public static function anyFilled($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->anyFilled($keys);\n }\n\n /**\n * Apply the callback if the instance contains a non-empty value for the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenFilled($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenFilled($key, $callback, $default);\n }\n\n /**\n * Determine if the instance is missing a given key.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->missing($key);\n }\n\n /**\n * Apply the callback if the instance is missing the given key.\n *\n * @param string $key\n * @param callable $callback\n * @param callable|null $default\n * @return $this|mixed\n * @static\n */\n public static function whenMissing($key, $callback, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->whenMissing($key, $callback, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function str($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->str($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Stringable instance.\n *\n * @param string $key\n * @param mixed $default\n * @return \\Illuminate\\Support\\Stringable\n * @static\n */\n public static function string($key, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->string($key, $default);\n }\n\n /**\n * Retrieve data as a boolean value.\n * \n * Returns true when value is \"1\", \"true\", \"on\", and \"yes\". Otherwise, returns false.\n *\n * @param string|null $key\n * @param bool $default\n * @return bool\n * @static\n */\n public static function boolean($key = null, $default = false)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->boolean($key, $default);\n }\n\n /**\n * Retrieve data as an integer value.\n *\n * @param string $key\n * @param int $default\n * @return int\n * @static\n */\n public static function integer($key, $default = 0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->integer($key, $default);\n }\n\n /**\n * Retrieve data as a float value.\n *\n * @param string $key\n * @param float $default\n * @return float\n * @static\n */\n public static function float($key, $default = 0.0)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->float($key, $default);\n }\n\n /**\n * Retrieve data from the instance as a Carbon instance.\n *\n * @param string $key\n * @param string|null $format\n * @param \\UnitEnum|string|null $tz\n * @return \\Illuminate\\Support\\Carbon|null\n * @throws \\Carbon\\Exceptions\\InvalidFormatException\n * @static\n */\n public static function date($key, $format = null, $tz = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->date($key, $format, $tz);\n }\n\n /**\n * Retrieve data from the instance as an enum.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @param TEnum|null $default\n * @return TEnum|null\n * @static\n */\n public static function enum($key, $enumClass, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enum($key, $enumClass, $default);\n }\n\n /**\n * Retrieve data from the instance as an array of enums.\n *\n * @template TEnum of \\BackedEnum\n * @param string $key\n * @param class-string<TEnum> $enumClass\n * @return TEnum[]\n * @static\n */\n public static function enums($key, $enumClass)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->enums($key, $enumClass);\n }\n\n /**\n * Retrieve data from the instance as an array.\n *\n * @param array|string|null $key\n * @return array\n * @static\n */\n public static function array($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->array($key);\n }\n\n /**\n * Retrieve data from the instance as a collection.\n *\n * @param array|string|null $key\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function collect($key = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->collect($key);\n }\n\n /**\n * Get a subset containing the provided keys with values from the instance data.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all of the data except for a specified array of items.\n *\n * @param mixed $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->except($keys);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Http\\Request $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Http\\Request::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Http\\Request::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Http\\Request::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Http\\Request::flushMacros();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\ResponseFactory\n */\n class Response {\n /**\n * Create a new response instance.\n *\n * @param mixed $content\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function make($content = '', $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->make($content, $status, $headers);\n }\n\n /**\n * Create a new \"no content\" response.\n *\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function noContent($status = 204, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->noContent($status, $headers);\n }\n\n /**\n * Create a new response for a given view.\n *\n * @param string|array $view\n * @param array $data\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\Response\n * @static\n */\n public static function view($view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->view($view, $data, $status, $headers);\n }\n\n /**\n * Create a new JSON response instance.\n *\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function json($data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->json($data, $status, $headers, $options);\n }\n\n /**\n * Create a new JSONP response instance.\n *\n * @param string $callback\n * @param mixed $data\n * @param int $status\n * @param array $headers\n * @param int $options\n * @return \\Illuminate\\Http\\JsonResponse\n * @static\n */\n public static function jsonp($callback, $data = [], $status = 200, $headers = [], $options = 0)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->jsonp($callback, $data, $status, $headers, $options);\n }\n\n /**\n * Create a new event stream response.\n *\n * @param \\Closure $callback\n * @param array $headers\n * @param \\Illuminate\\Http\\StreamedEvent|string|null $endStreamWith\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function eventStream($callback, $headers = [], $endStreamWith = '</stream>')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->eventStream($callback, $headers, $endStreamWith);\n }\n\n /**\n * Create a new streamed response instance.\n *\n * @param callable|null $callback\n * @param int $status\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function stream($callback, $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->stream($callback, $status, $headers);\n }\n\n /**\n * Create a new streamed JSON response instance.\n *\n * @param array $data\n * @param int $status\n * @param array $headers\n * @param int $encodingOptions\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedJsonResponse\n * @static\n */\n public static function streamJson($data, $status = 200, $headers = [], $encodingOptions = 15)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamJson($data, $status, $headers, $encodingOptions);\n }\n\n /**\n * Create a new streamed response instance as a file download.\n *\n * @param callable $callback\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @throws \\Illuminate\\Routing\\Exceptions\\StreamedResponseException\n * @static\n */\n public static function streamDownload($callback, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->streamDownload($callback, $name, $headers, $disposition);\n }\n\n /**\n * Create a new file download response.\n *\n * @param \\SplFileInfo|string $file\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function download($file, $name = null, $headers = [], $disposition = 'attachment')\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->download($file, $name, $headers, $disposition);\n }\n\n /**\n * Return the raw contents of a binary file.\n *\n * @param \\SplFileInfo|string $file\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\BinaryFileResponse\n * @static\n */\n public static function file($file, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->file($file, $headers);\n }\n\n /**\n * Create a new redirect response to the given path.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectTo($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectTo($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to a named route.\n *\n * @param \\BackedEnum|string $route\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToRoute($route, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToRoute($route, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response to a controller action.\n *\n * @param array|string $action\n * @param mixed $parameters\n * @param int $status\n * @param array $headers\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToAction($action, $parameters = [], $status = 302, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToAction($action, $parameters, $status, $headers);\n }\n\n /**\n * Create a new redirect response, while putting the current URL in the session.\n *\n * @param string $path\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectGuest($path, $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectGuest($path, $status, $headers, $secure);\n }\n\n /**\n * Create a new redirect response to the previously intended location.\n *\n * @param string $default\n * @param int $status\n * @param array $headers\n * @param bool|null $secure\n * @return \\Illuminate\\Http\\RedirectResponse\n * @static\n */\n public static function redirectToIntended($default = '/', $status = 302, $headers = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\ResponseFactory $instance */\n return $instance->redirectToIntended($default, $status, $headers, $secure);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\ResponseFactory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\ResponseFactory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\ResponseFactory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\ResponseFactory::flushMacros();\n }\n\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n /**\n * @method static \\Illuminate\\Routing\\RouteRegistrar attribute(string $key, mixed $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlpha(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereAlphaNumeric(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereNumber(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUlid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereUuid(array|string $parameters)\n * @method static \\Illuminate\\Routing\\RouteRegistrar whereIn(array|string $parameters, array $values)\n * @method static \\Illuminate\\Routing\\RouteRegistrar as(string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar can(\\UnitEnum|string $ability, array|string $models = [])\n * @method static \\Illuminate\\Routing\\RouteRegistrar controller(string $controller)\n * @method static \\Illuminate\\Routing\\RouteRegistrar domain(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar middleware(array|string|null $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar missing(\\Closure $missing)\n * @method static \\Illuminate\\Routing\\RouteRegistrar name(\\BackedEnum|string $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar namespace(string|null $value)\n * @method static \\Illuminate\\Routing\\RouteRegistrar prefix(string $prefix)\n * @method static \\Illuminate\\Routing\\RouteRegistrar scopeBindings()\n * @method static \\Illuminate\\Routing\\RouteRegistrar where(array $where)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutMiddleware(array|string $middleware)\n * @method static \\Illuminate\\Routing\\RouteRegistrar withoutScopedBindings()\n * @see \\Illuminate\\Routing\\Router\n */\n class Route {\n /**\n * Register a new GET route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function get($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->get($uri, $action);\n }\n\n /**\n * Register a new POST route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function post($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->post($uri, $action);\n }\n\n /**\n * Register a new PUT route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function put($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->put($uri, $action);\n }\n\n /**\n * Register a new PATCH route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function patch($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->patch($uri, $action);\n }\n\n /**\n * Register a new DELETE route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function delete($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->delete($uri, $action);\n }\n\n /**\n * Register a new OPTIONS route with the router.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function options($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->options($uri, $action);\n }\n\n /**\n * Register a new route responding to all verbs.\n *\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function any($uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->any($uri, $action);\n }\n\n /**\n * Register a new fallback route with the router.\n *\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function fallback($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->fallback($action);\n }\n\n /**\n * Create a redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @param int $status\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function redirect($uri, $destination, $status = 302)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->redirect($uri, $destination, $status);\n }\n\n /**\n * Create a permanent redirect from one URI to another.\n *\n * @param string $uri\n * @param string $destination\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function permanentRedirect($uri, $destination)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->permanentRedirect($uri, $destination);\n }\n\n /**\n * Register a new route that returns a view.\n *\n * @param string $uri\n * @param string $view\n * @param array $data\n * @param int|array $status\n * @param array $headers\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function view($uri, $view, $data = [], $status = 200, $headers = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->view($uri, $view, $data, $status, $headers);\n }\n\n /**\n * Register a new route with the given verbs.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function match($methods, $uri, $action = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->match($methods, $uri, $action);\n }\n\n /**\n * Register an array of resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function resources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resources($resources, $options);\n }\n\n /**\n * Register an array of resource controllers that can be soft deleted.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function softDeletableResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->softDeletableResources($resources, $options);\n }\n\n /**\n * Route a resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function resource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resource($name, $controller, $options);\n }\n\n /**\n * Register an array of API resource controllers.\n *\n * @param array $resources\n * @param array $options\n * @return void\n * @static\n */\n public static function apiResources($resources, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiResources($resources, $options);\n }\n\n /**\n * Route an API resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingResourceRegistration\n * @static\n */\n public static function apiResource($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiResource($name, $controller, $options);\n }\n\n /**\n * Register an array of singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function singletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singletons($singletons, $options);\n }\n\n /**\n * Route a singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function singleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->singleton($name, $controller, $options);\n }\n\n /**\n * Register an array of API singleton resource controllers.\n *\n * @param array $singletons\n * @param array $options\n * @return void\n * @static\n */\n public static function apiSingletons($singletons, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->apiSingletons($singletons, $options);\n }\n\n /**\n * Route an API singleton resource to a controller.\n *\n * @param string $name\n * @param string $controller\n * @param array $options\n * @return \\Illuminate\\Routing\\PendingSingletonResourceRegistration\n * @static\n */\n public static function apiSingleton($name, $controller, $options = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->apiSingleton($name, $controller, $options);\n }\n\n /**\n * Create a route group with shared attributes.\n *\n * @param array $attributes\n * @param \\Closure|array|string $routes\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function group($attributes, $routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->group($attributes, $routes);\n }\n\n /**\n * Merge the given array with the last group stack.\n *\n * @param array $new\n * @param bool $prependExistingPrefix\n * @return array\n * @static\n */\n public static function mergeWithLastGroup($new, $prependExistingPrefix = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->mergeWithLastGroup($new, $prependExistingPrefix);\n }\n\n /**\n * Get the prefix from the last group on the stack.\n *\n * @return string\n * @static\n */\n public static function getLastGroupPrefix()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getLastGroupPrefix();\n }\n\n /**\n * Add a route to the underlying route collection.\n *\n * @param array|string $methods\n * @param string $uri\n * @param array|string|callable|null $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function addRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->addRoute($methods, $uri, $action);\n }\n\n /**\n * Create a new Route object.\n *\n * @param array|string $methods\n * @param string $uri\n * @param mixed $action\n * @return \\Illuminate\\Routing\\Route\n * @static\n */\n public static function newRoute($methods, $uri, $action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->newRoute($methods, $uri, $action);\n }\n\n /**\n * Return the response returned by the given route.\n *\n * @param string $name\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function respondWithRoute($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->respondWithRoute($name);\n }\n\n /**\n * Dispatch the request to the application.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatch($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatch($request);\n }\n\n /**\n * Dispatch the request to a route and return the response.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function dispatchToRoute($request)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->dispatchToRoute($request);\n }\n\n /**\n * Gather the middleware for the given route with resolved class names.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return array\n * @static\n */\n public static function gatherRouteMiddleware($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->gatherRouteMiddleware($route);\n }\n\n /**\n * Resolve a flat array of middleware classes from the provided array.\n *\n * @param array $middleware\n * @param array $excluded\n * @return array\n * @static\n */\n public static function resolveMiddleware($middleware, $excluded = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resolveMiddleware($middleware, $excluded);\n }\n\n /**\n * Create a response instance from the given value.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function prepareResponse($request, $response)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prepareResponse($request, $response);\n }\n\n /**\n * Static version of prepareResponse.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param mixed $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function toResponse($request, $response)\n {\n return \\Illuminate\\Routing\\Router::toResponse($request, $response);\n }\n\n /**\n * Substitute the route bindings onto the route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return \\Illuminate\\Routing\\Route\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteBindings($route);\n }\n\n /**\n * Substitute the implicit route bindings for the given route.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @return void\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<\\Illuminate\\Database\\Eloquent\\Model>\n * @throws \\Illuminate\\Routing\\Exceptions\\BackedEnumCaseNotFoundException\n * @static\n */\n public static function substituteImplicitBindings($route)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->substituteImplicitBindings($route);\n }\n\n /**\n * Register a callback to run after implicit bindings are substituted.\n *\n * @param callable $callback\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function substituteImplicitBindingsUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->substituteImplicitBindingsUsing($callback);\n }\n\n /**\n * Register a route matched event listener.\n *\n * @param string|callable $callback\n * @return void\n * @static\n */\n public static function matched($callback)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->matched($callback);\n }\n\n /**\n * Get all of the defined middleware short-hand names.\n *\n * @return array\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * Register a short-hand name for a middleware.\n *\n * @param string $name\n * @param string $class\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function aliasMiddleware($name, $class)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->aliasMiddleware($name, $class);\n }\n\n /**\n * Check if a middlewareGroup with the given name exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMiddlewareGroup($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasMiddlewareGroup($name);\n }\n\n /**\n * Get all of the defined middleware groups.\n *\n * @return array\n * @static\n */\n public static function getMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getMiddlewareGroups();\n }\n\n /**\n * Register a group of middleware.\n *\n * @param string $name\n * @param array $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function middlewareGroup($name, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->middlewareGroup($name, $middleware);\n }\n\n /**\n * Add a middleware to the beginning of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function prependMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->prependMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Add a middleware to the end of a middleware group.\n * \n * If the middleware is already in the group, it will not be added again.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function pushMiddlewareToGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->pushMiddlewareToGroup($group, $middleware);\n }\n\n /**\n * Remove the given middleware from the specified group.\n *\n * @param string $group\n * @param string $middleware\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function removeMiddlewareFromGroup($group, $middleware)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->removeMiddlewareFromGroup($group, $middleware);\n }\n\n /**\n * Flush the router's middleware groups.\n *\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function flushMiddlewareGroups()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->flushMiddlewareGroups();\n }\n\n /**\n * Add a new route parameter binder.\n *\n * @param string $key\n * @param string|callable $binder\n * @return void\n * @static\n */\n public static function bind($key, $binder)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->bind($key, $binder);\n }\n\n /**\n * Register a model binder for a wildcard.\n *\n * @param string $key\n * @param string $class\n * @param \\Closure|null $callback\n * @return void\n * @static\n */\n public static function model($key, $class, $callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->model($key, $class, $callback);\n }\n\n /**\n * Get the binding callback for a given binding.\n *\n * @param string $key\n * @return \\Closure|null\n * @static\n */\n public static function getBindingCallback($key)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getBindingCallback($key);\n }\n\n /**\n * Get the global \"where\" patterns.\n *\n * @return array\n * @static\n */\n public static function getPatterns()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getPatterns();\n }\n\n /**\n * Set a global where pattern on all routes.\n *\n * @param string $key\n * @param string $pattern\n * @return void\n * @static\n */\n public static function pattern($key, $pattern)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->pattern($key, $pattern);\n }\n\n /**\n * Set a group of global where patterns on all routes.\n *\n * @param array $patterns\n * @return void\n * @static\n */\n public static function patterns($patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->patterns($patterns);\n }\n\n /**\n * Determine if the router currently has a group stack.\n *\n * @return bool\n * @static\n */\n public static function hasGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->hasGroupStack();\n }\n\n /**\n * Get the current group stack for the router.\n *\n * @return array\n * @static\n */\n public static function getGroupStack()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getGroupStack();\n }\n\n /**\n * Get a route parameter for the current route.\n *\n * @param string $key\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function input($key, $default = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->input($key, $default);\n }\n\n /**\n * Get the request currently being dispatched.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getCurrentRequest()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRequest();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function getCurrentRoute()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getCurrentRoute();\n }\n\n /**\n * Get the currently dispatched route instance.\n *\n * @return \\Illuminate\\Routing\\Route|null\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->current();\n }\n\n /**\n * Check if a route with the given name exists.\n *\n * @param string|array $name\n * @return bool\n * @static\n */\n public static function has($name)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->has($name);\n }\n\n /**\n * Get the current route name.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteName()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteName();\n }\n\n /**\n * Alias for the \"currentRouteNamed\" method.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function is(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->is(...$patterns);\n }\n\n /**\n * Determine if the current route matches a pattern.\n *\n * @param mixed $patterns\n * @return bool\n * @static\n */\n public static function currentRouteNamed(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteNamed(...$patterns);\n }\n\n /**\n * Get the current route action.\n *\n * @return string|null\n * @static\n */\n public static function currentRouteAction()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteAction();\n }\n\n /**\n * Alias for the \"currentRouteUses\" method.\n *\n * @param array|string $patterns\n * @return bool\n * @static\n */\n public static function uses(...$patterns)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->uses(...$patterns);\n }\n\n /**\n * Determine if the current route action matches a given action.\n *\n * @param string $action\n * @return bool\n * @static\n */\n public static function currentRouteUses($action)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->currentRouteUses($action);\n }\n\n /**\n * Set the unmapped global resource parameters to singular.\n *\n * @param bool $singular\n * @return void\n * @static\n */\n public static function singularResourceParameters($singular = true)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->singularResourceParameters($singular);\n }\n\n /**\n * Set the global resource parameter mapping.\n *\n * @param array $parameters\n * @return void\n * @static\n */\n public static function resourceParameters($parameters = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->resourceParameters($parameters);\n }\n\n /**\n * Get or set the verbs used in the resource URIs.\n *\n * @param array $verbs\n * @return array|null\n * @static\n */\n public static function resourceVerbs($verbs = [])\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->resourceVerbs($verbs);\n }\n\n /**\n * Get the underlying route collection.\n *\n * @return \\Illuminate\\Routing\\RouteCollectionInterface\n * @static\n */\n public static function getRoutes()\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->getRoutes();\n }\n\n /**\n * Set the route collection instance.\n *\n * @param \\Illuminate\\Routing\\RouteCollection $routes\n * @return void\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setRoutes($routes);\n }\n\n /**\n * Set the compiled route collection instance.\n *\n * @param array $routes\n * @return void\n * @static\n */\n public static function setCompiledRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n $instance->setCompiledRoutes($routes);\n }\n\n /**\n * Remove any duplicate middleware from the given array.\n *\n * @param array $middleware\n * @return array\n * @static\n */\n public static function uniqueMiddleware($middleware)\n {\n return \\Illuminate\\Routing\\Router::uniqueMiddleware($middleware);\n }\n\n /**\n * Set the container instance used by the router.\n *\n * @param \\Illuminate\\Container\\Container $container\n * @return \\Illuminate\\Routing\\Router\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\Router::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\Router::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\Router::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\Router::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n /**\n * Call the given Closure with this instance then return the instance.\n *\n * @param (callable($this): mixed)|null $callback\n * @return ($callback is null ? \\Illuminate\\Support\\HigherOrderTapProxy : $this)\n * @static\n */\n public static function tap($callback = null)\n {\n /** @var \\Illuminate\\Routing\\Router $instance */\n return $instance->tap($callback);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes withoutOverlapping(int $expiresAt = 1440)\n * @method static void mergeAttributes(\\Illuminate\\Console\\Scheduling\\Event $event)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes user(string $user)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes environments(mixed $environments)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes evenInMaintenanceMode()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes onOneServer()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes runInBackground()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes when(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes skip(\\Closure|bool $callback)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes name(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes description(string $description)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes cron(string $expression)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes between(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes unlessBetween(string $startTime, string $endTime)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySecond()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenSeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwentySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtySeconds()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyMinute()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFiveMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFifteenMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThirtyMinutes()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes hourlyAt(array|string|int|int[] $offset)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyOddHour(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyTwoHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyThreeHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everyFourHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes everySixHours(array|string|int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes daily()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes at(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes dailyAt(string $time)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDaily(int $first = 1, int $second = 13)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceDailyAt(int $first = 1, int $second = 13, int $offset = 0)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekends()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes mondays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes tuesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes wednesdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes thursdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes fridays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes saturdays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes sundays()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weekly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes weeklyOn(mixed $dayOfWeek, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes monthlyOn(int $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes twiceMonthly(int $first = 1, int $second = 16, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes lastDayOfMonth(string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes quarterlyOn(int $dayOfQuarter = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearly()\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes yearlyOn(int $month = 1, int|string $dayOfMonth = 1, string $time = '0:0')\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes days(mixed $days)\n * @method static \\Illuminate\\Console\\Scheduling\\PendingEventAttributes timezone(\\UnitEnum|\\DateTimeZone|string $timezone)\n * @see \\Illuminate\\Console\\Scheduling\\Schedule\n */\n class Schedule {\n /**\n * Add a new callback event to the schedule.\n *\n * @param string|callable $callback\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function call($callback, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->call($callback, $parameters);\n }\n\n /**\n * Add a new Artisan command event to the schedule.\n *\n * @param \\Symfony\\Component\\Console\\Command\\Command|string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function command($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->command($command, $parameters);\n }\n\n /**\n * Add a new job callback event to the schedule.\n *\n * @param object|string $job\n * @param \\UnitEnum|string|null $queue\n * @param \\UnitEnum|string|null $connection\n * @return \\Illuminate\\Console\\Scheduling\\CallbackEvent\n * @static\n */\n public static function job($job, $queue = null, $connection = null)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->job($job, $queue, $connection);\n }\n\n /**\n * Add a new command event to the schedule.\n *\n * @param string $command\n * @param array $parameters\n * @return \\Illuminate\\Console\\Scheduling\\Event\n * @static\n */\n public static function exec($command, $parameters = [])\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->exec($command, $parameters);\n }\n\n /**\n * Create new schedule group.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @return void\n * @throws \\RuntimeException\n * @static\n */\n public static function group($events)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n $instance->group($events);\n }\n\n /**\n * Compile array input for a command.\n *\n * @param string|int $key\n * @param array $value\n * @return string\n * @static\n */\n public static function compileArrayInput($key, $value)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->compileArrayInput($key, $value);\n }\n\n /**\n * Determine if the server is allowed to run this event.\n *\n * @param \\Illuminate\\Console\\Scheduling\\Event $event\n * @param \\DateTimeInterface $time\n * @return bool\n * @static\n */\n public static function serverShouldRun($event, $time)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->serverShouldRun($event, $time);\n }\n\n /**\n * Get all of the events on the schedule that are due.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function dueEvents($app)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->dueEvents($app);\n }\n\n /**\n * Get all of the events on the schedule.\n *\n * @return \\Illuminate\\Console\\Scheduling\\Event[]\n * @static\n */\n public static function events()\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->events();\n }\n\n /**\n * Specify the cache store that should be used to store mutexes.\n *\n * @param string $store\n * @return \\Illuminate\\Console\\Scheduling\\Schedule\n * @static\n */\n public static function useCache($store)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->useCache($store);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Console\\Scheduling\\Schedule::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Console\\Scheduling\\Schedule::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Console\\Scheduling\\Schedule $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Database\\Schema\\Builder\n */\n class Schema {\n /**\n * Drop all tables from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllTables()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTables();\n }\n\n /**\n * Drop all views from the database.\n *\n * @return void\n * @static\n */\n public static function dropAllViews()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllViews();\n }\n\n /**\n * Get the names of current schemas for the connection.\n *\n * @return string[]|null\n * @static\n */\n public static function getCurrentSchemaListing()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\MySqlBuilder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaListing();\n }\n\n /**\n * Set the default string length for migrations.\n *\n * @param int $length\n * @return void\n * @static\n */\n public static function defaultStringLength($length)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultStringLength($length);\n }\n\n /**\n * Set the default time precision for migrations.\n *\n * @static\n */\n public static function defaultTimePrecision($precision)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultTimePrecision($precision);\n }\n\n /**\n * Set the default morph key type for migrations.\n *\n * @param string $type\n * @return void\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function defaultMorphKeyType($type)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::defaultMorphKeyType($type);\n }\n\n /**\n * Set the default morph key type for migrations to UUIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUuids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUuids();\n }\n\n /**\n * Set the default morph key type for migrations to ULIDs.\n *\n * @return void\n * @static\n */\n public static function morphUsingUlids()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::morphUsingUlids();\n }\n\n /**\n * Create a database in the schema.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function createDatabase($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->createDatabase($name);\n }\n\n /**\n * Drop a database from the schema if the database exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function dropDatabaseIfExists($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->dropDatabaseIfExists($name);\n }\n\n /**\n * Get the schemas that belong to the connection.\n *\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, path: string|null, default: bool}>\n * @static\n */\n public static function getSchemas()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getSchemas();\n }\n\n /**\n * Determine if the given table exists.\n *\n * @param string $table\n * @return bool\n * @static\n */\n public static function hasTable($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasTable($table);\n }\n\n /**\n * Determine if the given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function hasView($view)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasView($view);\n }\n\n /**\n * Get the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, size: int|null, comment: string|null, collation: string|null, engine: string|null}>\n * @static\n */\n public static function getTables($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTables($schema);\n }\n\n /**\n * Get the names of the tables that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @param bool $schemaQualified\n * @return list<string>\n * @static\n */\n public static function getTableListing($schema = null, $schemaQualified = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTableListing($schema, $schemaQualified);\n }\n\n /**\n * Get the views that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string|null, schema_qualified_name: string, definition: string}>\n * @static\n */\n public static function getViews($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getViews($schema);\n }\n\n /**\n * Get the user-defined types that belong to the connection.\n *\n * @param string|string[]|null $schema\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, schema: string, type: string, type: string, category: string, implicit: bool}>\n * @static\n */\n public static function getTypes($schema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getTypes($schema);\n }\n\n /**\n * Determine if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @return bool\n * @static\n */\n public static function hasColumn($table, $column)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumn($table, $column);\n }\n\n /**\n * Determine if the given table has given columns.\n *\n * @param string $table\n * @param array<string> $columns\n * @return bool\n * @static\n */\n public static function hasColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasColumns($table, $columns);\n }\n\n /**\n * Execute a table builder callback if the given table has a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableHasColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableHasColumn($table, $column, $callback);\n }\n\n /**\n * Execute a table builder callback if the given table doesn't have a given column.\n *\n * @param string $table\n * @param string $column\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function whenTableDoesntHaveColumn($table, $column, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->whenTableDoesntHaveColumn($table, $column, $callback);\n }\n\n /**\n * Get the data type for the given column name.\n *\n * @param string $table\n * @param string $column\n * @param bool $fullDefinition\n * @return string\n * @static\n */\n public static function getColumnType($table, $column, $fullDefinition = false)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnType($table, $column, $fullDefinition);\n }\n\n /**\n * Get the column listing for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getColumnListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumnListing($table);\n }\n\n /**\n * Get the columns for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, type: string, type_name: string, nullable: bool, default: mixed, auto_increment: bool, comment: string|null, generation: array{type: string, expression: string|null}|null}>\n * @static\n */\n public static function getColumns($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getColumns($table);\n }\n\n /**\n * Get the indexes for a given table.\n *\n * @param string $table\n * @return \\Illuminate\\Database\\Schema\\list<array{name: string, columns: list<string>, type: string, unique: bool, primary: bool}>\n * @static\n */\n public static function getIndexes($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexes($table);\n }\n\n /**\n * Get the names of the indexes for a given table.\n *\n * @param string $table\n * @return list<string>\n * @static\n */\n public static function getIndexListing($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getIndexListing($table);\n }\n\n /**\n * Determine if the given table has a given index.\n *\n * @param string $table\n * @param string|array $index\n * @param string|null $type\n * @return bool\n * @static\n */\n public static function hasIndex($table, $index, $type = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->hasIndex($table, $index, $type);\n }\n\n /**\n * Get the foreign keys for a given table.\n *\n * @param string $table\n * @return array\n * @static\n */\n public static function getForeignKeys($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getForeignKeys($table);\n }\n\n /**\n * Modify a table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function table($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->table($table, $callback);\n }\n\n /**\n * Create a new table on the schema.\n *\n * @param string $table\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function create($table, $callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->create($table, $callback);\n }\n\n /**\n * Drop a table from the schema.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function drop($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->drop($table);\n }\n\n /**\n * Drop a table from the schema if it exists.\n *\n * @param string $table\n * @return void\n * @static\n */\n public static function dropIfExists($table)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropIfExists($table);\n }\n\n /**\n * Drop columns from a table schema.\n *\n * @param string $table\n * @param string|array<string> $columns\n * @return void\n * @static\n */\n public static function dropColumns($table, $columns)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropColumns($table, $columns);\n }\n\n /**\n * Drop all types from the database.\n *\n * @return void\n * @throws \\LogicException\n * @static\n */\n public static function dropAllTypes()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->dropAllTypes();\n }\n\n /**\n * Rename a table on the schema.\n *\n * @param string $from\n * @param string $to\n * @return void\n * @static\n */\n public static function rename($from, $to)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->rename($from, $to);\n }\n\n /**\n * Enable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function enableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->enableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints.\n *\n * @return bool\n * @static\n */\n public static function disableForeignKeyConstraints()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->disableForeignKeyConstraints();\n }\n\n /**\n * Disable foreign key constraints during the execution of a callback.\n *\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function withoutForeignKeyConstraints($callback)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->withoutForeignKeyConstraints($callback);\n }\n\n /**\n * Get the default schema name for the connection.\n *\n * @return string|null\n * @static\n */\n public static function getCurrentSchemaName()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getCurrentSchemaName();\n }\n\n /**\n * Parse the given database object reference and extract the schema and table.\n *\n * @param string $reference\n * @param string|bool|null $withDefaultSchema\n * @return array\n * @static\n */\n public static function parseSchemaAndTable($reference, $withDefaultSchema = null)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->parseSchemaAndTable($reference, $withDefaultSchema);\n }\n\n /**\n * Get the database connection instance.\n *\n * @return \\Illuminate\\Database\\Connection\n * @static\n */\n public static function getConnection()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n return $instance->getConnection();\n }\n\n /**\n * Set the Schema Blueprint resolver callback.\n *\n * @param \\Closure(\\Illuminate\\Database\\Connection, string, \\Closure|null): \\Illuminate\\Database\\Schema\\Blueprint $resolver\n * @return void\n * @static\n */\n public static function blueprintResolver($resolver)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n /** @var \\Illuminate\\Database\\Schema\\MariaDbBuilder $instance */\n $instance->blueprintResolver($resolver);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n return \\Illuminate\\Database\\Schema\\MariaDbBuilder::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Database\\Schema\\Builder \n \\Illuminate\\Database\\Schema\\MariaDbBuilder::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Session\\SessionManager\n */\n class Session {\n /**\n * Determine if requests for the same session should wait for each to finish before executing.\n *\n * @return bool\n * @static\n */\n public static function shouldBlock()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->shouldBlock();\n }\n\n /**\n * Get the name of the cache store / driver that should be used to acquire session locks.\n *\n * @return string|null\n * @static\n */\n public static function blockDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->blockDriver();\n }\n\n /**\n * Get the maximum number of seconds the session lock should be held for.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockLockSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockLockSeconds();\n }\n\n /**\n * Get the maximum number of seconds to wait while attempting to acquire a route block session lock.\n *\n * @return int\n * @static\n */\n public static function defaultRouteBlockWaitSeconds()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->defaultRouteBlockWaitSeconds();\n }\n\n /**\n * Get the session configuration.\n *\n * @return array\n * @static\n */\n public static function getSessionConfig()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getSessionConfig();\n }\n\n /**\n * Get the default session driver name.\n *\n * @return string|null\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Set the default session driver name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultDriver($name)\n {\n /** @var \\Illuminate\\Session\\SessionManager $instance */\n $instance->setDefaultDriver($name);\n }\n\n /**\n * Get a driver instance.\n *\n * @param string|null $driver\n * @return mixed\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function driver($driver = null)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->driver($driver);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Get all of the created \"drivers\".\n *\n * @return array\n * @static\n */\n public static function getDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getDrivers();\n }\n\n /**\n * Get the container instance used by the manager.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function setContainer($container)\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * Forget all of the resolved driver instances.\n *\n * @return \\Illuminate\\Session\\SessionManager\n * @static\n */\n public static function forgetDrivers()\n {\n //Method inherited from \\Illuminate\\Support\\Manager \n /** @var \\Illuminate\\Session\\SessionManager $instance */\n return $instance->forgetDrivers();\n }\n\n /**\n * Start the session, reading the data from a handler.\n *\n * @return bool\n * @static\n */\n public static function start()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->start();\n }\n\n /**\n * Save the session data to storage.\n *\n * @return void\n * @static\n */\n public static function save()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->save();\n }\n\n /**\n * Age the flash data for the session.\n *\n * @return void\n * @static\n */\n public static function ageFlashData()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->ageFlashData();\n }\n\n /**\n * Get all of the session data.\n *\n * @return array\n * @static\n */\n public static function all()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->all();\n }\n\n /**\n * Get a subset of the session data.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function only($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->only($keys);\n }\n\n /**\n * Get all the session data except for a specified array of items.\n *\n * @param array $keys\n * @return array\n * @static\n */\n public static function except($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->except($keys);\n }\n\n /**\n * Checks if a key exists.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function exists($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->exists($key);\n }\n\n /**\n * Determine if the given key is missing from the session data.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function missing($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->missing($key);\n }\n\n /**\n * Determine if a key is present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function has($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->has($key);\n }\n\n /**\n * Determine if any of the given keys are present and not null.\n *\n * @param string|array $key\n * @return bool\n * @static\n */\n public static function hasAny($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasAny($key);\n }\n\n /**\n * Get an item from the session.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function get($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->get($key, $default);\n }\n\n /**\n * Get the value of a given key and then forget it.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function pull($key, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->pull($key, $default);\n }\n\n /**\n * Determine if the session contains old input.\n *\n * @param string|null $key\n * @return bool\n * @static\n */\n public static function hasOldInput($key = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasOldInput($key);\n }\n\n /**\n * Get the requested item from the flashed input array.\n *\n * @param string|null $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getOldInput($key = null, $default = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getOldInput($key, $default);\n }\n\n /**\n * Replace the given session attributes entirely.\n *\n * @param array $attributes\n * @return void\n * @static\n */\n public static function replace($attributes)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->replace($attributes);\n }\n\n /**\n * Put a key / value pair or array of key / value pairs in the session.\n *\n * @param string|array $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function put($key, $value = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->put($key, $value);\n }\n\n /**\n * Get an item from the session, or store the default value.\n *\n * @param string $key\n * @param \\Closure $callback\n * @return mixed\n * @static\n */\n public static function remember($key, $callback)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remember($key, $callback);\n }\n\n /**\n * Push a value onto a session array.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function push($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->push($key, $value);\n }\n\n /**\n * Increment the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return mixed\n * @static\n */\n public static function increment($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->increment($key, $amount);\n }\n\n /**\n * Decrement the value of an item in the session.\n *\n * @param string $key\n * @param int $amount\n * @return int\n * @static\n */\n public static function decrement($key, $amount = 1)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->decrement($key, $amount);\n }\n\n /**\n * Flash a key / value pair to the session.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function flash($key, $value = true)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flash($key, $value);\n }\n\n /**\n * Flash a key / value pair to the session for immediate use.\n *\n * @param string $key\n * @param mixed $value\n * @return void\n * @static\n */\n public static function now($key, $value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->now($key, $value);\n }\n\n /**\n * Reflash all of the session flash data.\n *\n * @return void\n * @static\n */\n public static function reflash()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->reflash();\n }\n\n /**\n * Reflash a subset of the current flash data.\n *\n * @param mixed $keys\n * @return void\n * @static\n */\n public static function keep($keys = null)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->keep($keys);\n }\n\n /**\n * Flash an input array to the session.\n *\n * @param array $value\n * @return void\n * @static\n */\n public static function flashInput($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flashInput($value);\n }\n\n /**\n * Get the session cache instance.\n *\n * @return \\Illuminate\\Contracts\\Cache\\Repository\n * @static\n */\n public static function cache()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->cache();\n }\n\n /**\n * Remove an item from the session, returning its value.\n *\n * @param string $key\n * @return mixed\n * @static\n */\n public static function remove($key)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->remove($key);\n }\n\n /**\n * Remove one or many items from the session.\n *\n * @param string|array $keys\n * @return void\n * @static\n */\n public static function forget($keys)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->forget($keys);\n }\n\n /**\n * Remove all of the items from the session.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->flush();\n }\n\n /**\n * Flush the session data and regenerate the ID.\n *\n * @return bool\n * @static\n */\n public static function invalidate()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->invalidate();\n }\n\n /**\n * Generate a new session identifier.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function regenerate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->regenerate($destroy);\n }\n\n /**\n * Generate a new session ID for the session.\n *\n * @param bool $destroy\n * @return bool\n * @static\n */\n public static function migrate($destroy = false)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->migrate($destroy);\n }\n\n /**\n * Determine if the session has been started.\n *\n * @return bool\n * @static\n */\n public static function isStarted()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isStarted();\n }\n\n /**\n * Get the name of the session.\n *\n * @return string\n * @static\n */\n public static function getName()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getName();\n }\n\n /**\n * Set the name of the session.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setName($name)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setName($name);\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function id()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->id();\n }\n\n /**\n * Get the current session ID.\n *\n * @return string\n * @static\n */\n public static function getId()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getId();\n }\n\n /**\n * Set the session ID.\n *\n * @param string|null $id\n * @return void\n * @static\n */\n public static function setId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setId($id);\n }\n\n /**\n * Determine if this is a valid session ID.\n *\n * @param string|null $id\n * @return bool\n * @static\n */\n public static function isValidId($id)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->isValidId($id);\n }\n\n /**\n * Set the existence of the session on the handler if applicable.\n *\n * @param bool $value\n * @return void\n * @static\n */\n public static function setExists($value)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setExists($value);\n }\n\n /**\n * Get the CSRF token value.\n *\n * @return string\n * @static\n */\n public static function token()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->token();\n }\n\n /**\n * Regenerate the CSRF token value.\n *\n * @return void\n * @static\n */\n public static function regenerateToken()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->regenerateToken();\n }\n\n /**\n * Determine if the previous URI is available.\n *\n * @return bool\n * @static\n */\n public static function hasPreviousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->hasPreviousUri();\n }\n\n /**\n * Get the previous URL from the session as a URI instance.\n *\n * @return \\Illuminate\\Support\\Uri\n * @throws \\RuntimeException\n * @static\n */\n public static function previousUri()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUri();\n }\n\n /**\n * Get the previous URL from the session.\n *\n * @return string|null\n * @static\n */\n public static function previousUrl()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->previousUrl();\n }\n\n /**\n * Set the \"previous\" URL in the session.\n *\n * @param string $url\n * @return void\n * @static\n */\n public static function setPreviousUrl($url)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setPreviousUrl($url);\n }\n\n /**\n * Specify that the user has confirmed their password.\n *\n * @return void\n * @static\n */\n public static function passwordConfirmed()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->passwordConfirmed();\n }\n\n /**\n * Get the underlying session handler implementation.\n *\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function getHandler()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->getHandler();\n }\n\n /**\n * Set the underlying session handler implementation.\n *\n * @param \\SessionHandlerInterface $handler\n * @return \\SessionHandlerInterface\n * @static\n */\n public static function setHandler($handler)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->setHandler($handler);\n }\n\n /**\n * Determine if the session handler needs a request.\n *\n * @return bool\n * @static\n */\n public static function handlerNeedsRequest()\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n return $instance->handlerNeedsRequest();\n }\n\n /**\n * Set the request on the handler instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequestOnHandler($request)\n {\n /** @var \\Illuminate\\Session\\Store $instance */\n $instance->setRequestOnHandler($request);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Session\\Store::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Session\\Store::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Session\\Store::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Session\\Store::flushMacros();\n }\n\n }\n /**\n * @method static bool has(string $location)\n * @method static string read(string $location)\n * @method static \\League\\Flysystem\\DirectoryListing listContents(string $location, bool $deep = false)\n * @method static int fileSize(string $path)\n * @method static string visibility(string $path)\n * @method static void write(string $location, string $contents, array $config = [])\n * @method static void createDirectory(string $location, array $config = [])\n * @see \\Illuminate\\Filesystem\\FilesystemManager\n */\n class Storage {\n /**\n * Get a filesystem instance.\n *\n * @param string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function drive($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->drive($name);\n }\n\n /**\n * Get a filesystem instance.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function disk($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->disk($name);\n }\n\n /**\n * Get a default cloud filesystem instance.\n *\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function cloud()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->cloud();\n }\n\n /**\n * Build an on-demand disk.\n *\n * @param string|array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function build($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->build($config);\n }\n\n /**\n * Create an instance of the local driver.\n *\n * @param array $config\n * @param string $name\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createLocalDriver($config, $name = 'local')\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createLocalDriver($config, $name);\n }\n\n /**\n * Create an instance of the ftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createFtpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createFtpDriver($config);\n }\n\n /**\n * Create an instance of the sftp driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createSftpDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createSftpDriver($config);\n }\n\n /**\n * Create an instance of the Amazon S3 driver.\n *\n * @param array $config\n * @return \\Illuminate\\Contracts\\Filesystem\\Cloud\n * @static\n */\n public static function createS3Driver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createS3Driver($config);\n }\n\n /**\n * Create a scoped driver.\n *\n * @param array $config\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function createScopedDriver($config)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->createScopedDriver($config);\n }\n\n /**\n * Set the given disk instance.\n *\n * @param string $name\n * @param mixed $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function set($name, $disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->set($name, $disk);\n }\n\n /**\n * Get the default driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultDriver();\n }\n\n /**\n * Get the default cloud driver name.\n *\n * @return string\n * @static\n */\n public static function getDefaultCloudDriver()\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->getDefaultCloudDriver();\n }\n\n /**\n * Unset the given disk instances.\n *\n * @param array|string $disk\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function forgetDisk($disk)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->forgetDisk($disk);\n }\n\n /**\n * Disconnect the given disk and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n /**\n * Set the application instance used by the manager.\n *\n * @param \\Illuminate\\Contracts\\Foundation\\Application $app\n * @return \\Illuminate\\Filesystem\\FilesystemManager\n * @static\n */\n public static function setApplication($app)\n {\n /** @var \\Illuminate\\Filesystem\\FilesystemManager $instance */\n return $instance->setApplication($app);\n }\n\n /**\n * Determine if temporary URLs can be generated.\n *\n * @return bool\n * @static\n */\n public static function providesTemporaryUrls()\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->providesTemporaryUrls();\n }\n\n /**\n * Get a temporary URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return string\n * @static\n */\n public static function temporaryUrl($path, $expiration, $options = [])\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUrl($path, $expiration, $options);\n }\n\n /**\n * Specify the name of the disk the adapter is managing.\n *\n * @param string $disk\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function diskName($disk)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->diskName($disk);\n }\n\n /**\n * Indicate that signed URLs should serve the corresponding files.\n *\n * @param bool $serve\n * @param \\Closure|null $urlGeneratorResolver\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function shouldServeSignedUrls($serve = true, $urlGeneratorResolver = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->shouldServeSignedUrls($serve, $urlGeneratorResolver);\n }\n\n /**\n * Assert that the given file or directory exists.\n *\n * @param string|array $path\n * @param string|null $content\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertExists($path, $content = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertExists($path, $content);\n }\n\n /**\n * Assert that the number of files in path equals the expected count.\n *\n * @param string $path\n * @param int $count\n * @param bool $recursive\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertCount($path, $count, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertCount($path, $count, $recursive);\n }\n\n /**\n * Assert that the given file or directory does not exist.\n *\n * @param string|array $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertMissing($path);\n }\n\n /**\n * Assert that the given directory is empty.\n *\n * @param string $path\n * @return \\Illuminate\\Filesystem\\LocalFilesystemAdapter\n * @static\n */\n public static function assertDirectoryEmpty($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->assertDirectoryEmpty($path);\n }\n\n /**\n * Determine if a file or directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function exists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->exists($path);\n }\n\n /**\n * Determine if a file or directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function missing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->missing($path);\n }\n\n /**\n * Determine if a file exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileExists($path);\n }\n\n /**\n * Determine if a file is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function fileMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->fileMissing($path);\n }\n\n /**\n * Determine if a directory exists.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryExists($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryExists($path);\n }\n\n /**\n * Determine if a directory is missing.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function directoryMissing($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directoryMissing($path);\n }\n\n /**\n * Get the full path to the file that exists at the given relative path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function path($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->path($path);\n }\n\n /**\n * Get the contents of a file.\n *\n * @param string $path\n * @return string|null\n * @static\n */\n public static function get($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->get($path);\n }\n\n /**\n * Get the contents of a file as decoded JSON.\n *\n * @param string $path\n * @param int $flags\n * @return array|null\n * @static\n */\n public static function json($path, $flags = 0)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->json($path, $flags);\n }\n\n /**\n * Create a streamed response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @param string|null $disposition\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function response($path, $name = null, $headers = [], $disposition = 'inline')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->response($path, $name, $headers, $disposition);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function serve($request, $path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->serve($request, $path, $name, $headers);\n }\n\n /**\n * Create a streamed download response for a given file.\n *\n * @param string $path\n * @param string|null $name\n * @param array $headers\n * @return \\Symfony\\Component\\HttpFoundation\\StreamedResponse\n * @static\n */\n public static function download($path, $name = null, $headers = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->download($path, $name, $headers);\n }\n\n /**\n * Write the contents of a file.\n *\n * @param string $path\n * @param \\Psr\\Http\\Message\\StreamInterface|\\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|resource $contents\n * @param mixed $options\n * @return string|bool\n * @static\n */\n public static function put($path, $contents, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->put($path, $contents, $options);\n }\n\n /**\n * Store the uploaded file on the disk.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFile($path, $file = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFile($path, $file, $options);\n }\n\n /**\n * Store the uploaded file on the disk with a given name.\n *\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string $path\n * @param \\Illuminate\\Http\\File|\\Illuminate\\Http\\UploadedFile|string|array|null $file\n * @param string|array|null $name\n * @param mixed $options\n * @return string|false\n * @static\n */\n public static function putFileAs($path, $file, $name = null, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->putFileAs($path, $file, $name, $options);\n }\n\n /**\n * Get the visibility for the given path.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function getVisibility($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getVisibility($path);\n }\n\n /**\n * Set the visibility for the given path.\n *\n * @param string $path\n * @param string $visibility\n * @return bool\n * @static\n */\n public static function setVisibility($path, $visibility)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->setVisibility($path, $visibility);\n }\n\n /**\n * Prepend to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function prepend($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->prepend($path, $data, $separator);\n }\n\n /**\n * Append to a file.\n *\n * @param string $path\n * @param string $data\n * @param string $separator\n * @return bool\n * @static\n */\n public static function append($path, $data, $separator = '\n')\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->append($path, $data, $separator);\n }\n\n /**\n * Delete the file at a given path.\n *\n * @param string|array $paths\n * @return bool\n * @static\n */\n public static function delete($paths)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->delete($paths);\n }\n\n /**\n * Copy a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function copy($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->copy($from, $to);\n }\n\n /**\n * Move a file to a new location.\n *\n * @param string $from\n * @param string $to\n * @return bool\n * @static\n */\n public static function move($from, $to)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->move($from, $to);\n }\n\n /**\n * Get the file size of a given file.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function size($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->size($path);\n }\n\n /**\n * Get the checksum for a file.\n *\n * @return string|false\n * @throws UnableToProvideChecksum\n * @static\n */\n public static function checksum($path, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->checksum($path, $options);\n }\n\n /**\n * Get the mime-type of a given file.\n *\n * @param string $path\n * @return string|false\n * @static\n */\n public static function mimeType($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->mimeType($path);\n }\n\n /**\n * Get the file's last modification time.\n *\n * @param string $path\n * @return int\n * @static\n */\n public static function lastModified($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->lastModified($path);\n }\n\n /**\n * Get a resource to read the file.\n *\n * @param string $path\n * @return resource|null The path resource or null on failure.\n * @static\n */\n public static function readStream($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->readStream($path);\n }\n\n /**\n * Write a new file using a stream.\n *\n * @param string $path\n * @param resource $resource\n * @param array $options\n * @return bool\n * @static\n */\n public static function writeStream($path, $resource, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->writeStream($path, $resource, $options);\n }\n\n /**\n * Get the URL for the file at the given path.\n *\n * @param string $path\n * @return string\n * @throws \\RuntimeException\n * @static\n */\n public static function url($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->url($path);\n }\n\n /**\n * Get a temporary upload URL for the file at the given path.\n *\n * @param string $path\n * @param \\DateTimeInterface $expiration\n * @param array $options\n * @return array\n * @throws \\RuntimeException\n * @static\n */\n public static function temporaryUploadUrl($path, $expiration, $options = [])\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->temporaryUploadUrl($path, $expiration, $options);\n }\n\n /**\n * Get an array of all files in a directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function files($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->files($directory, $recursive);\n }\n\n /**\n * Get all of the files from the given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allFiles($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allFiles($directory);\n }\n\n /**\n * Get all of the directories within a given directory.\n *\n * @param string|null $directory\n * @param bool $recursive\n * @return array\n * @static\n */\n public static function directories($directory = null, $recursive = false)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->directories($directory, $recursive);\n }\n\n /**\n * Get all the directories within a given directory (recursive).\n *\n * @param string|null $directory\n * @return array\n * @static\n */\n public static function allDirectories($directory = null)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->allDirectories($directory);\n }\n\n /**\n * Create a directory.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function makeDirectory($path)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->makeDirectory($path);\n }\n\n /**\n * Recursively delete a directory.\n *\n * @param string $directory\n * @return bool\n * @static\n */\n public static function deleteDirectory($directory)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->deleteDirectory($directory);\n }\n\n /**\n * Get the Flysystem driver.\n *\n * @return \\League\\Flysystem\\FilesystemOperator\n * @static\n */\n public static function getDriver()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getDriver();\n }\n\n /**\n * Get the Flysystem adapter.\n *\n * @return \\League\\Flysystem\\FilesystemAdapter\n * @static\n */\n public static function getAdapter()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getAdapter();\n }\n\n /**\n * Get the configuration values.\n *\n * @return array\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->getConfig();\n }\n\n /**\n * Define a custom callback that generates file download responses.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function serveUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->serveUsing($callback);\n }\n\n /**\n * Define a custom temporary URL builder callback.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function buildTemporaryUrlsUsing($callback)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n $instance->buildTemporaryUrlsUsing($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n return \\Illuminate\\Filesystem\\LocalFilesystemAdapter::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n \\Illuminate\\Filesystem\\LocalFilesystemAdapter::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n //Method inherited from \\Illuminate\\Filesystem\\FilesystemAdapter \n /** @var \\Illuminate\\Filesystem\\LocalFilesystemAdapter $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n /**\n * @see \\Illuminate\\Routing\\UrlGenerator\n */\n class URL {\n /**\n * Get the full URL for the current request.\n *\n * @return string\n * @static\n */\n public static function full()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->full();\n }\n\n /**\n * Get the current URL for the request.\n *\n * @return string\n * @static\n */\n public static function current()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->current();\n }\n\n /**\n * Get the URL for the previous request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previous($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previous($fallback);\n }\n\n /**\n * Get the previous path info for the request.\n *\n * @param mixed $fallback\n * @return string\n * @static\n */\n public static function previousPath($fallback = false)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->previousPath($fallback);\n }\n\n /**\n * Generate an absolute URL to the given path.\n *\n * @param string $path\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function to($path, $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->to($path, $extra, $secure);\n }\n\n /**\n * Generate an absolute URL with the given query parameters.\n *\n * @param string $path\n * @param array $query\n * @param mixed $extra\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function query($path, $query = [], $extra = [], $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->query($path, $query, $extra, $secure);\n }\n\n /**\n * Generate a secure, absolute URL to the given path.\n *\n * @param string $path\n * @param array $parameters\n * @return string\n * @static\n */\n public static function secure($path, $parameters = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secure($path, $parameters);\n }\n\n /**\n * Generate the URL to an application asset.\n *\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function asset($path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->asset($path, $secure);\n }\n\n /**\n * Generate the URL to a secure asset.\n *\n * @param string $path\n * @return string\n * @static\n */\n public static function secureAsset($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->secureAsset($path);\n }\n\n /**\n * Generate the URL to an asset from a custom root domain such as CDN, etc.\n *\n * @param string $root\n * @param string $path\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function assetFrom($root, $path, $secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->assetFrom($root, $path, $secure);\n }\n\n /**\n * Get the default scheme for a raw URL.\n *\n * @param bool|null $secure\n * @return string\n * @static\n */\n public static function formatScheme($secure = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatScheme($secure);\n }\n\n /**\n * Create a signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param \\DateTimeInterface|\\DateInterval|int|null $expiration\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function signedRoute($name, $parameters = [], $expiration = null, $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signedRoute($name, $parameters, $expiration, $absolute);\n }\n\n /**\n * Create a temporary signed route URL for a named route.\n *\n * @param \\BackedEnum|string $name\n * @param \\DateTimeInterface|\\DateInterval|int $expiration\n * @param array $parameters\n * @param bool $absolute\n * @return string\n * @static\n */\n public static function temporarySignedRoute($name, $expiration, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->temporarySignedRoute($name, $expiration, $parameters, $absolute);\n }\n\n /**\n * Determine if the given request has a valid signature.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the given request has a valid signature for a relative URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasValidRelativeSignature($request, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasValidRelativeSignature($request, $ignoreQuery);\n }\n\n /**\n * Determine if the signature from the given request matches the URL.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @param bool $absolute\n * @param \\Closure|array $ignoreQuery\n * @return bool\n * @static\n */\n public static function hasCorrectSignature($request, $absolute = true, $ignoreQuery = [])\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->hasCorrectSignature($request, $absolute, $ignoreQuery);\n }\n\n /**\n * Determine if the expires timestamp from the given request is not from the past.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return bool\n * @static\n */\n public static function signatureHasNotExpired($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->signatureHasNotExpired($request);\n }\n\n /**\n * Get the URL to a named route.\n *\n * @param \\BackedEnum|string $name\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Symfony\\Component\\Routing\\Exception\\RouteNotFoundException|\\InvalidArgumentException\n * @static\n */\n public static function route($name, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->route($name, $parameters, $absolute);\n }\n\n /**\n * Get the URL for a given route instance.\n *\n * @param \\Illuminate\\Routing\\Route $route\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\Illuminate\\Routing\\Exceptions\\UrlGenerationException\n * @static\n */\n public static function toRoute($route, $parameters, $absolute)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->toRoute($route, $parameters, $absolute);\n }\n\n /**\n * Get the URL to a controller action.\n *\n * @param string|array $action\n * @param mixed $parameters\n * @param bool $absolute\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function action($action, $parameters = [], $absolute = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->action($action, $parameters, $absolute);\n }\n\n /**\n * Format the array of URL parameters.\n *\n * @param mixed $parameters\n * @return array\n * @static\n */\n public static function formatParameters($parameters)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatParameters($parameters);\n }\n\n /**\n * Get the base URL for the request.\n *\n * @param string $scheme\n * @param string|null $root\n * @return string\n * @static\n */\n public static function formatRoot($scheme, $root = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatRoot($scheme, $root);\n }\n\n /**\n * Format the given URL segments into a single URL.\n *\n * @param string $root\n * @param string $path\n * @param \\Illuminate\\Routing\\Route|null $route\n * @return string\n * @static\n */\n public static function format($root, $path, $route = null)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->format($root, $path, $route);\n }\n\n /**\n * Determine if the given path is a valid URL.\n *\n * @param string $path\n * @return bool\n * @static\n */\n public static function isValidUrl($path)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->isValidUrl($path);\n }\n\n /**\n * Set the default named parameters used by the URL generator.\n *\n * @param array $defaults\n * @return void\n * @static\n */\n public static function defaults($defaults)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->defaults($defaults);\n }\n\n /**\n * Get the default named parameters used by the URL generator.\n *\n * @return array\n * @static\n */\n public static function getDefaultParameters()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getDefaultParameters();\n }\n\n /**\n * Force the scheme for URLs.\n *\n * @param string|null $scheme\n * @return void\n * @static\n */\n public static function forceScheme($scheme)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceScheme($scheme);\n }\n\n /**\n * Force the use of the HTTPS scheme for all generated URLs.\n *\n * @param bool $force\n * @return void\n * @static\n */\n public static function forceHttps($force = true)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceHttps($force);\n }\n\n /**\n * Set the URL origin for all generated URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useOrigin($root);\n }\n\n /**\n * Set the forced root URL.\n *\n * @param string|null $root\n * @return void\n * @deprecated Use useOrigin\n * @static\n */\n public static function forceRootUrl($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->forceRootUrl($root);\n }\n\n /**\n * Set the URL origin for all generated asset URLs.\n *\n * @param string|null $root\n * @return void\n * @static\n */\n public static function useAssetOrigin($root)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->useAssetOrigin($root);\n }\n\n /**\n * Set a callback to be used to format the host of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatHostUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatHostUsing($callback);\n }\n\n /**\n * Set a callback to be used to format the path of generated URLs.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function formatPathUsing($callback)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->formatPathUsing($callback);\n }\n\n /**\n * Get the path formatter being used by the URL generator.\n *\n * @return \\Closure\n * @static\n */\n public static function pathFormatter()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->pathFormatter();\n }\n\n /**\n * Get the request instance.\n *\n * @return \\Illuminate\\Http\\Request\n * @static\n */\n public static function getRequest()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRequest();\n }\n\n /**\n * Set the current request instance.\n *\n * @param \\Illuminate\\Http\\Request $request\n * @return void\n * @static\n */\n public static function setRequest($request)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n $instance->setRequest($request);\n }\n\n /**\n * Set the route collection.\n *\n * @param \\Illuminate\\Routing\\RouteCollectionInterface $routes\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRoutes($routes)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRoutes($routes);\n }\n\n /**\n * Set the session resolver for the generator.\n *\n * @param callable $sessionResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setSessionResolver($sessionResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setSessionResolver($sessionResolver);\n }\n\n /**\n * Set the encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setKeyResolver($keyResolver);\n }\n\n /**\n * Clone a new instance of the URL generator with a different encryption key resolver.\n *\n * @param callable $keyResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function withKeyResolver($keyResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->withKeyResolver($keyResolver);\n }\n\n /**\n * Set the callback that should be used to attempt to resolve missing named routes.\n *\n * @param callable $missingNamedRouteResolver\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function resolveMissingNamedRoutesUsing($missingNamedRouteResolver)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->resolveMissingNamedRoutesUsing($missingNamedRouteResolver);\n }\n\n /**\n * Get the root controller namespace.\n *\n * @return string\n * @static\n */\n public static function getRootControllerNamespace()\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->getRootControllerNamespace();\n }\n\n /**\n * Set the root controller namespace.\n *\n * @param string $rootNamespace\n * @return \\Illuminate\\Routing\\UrlGenerator\n * @static\n */\n public static function setRootControllerNamespace($rootNamespace)\n {\n /** @var \\Illuminate\\Routing\\UrlGenerator $instance */\n return $instance->setRootControllerNamespace($rootNamespace);\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Routing\\UrlGenerator::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Routing\\UrlGenerator::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Routing\\UrlGenerator::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Routing\\UrlGenerator::flushMacros();\n }\n\n }\n /**\n * @see \\Illuminate\\Validation\\Factory\n */\n class Validator {\n /**\n * Create a new Validator instance.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return \\Illuminate\\Validation\\Validator\n * @static\n */\n public static function make($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->make($data, $rules, $messages, $attributes);\n }\n\n /**\n * Validate the given data against the provided rules.\n *\n * @param array $data\n * @param array $rules\n * @param array $messages\n * @param array $attributes\n * @return array\n * @throws \\Illuminate\\Validation\\ValidationException\n * @static\n */\n public static function validate($data, $rules, $messages = [], $attributes = [])\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->validate($data, $rules, $messages, $attributes);\n }\n\n /**\n * Register a custom validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extend($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extend($rule, $extension, $message);\n }\n\n /**\n * Register a custom implicit validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendImplicit($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendImplicit($rule, $extension, $message);\n }\n\n /**\n * Register a custom dependent validator extension.\n *\n * @param string $rule\n * @param \\Closure|string $extension\n * @param string|null $message\n * @return void\n * @static\n */\n public static function extendDependent($rule, $extension, $message = null)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->extendDependent($rule, $extension, $message);\n }\n\n /**\n * Register a custom validator message replacer.\n *\n * @param string $rule\n * @param \\Closure|string $replacer\n * @return void\n * @static\n */\n public static function replacer($rule, $replacer)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->replacer($rule, $replacer);\n }\n\n /**\n * Indicate that unvalidated array keys should be included in validated data when the parent array is validated.\n *\n * @return void\n * @static\n */\n public static function includeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->includeUnvalidatedArrayKeys();\n }\n\n /**\n * Indicate that unvalidated array keys should be excluded from the validated data, even if the parent array was validated.\n *\n * @return void\n * @static\n */\n public static function excludeUnvalidatedArrayKeys()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->excludeUnvalidatedArrayKeys();\n }\n\n /**\n * Set the Validator instance resolver.\n *\n * @param \\Closure $resolver\n * @return void\n * @static\n */\n public static function resolver($resolver)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->resolver($resolver);\n }\n\n /**\n * Get the Translator implementation.\n *\n * @return \\Illuminate\\Contracts\\Translation\\Translator\n * @static\n */\n public static function getTranslator()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getTranslator();\n }\n\n /**\n * Get the Presence Verifier implementation.\n *\n * @return \\Illuminate\\Validation\\PresenceVerifierInterface\n * @static\n */\n public static function getPresenceVerifier()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getPresenceVerifier();\n }\n\n /**\n * Set the Presence Verifier implementation.\n *\n * @param \\Illuminate\\Validation\\PresenceVerifierInterface $presenceVerifier\n * @return void\n * @static\n */\n public static function setPresenceVerifier($presenceVerifier)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n $instance->setPresenceVerifier($presenceVerifier);\n }\n\n /**\n * Get the container instance used by the validation factory.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container|null\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the container instance used by the validation factory.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return \\Illuminate\\Validation\\Factory\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\Validation\\Factory $instance */\n return $instance->setContainer($container);\n }\n\n }\n /**\n * @see \\Illuminate\\View\\Factory\n */\n class View {\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $path\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function file($path, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->file($path, $data, $mergeData);\n }\n\n /**\n * Get the evaluated view contents for the given view.\n *\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @static\n */\n public static function make($view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->make($view, $data, $mergeData);\n }\n\n /**\n * Get the first view that actually exists from the given list.\n *\n * @param array $views\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return \\Illuminate\\Contracts\\View\\View\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function first($views, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->first($views, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderWhen($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderWhen($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered content of the view based on the negation of a given condition.\n *\n * @param bool $condition\n * @param string $view\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $data\n * @param array $mergeData\n * @return string\n * @static\n */\n public static function renderUnless($condition, $view, $data = [], $mergeData = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderUnless($condition, $view, $data, $mergeData);\n }\n\n /**\n * Get the rendered contents of a partial from a loop.\n *\n * @param string $view\n * @param array $data\n * @param string $iterator\n * @param string $empty\n * @return string\n * @static\n */\n public static function renderEach($view, $data, $iterator, $empty = 'raw|')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderEach($view, $data, $iterator, $empty);\n }\n\n /**\n * Determine if a given view exists.\n *\n * @param string $view\n * @return bool\n * @static\n */\n public static function exists($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->exists($view);\n }\n\n /**\n * Get the appropriate view engine for the given path.\n *\n * @param string $path\n * @return \\Illuminate\\Contracts\\View\\Engine\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function getEngineFromPath($path)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineFromPath($path);\n }\n\n /**\n * Add a piece of shared data to the environment.\n *\n * @param array|string $key\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function share($key, $value = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->share($key, $value);\n }\n\n /**\n * Increment the rendering counter.\n *\n * @return void\n * @static\n */\n public static function incrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementRender();\n }\n\n /**\n * Decrement the rendering counter.\n *\n * @return void\n * @static\n */\n public static function decrementRender()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->decrementRender();\n }\n\n /**\n * Check if there are no active render operations.\n *\n * @return bool\n * @static\n */\n public static function doneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->doneRendering();\n }\n\n /**\n * Determine if the given once token has been rendered.\n *\n * @param string $id\n * @return bool\n * @static\n */\n public static function hasRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasRenderedOnce($id);\n }\n\n /**\n * Mark the given once token as having been rendered.\n *\n * @param string $id\n * @return void\n * @static\n */\n public static function markAsRenderedOnce($id)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->markAsRenderedOnce($id);\n }\n\n /**\n * Add a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function addLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLocation($location);\n }\n\n /**\n * Prepend a location to the array of view locations.\n *\n * @param string $location\n * @return void\n * @static\n */\n public static function prependLocation($location)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->prependLocation($location);\n }\n\n /**\n * Add a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function addNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->addNamespace($namespace, $hints);\n }\n\n /**\n * Prepend a new namespace to the loader.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function prependNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->prependNamespace($namespace, $hints);\n }\n\n /**\n * Replace the namespace hints for the given namespace.\n *\n * @param string $namespace\n * @param string|array $hints\n * @return \\Illuminate\\View\\Factory\n * @static\n */\n public static function replaceNamespace($namespace, $hints)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->replaceNamespace($namespace, $hints);\n }\n\n /**\n * Register a valid view extension and its engine.\n *\n * @param string $extension\n * @param string $engine\n * @param \\Closure|null $resolver\n * @return void\n * @static\n */\n public static function addExtension($extension, $engine, $resolver = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addExtension($extension, $engine, $resolver);\n }\n\n /**\n * Flush all of the factory state like sections and stacks.\n *\n * @return void\n * @static\n */\n public static function flushState()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushState();\n }\n\n /**\n * Flush all of the section contents if done rendering.\n *\n * @return void\n * @static\n */\n public static function flushStateIfDoneRendering()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStateIfDoneRendering();\n }\n\n /**\n * Get the extension to engine bindings.\n *\n * @return array\n * @static\n */\n public static function getExtensions()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getExtensions();\n }\n\n /**\n * Get the engine resolver instance.\n *\n * @return \\Illuminate\\View\\Engines\\EngineResolver\n * @static\n */\n public static function getEngineResolver()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getEngineResolver();\n }\n\n /**\n * Get the view finder instance.\n *\n * @return \\Illuminate\\View\\ViewFinderInterface\n * @static\n */\n public static function getFinder()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFinder();\n }\n\n /**\n * Set the view finder instance.\n *\n * @param \\Illuminate\\View\\ViewFinderInterface $finder\n * @return void\n * @static\n */\n public static function setFinder($finder)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setFinder($finder);\n }\n\n /**\n * Flush the cache of views located by the finder.\n *\n * @return void\n * @static\n */\n public static function flushFinderCache()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFinderCache();\n }\n\n /**\n * Get the event dispatcher instance.\n *\n * @return \\Illuminate\\Contracts\\Events\\Dispatcher\n * @static\n */\n public static function getDispatcher()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getDispatcher();\n }\n\n /**\n * Set the event dispatcher instance.\n *\n * @param \\Illuminate\\Contracts\\Events\\Dispatcher $events\n * @return void\n * @static\n */\n public static function setDispatcher($events)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setDispatcher($events);\n }\n\n /**\n * Get the IoC container instance.\n *\n * @return \\Illuminate\\Contracts\\Container\\Container\n * @static\n */\n public static function getContainer()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getContainer();\n }\n\n /**\n * Set the IoC container instance.\n *\n * @param \\Illuminate\\Contracts\\Container\\Container $container\n * @return void\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->setContainer($container);\n }\n\n /**\n * Get an item from the shared data.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function shared($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->shared($key, $default);\n }\n\n /**\n * Get all of the shared data for the environment.\n *\n * @return array\n * @static\n */\n public static function getShared()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getShared();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\View\\Factory::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\View\\Factory::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\View\\Factory::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\View\\Factory::flushMacros();\n }\n\n /**\n * Start a component rendering process.\n *\n * @param \\Illuminate\\Contracts\\View\\View|\\Illuminate\\Contracts\\Support\\Htmlable|\\Closure|string $view\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponent($view, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponent($view, $data);\n }\n\n /**\n * Get the first view that actually exists from the given list, and start a component.\n *\n * @param array $names\n * @param array $data\n * @return void\n * @static\n */\n public static function startComponentFirst($names, $data = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startComponentFirst($names, $data);\n }\n\n /**\n * Render the current component.\n *\n * @return string\n * @static\n */\n public static function renderComponent()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderComponent();\n }\n\n /**\n * Get an item from the component data that exists above the current component.\n *\n * @param string $key\n * @param mixed $default\n * @return mixed\n * @static\n */\n public static function getConsumableComponentData($key, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getConsumableComponentData($key, $default);\n }\n\n /**\n * Start the slot rendering process.\n *\n * @param string $name\n * @param string|null $content\n * @param array $attributes\n * @return void\n * @static\n */\n public static function slot($name, $content = null, $attributes = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->slot($name, $content, $attributes);\n }\n\n /**\n * Save the slot content for rendering.\n *\n * @return void\n * @static\n */\n public static function endSlot()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->endSlot();\n }\n\n /**\n * Register a view creator event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function creator($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->creator($views, $callback);\n }\n\n /**\n * Register multiple view composers via an array.\n *\n * @param array $composers\n * @return array\n * @static\n */\n public static function composers($composers)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composers($composers);\n }\n\n /**\n * Register a view composer event.\n *\n * @param array|string $views\n * @param \\Closure|string $callback\n * @return array\n * @static\n */\n public static function composer($views, $callback)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->composer($views, $callback);\n }\n\n /**\n * Call the composer for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callComposer($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callComposer($view);\n }\n\n /**\n * Call the creator for a given view.\n *\n * @param \\Illuminate\\Contracts\\View\\View $view\n * @return void\n * @static\n */\n public static function callCreator($view)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->callCreator($view);\n }\n\n /**\n * Start injecting content into a fragment.\n *\n * @param string $fragment\n * @return void\n * @static\n */\n public static function startFragment($fragment)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startFragment($fragment);\n }\n\n /**\n * Stop injecting content into a fragment.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopFragment()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopFragment();\n }\n\n /**\n * Get the contents of a fragment.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getFragment($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragment($name, $default);\n }\n\n /**\n * Get the entire array of rendered fragments.\n *\n * @return array\n * @static\n */\n public static function getFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getFragments();\n }\n\n /**\n * Flush all of the fragments.\n *\n * @return void\n * @static\n */\n public static function flushFragments()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushFragments();\n }\n\n /**\n * Start injecting content into a section.\n *\n * @param string $section\n * @param string|null $content\n * @return void\n * @static\n */\n public static function startSection($section, $content = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startSection($section, $content);\n }\n\n /**\n * Inject inline content into a section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function inject($section, $content)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->inject($section, $content);\n }\n\n /**\n * Stop injecting content into a section and return its contents.\n *\n * @return string\n * @static\n */\n public static function yieldSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldSection();\n }\n\n /**\n * Stop injecting content into a section.\n *\n * @param bool $overwrite\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopSection($overwrite = false)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopSection($overwrite);\n }\n\n /**\n * Stop injecting content into a section and append it.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function appendSection()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->appendSection();\n }\n\n /**\n * Get the string contents of a section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldContent($section, $default);\n }\n\n /**\n * Get the parent placeholder for the current request.\n *\n * @param string $section\n * @return string\n * @static\n */\n public static function parentPlaceholder($section = '')\n {\n return \\Illuminate\\View\\Factory::parentPlaceholder($section);\n }\n\n /**\n * Check if section exists.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasSection($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->hasSection($name);\n }\n\n /**\n * Check if section does not exist.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function sectionMissing($name)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->sectionMissing($name);\n }\n\n /**\n * Get the contents of a section.\n *\n * @param string $name\n * @param string|null $default\n * @return mixed\n * @static\n */\n public static function getSection($name, $default = null)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSection($name, $default);\n }\n\n /**\n * Get the entire array of sections.\n *\n * @return array\n * @static\n */\n public static function getSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getSections();\n }\n\n /**\n * Flush all of the sections.\n *\n * @return void\n * @static\n */\n public static function flushSections()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushSections();\n }\n\n /**\n * Add new loop to the stack.\n *\n * @param \\Countable|array $data\n * @return void\n * @static\n */\n public static function addLoop($data)\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->addLoop($data);\n }\n\n /**\n * Increment the top loop's indices.\n *\n * @return void\n * @static\n */\n public static function incrementLoopIndices()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->incrementLoopIndices();\n }\n\n /**\n * Pop a loop from the top of the loop stack.\n *\n * @return void\n * @static\n */\n public static function popLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->popLoop();\n }\n\n /**\n * Get an instance of the last loop in the stack.\n *\n * @return \\stdClass|null\n * @static\n */\n public static function getLastLoop()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLastLoop();\n }\n\n /**\n * Get the entire loop stack.\n *\n * @return array\n * @static\n */\n public static function getLoopStack()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->getLoopStack();\n }\n\n /**\n * Start injecting content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPush($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPush($section, $content);\n }\n\n /**\n * Stop injecting content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPush()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPush();\n }\n\n /**\n * Start prepending content into a push section.\n *\n * @param string $section\n * @param string $content\n * @return void\n * @static\n */\n public static function startPrepend($section, $content = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startPrepend($section, $content);\n }\n\n /**\n * Stop prepending content into a push section.\n *\n * @return string\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function stopPrepend()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->stopPrepend();\n }\n\n /**\n * Get the string contents of a push section.\n *\n * @param string $section\n * @param string $default\n * @return string\n * @static\n */\n public static function yieldPushContent($section, $default = '')\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->yieldPushContent($section, $default);\n }\n\n /**\n * Flush all of the stacks.\n *\n * @return void\n * @static\n */\n public static function flushStacks()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->flushStacks();\n }\n\n /**\n * Start a translation block.\n *\n * @param array $replacements\n * @return void\n * @static\n */\n public static function startTranslation($replacements = [])\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n $instance->startTranslation($replacements);\n }\n\n /**\n * Render the current translation.\n *\n * @return string\n * @static\n */\n public static function renderTranslation()\n {\n /** @var \\Illuminate\\View\\Factory $instance */\n return $instance->renderTranslation();\n }\n\n }\n /**\n * @see \\Illuminate\\Foundation\\Vite\n */\n class Vite {\n /**\n * Get the preloaded assets.\n *\n * @return array\n * @static\n */\n public static function preloadedAssets()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->preloadedAssets();\n }\n\n /**\n * Get the Content Security Policy nonce applied to all generated tags.\n *\n * @return string|null\n * @static\n */\n public static function cspNonce()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->cspNonce();\n }\n\n /**\n * Generate or set a Content Security Policy nonce to apply to all generated tags.\n *\n * @param string|null $nonce\n * @return string\n * @static\n */\n public static function useCspNonce($nonce = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useCspNonce($nonce);\n }\n\n /**\n * Use the given key to detect integrity hashes in the manifest.\n *\n * @param string|false $key\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useIntegrityKey($key)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useIntegrityKey($key);\n }\n\n /**\n * Set the Vite entry points.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function withEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->withEntryPoints($entryPoints);\n }\n\n /**\n * Merge additional Vite entry points with the current set.\n *\n * @param array $entryPoints\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function mergeEntryPoints($entryPoints)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->mergeEntryPoints($entryPoints);\n }\n\n /**\n * Set the filename for the manifest file.\n *\n * @param string $filename\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useManifestFilename($filename)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useManifestFilename($filename);\n }\n\n /**\n * Resolve asset paths using the provided resolver.\n *\n * @param callable|null $resolver\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function createAssetPathsUsing($resolver)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->createAssetPathsUsing($resolver);\n }\n\n /**\n * Get the Vite \"hot\" file path.\n *\n * @return string\n * @static\n */\n public static function hotFile()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->hotFile();\n }\n\n /**\n * Set the Vite \"hot\" file path.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useHotFile($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useHotFile($path);\n }\n\n /**\n * Set the Vite build directory.\n *\n * @param string $path\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useBuildDirectory($path)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useBuildDirectory($path);\n }\n\n /**\n * Use the given callback to resolve attributes for script tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useScriptTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useScriptTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for style tags.\n *\n * @param (callable(string, string, ?array, ?array): array)|array $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useStyleTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useStyleTagAttributes($attributes);\n }\n\n /**\n * Use the given callback to resolve attributes for preload tags.\n *\n * @param (callable(string, string, ?array, ?array): (array|false))|array|false $attributes\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePreloadTagAttributes($attributes)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePreloadTagAttributes($attributes);\n }\n\n /**\n * Eagerly prefetch assets.\n *\n * @param int|null $concurrency\n * @param string $event\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function prefetch($concurrency = null, $event = 'load')\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->prefetch($concurrency, $event);\n }\n\n /**\n * Use the \"waterfall\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useWaterfallPrefetching($concurrency = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useWaterfallPrefetching($concurrency);\n }\n\n /**\n * Use the \"aggressive\" prefetching strategy.\n *\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function useAggressivePrefetching()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->useAggressivePrefetching();\n }\n\n /**\n * Set the prefetching strategy.\n *\n * @param 'waterfall'|'aggressive'|null $strategy\n * @param array $config\n * @return \\Illuminate\\Foundation\\Vite\n * @static\n */\n public static function usePrefetchStrategy($strategy, $config = [])\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->usePrefetchStrategy($strategy, $config);\n }\n\n /**\n * Generate React refresh runtime script.\n *\n * @return \\Illuminate\\Support\\HtmlString|void\n * @static\n */\n public static function reactRefresh()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->reactRefresh();\n }\n\n /**\n * Get the URL for an asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @static\n */\n public static function asset($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->asset($asset, $buildDirectory);\n }\n\n /**\n * Get the content of a given asset.\n *\n * @param string $asset\n * @param string|null $buildDirectory\n * @return string\n * @throws \\Illuminate\\Foundation\\ViteException\n * @static\n */\n public static function content($asset, $buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->content($asset, $buildDirectory);\n }\n\n /**\n * Get a unique hash representing the current manifest, or null if there is no manifest.\n *\n * @param string|null $buildDirectory\n * @return string|null\n * @static\n */\n public static function manifestHash($buildDirectory = null)\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->manifestHash($buildDirectory);\n }\n\n /**\n * Determine if the HMR server is running.\n *\n * @return bool\n * @static\n */\n public static function isRunningHot()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->isRunningHot();\n }\n\n /**\n * Get the Vite tag content as a string of HTML.\n *\n * @return string\n * @static\n */\n public static function toHtml()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n return $instance->toHtml();\n }\n\n /**\n * Flush state.\n *\n * @return void\n * @static\n */\n public static function flush()\n {\n /** @var \\Illuminate\\Foundation\\Vite $instance */\n $instance->flush();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Foundation\\Vite::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Foundation\\Vite::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Illuminate\\Foundation\\Vite::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Foundation\\Vite::flushMacros();\n }\n\n }\n /**\n * @method static void createSubscription(array|string $channels, \\Closure $callback, string $method = 'subscribe')\n * @method static \\Illuminate\\Redis\\Limiters\\ConcurrencyLimiterBuilder funnel(string $name)\n * @method static \\Illuminate\\Redis\\Limiters\\DurationLimiterBuilder throttle(string $name)\n * @method static mixed client()\n * @method static void subscribe(array|string $channels, \\Closure $callback)\n * @method static void psubscribe(array|string $channels, \\Closure $callback)\n * @method static mixed command(string $method, array $parameters = [])\n * @method static void listen(\\Closure $callback)\n * @method static string|null getName()\n * @method static \\Illuminate\\Redis\\Connections\\Connection setName(string $name)\n * @method static \\Illuminate\\Contracts\\Events\\Dispatcher getEventDispatcher()\n * @method static void setEventDispatcher(\\Illuminate\\Contracts\\Events\\Dispatcher $events)\n * @method static void unsetEventDispatcher()\n * @method static void macro(string $name, object|callable $macro)\n * @method static void mixin(object $mixin, bool $replace = true)\n * @method static bool hasMacro(string $name)\n * @method static void flushMacros()\n * @method static mixed macroCall(string $method, array $parameters)\n * @see \\Illuminate\\Redis\\RedisManager\n */\n class Redis {\n /**\n * Get a Redis connection by name.\n *\n * @param \\UnitEnum|string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @static\n */\n public static function connection($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Resolve the given connection by name.\n *\n * @param string|null $name\n * @return \\Illuminate\\Redis\\Connections\\Connection\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function resolve($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->resolve($name);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array\n * @static\n */\n public static function connections()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->connections();\n }\n\n /**\n * Enable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function enableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->enableEvents();\n }\n\n /**\n * Disable the firing of Redis command events.\n *\n * @return void\n * @static\n */\n public static function disableEvents()\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->disableEvents();\n }\n\n /**\n * Set the default driver.\n *\n * @param string $driver\n * @return void\n * @static\n */\n public static function setDriver($driver)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->setDriver($driver);\n }\n\n /**\n * Disconnect the given connection and remove from local cache.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function purge($name = null)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n $instance->purge($name);\n }\n\n /**\n * Register a custom driver creator Closure.\n *\n * @param string $driver\n * @param \\Closure $callback\n * @param-closure-this $this $callback\n * @return \\Illuminate\\Redis\\RedisManager\n * @static\n */\n public static function extend($driver, $callback)\n {\n /** @var \\Illuminate\\Redis\\RedisManager $instance */\n return $instance->extend($driver, $callback);\n }\n\n }\n }\n\nnamespace Aws\\Laravel {\n /**\n * Facade for the AWS service\n *\n */\n class AwsFacade {\n /**\n * Get a client by name using an array of constructor options.\n *\n * @param string $name Service name or namespace (e.g., DynamoDb, s3).\n * @param array $args Arguments to configure the client.\n * @return \\Aws\\AwsClientInterface\n * @throws \\InvalidArgumentException if any required options are missing or\n * the service is not supported.\n * @see Aws\\AwsClient::__construct for a list of available options for args.\n * @static\n */\n public static function createClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createClient($name, $args);\n }\n\n /**\n * @static\n */\n public static function createMultiRegionClient($name, $args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->createMultiRegionClient($name, $args);\n }\n\n /**\n * Clone existing SDK instance with ability to pass an associative array\n * of extra client settings.\n *\n * @param array $args\n * @return self\n * @static\n */\n public static function copy($args = [])\n {\n /** @var \\Aws\\Sdk $instance */\n return $instance->copy($args);\n }\n\n /**\n * Determine the endpoint prefix from a client namespace.\n *\n * @param string $name Namespace name\n * @return string\n * @internal\n * @deprecated Use the `\\Aws\\manifest()` function instead.\n * @static\n */\n public static function getEndpointPrefix($name)\n {\n return \\Aws\\Sdk::getEndpointPrefix($name);\n }\n\n }\n }\n\nnamespace Laravolt\\Avatar {\n /**\n */\n class Facade {\n /**\n * @static\n */\n public static function setGenerator($generator)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setGenerator($generator);\n }\n\n /**\n * @static\n */\n public static function create($name)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->create($name);\n }\n\n /**\n * @static\n */\n public static function applyTheme($config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->applyTheme($config);\n }\n\n /**\n * @static\n */\n public static function addTheme($name, $config)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->addTheme($name, $config);\n }\n\n /**\n * @static\n */\n public static function toBase64()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toBase64();\n }\n\n /**\n * @static\n */\n public static function save($path, $quality = 90)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->save($path, $quality);\n }\n\n /**\n * @static\n */\n public static function toSvg()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toSvg();\n }\n\n /**\n * @static\n */\n public static function toGravatar($param = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->toGravatar($param);\n }\n\n /**\n * @static\n */\n public static function getInitial()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getInitial();\n }\n\n /**\n * @static\n */\n public static function getImageObject()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getImageObject();\n }\n\n /**\n * @static\n */\n public static function buildAvatar()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->buildAvatar();\n }\n\n /**\n * @static\n */\n public static function getAttribute($key)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getAttribute($key);\n }\n\n /**\n * Get background color\n *\n * @static\n */\n public static function getBackground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getBackground();\n }\n\n /**\n * Get foreground color\n *\n * @static\n */\n public static function getForeground()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getForeground();\n }\n\n /**\n * Get shape\n *\n * @static\n */\n public static function getShape()\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->getShape();\n }\n\n /**\n * @static\n */\n public static function setTheme($theme)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setTheme($theme);\n }\n\n /**\n * @static\n */\n public static function setBackground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBackground($hex);\n }\n\n /**\n * @static\n */\n public static function setForeground($hex)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setForeground($hex);\n }\n\n /**\n * @static\n */\n public static function setDimension($width, $height = null)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setDimension($width, $height);\n }\n\n /**\n * @static\n */\n public static function setResponsive($responsive)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setResponsive($responsive);\n }\n\n /**\n * @static\n */\n public static function setFontSize($size)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontSize($size);\n }\n\n /**\n * @static\n */\n public static function setFontFamily($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFontFamily($font);\n }\n\n /**\n * @static\n */\n public static function setBorder($size, $color, $radius = 0)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorder($size, $color, $radius);\n }\n\n /**\n * @static\n */\n public static function setBorderRadius($radius)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setBorderRadius($radius);\n }\n\n /**\n * @static\n */\n public static function setShape($shape)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setShape($shape);\n }\n\n /**\n * @static\n */\n public static function setChars($chars)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setChars($chars);\n }\n\n /**\n * @static\n */\n public static function setFont($font)\n {\n /** @var \\Laravolt\\Avatar\\Avatar $instance */\n return $instance->setFont($font);\n }\n\n }\n }\n\nnamespace Spatie\\Fractal\\Facades {\n /**\n * @see \\Spatie\\Fractal\\Fractal\n */\n class Fractal extends \\Spatie\\Fractalistic\\Fractal {\n /**\n * @param null|mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return static\n * @static\n */\n public static function create($data = null, $transformer = null, $serializer = null)\n {\n return \\Spatie\\Fractal\\Fractal::create($data, $transformer, $serializer);\n }\n\n /**\n * @static\n */\n public static function respond($statusCode = 200, $headers = [], $options = 0)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->respond($statusCode, $headers, $options);\n }\n\n /**\n * Set the collection data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function collection($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->collection($data, $transformer, $resourceName);\n }\n\n /**\n * Set the item data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function item($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->item($data, $transformer, $resourceName);\n }\n\n /**\n * Set the primitive data that must be transformed.\n *\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @param null|string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function primitive($data, $transformer = null, $resourceName = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->primitive($data, $transformer, $resourceName);\n }\n\n /**\n * Set the data that must be transformed.\n *\n * @param string $dataType\n * @param mixed $data\n * @param null|string|callable|\\League\\Fractal\\TransformerAbstract $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function data($dataType, $data, $transformer = null)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->data($dataType, $data, $transformer);\n }\n\n /**\n * Set the class or function that will perform the transform.\n *\n * @param string|callable|\\League\\Fractal\\TransformerAbstract|null $transformer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function transformWith($transformer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->transformWith($transformer);\n }\n\n /**\n * Set the serializer to be used.\n *\n * @param string|\\League\\Fractal\\Serializer\\SerializerAbstract $serializer\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function serializeWith($serializer)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->serializeWith($serializer);\n }\n\n /**\n * Set a Fractal paginator for the data.\n *\n * @param \\League\\Fractal\\Pagination\\PaginatorInterface $paginator\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function paginateWith($paginator)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->paginateWith($paginator);\n }\n\n /**\n * Set a Fractal cursor for the data.\n *\n * @param \\League\\Fractal\\Pagination\\CursorInterface $cursor\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withCursor($cursor)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withCursor($cursor);\n }\n\n /**\n * Specify the includes.\n *\n * @param array|string $includes Array or string of resources to include.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseIncludes($includes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseIncludes($includes);\n }\n\n /**\n * Specify the excludes.\n *\n * @param array|string $excludes Array or string of resources to exclude.\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseExcludes($excludes)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseExcludes($excludes);\n }\n\n /**\n * Specify the fieldsets to include in the response.\n *\n * @param array $fieldsets array with key = resourceName and value = fields to include\n * (array or comma separated string with field names)\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function parseFieldsets($fieldsets)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->parseFieldsets($fieldsets);\n }\n\n /**\n * Set the meta data.\n *\n * @param $array,...\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function addMeta()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->addMeta();\n }\n\n /**\n * Set the resource name, to replace 'data' as the root of the collection or item.\n *\n * @param string $resourceName\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function withResourceName($resourceName)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->withResourceName($resourceName);\n }\n\n /**\n * Upper limit to how many levels of included data are allowed.\n *\n * @param int $recursionLimit\n * @return \\Spatie\\Fractal\\Fractal\n * @static\n */\n public static function limitRecursion($recursionLimit)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->limitRecursion($recursionLimit);\n }\n\n /**\n * Perform the transformation to json.\n *\n * @param int $options\n * @return string\n * @static\n */\n public static function toJson($options = 0)\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toJson($options);\n }\n\n /**\n * Perform the transformation to array.\n *\n * @return array|null\n * @static\n */\n public static function toArray()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->toArray();\n }\n\n /**\n * Create fractal data.\n *\n * @return \\League\\Fractal\\Scope\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @throws \\Spatie\\Fractalistic\\Exceptions\\NoTransformerSpecified\n * @static\n */\n public static function createData()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->createData();\n }\n\n /**\n * Get the resource class.\n *\n * @return string\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResourceClass()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceClass();\n }\n\n /**\n * Get the resource.\n *\n * @return \\League\\Fractal\\Resource\\ResourceInterface\n * @throws \\Spatie\\Fractalistic\\Exceptions\\InvalidTransformation\n * @static\n */\n public static function getResource()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResource();\n }\n\n /**\n * Return the name of the resource.\n *\n * @return string|null\n * @static\n */\n public static function getResourceName()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getResourceName();\n }\n\n /**\n * Convert the object into something JSON serializable.\n *\n * @return array|null\n * @static\n */\n public static function jsonSerialize()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->jsonSerialize();\n }\n\n /**\n * Get the transformer.\n *\n * @return string|callable|\\League\\Fractal\\TransformerAbstract|null\n * @static\n */\n public static function getTransformer()\n {\n //Method inherited from \\Spatie\\Fractalistic\\Fractal \n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->getTransformer();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Spatie\\Fractal\\Fractal::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Spatie\\Fractal\\Fractal::mixin($mixin, $replace);\n }\n\n /**\n * Checks if macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n return \\Spatie\\Fractal\\Fractal::hasMacro($name);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Spatie\\Fractal\\Fractal::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Spatie\\Fractal\\Fractal $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n }\n }\n\nnamespace Laratrust {\n /**\n */\n class LaratrustFacade {\n /**\n * Checks if the current user has a role by its name.\n *\n * @static\n */\n public static function hasRole($role, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasRole($role, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n *\n * @static\n */\n public static function hasPermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->hasPermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n *\n * @static\n */\n public static function doesntHavePermission($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->doesntHavePermission($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a permission by its name.\n * \n * Alias to hasPermission.\n *\n * @static\n */\n public static function isAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user does not have a permission by its name.\n * \n * Alias to doesntHavePermission.\n *\n * @static\n */\n public static function isNotAbleTo($permission, $team = null, $requireAll = false)\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->isNotAbleTo($permission, $team, $requireAll);\n }\n\n /**\n * Check if the current user has a role or permission by its name.\n *\n * @param array|string $roles The role(s) needed.\n * @param array|string $permissions The permission(s) needed.\n * @param array $options The Options.\n * @return bool\n * @static\n */\n public static function ability($roles, $permissions, $team = null, $options = [])\n {\n /** @var \\Laratrust\\Laratrust $instance */\n return $instance->ability($roles, $permissions, $team, $options);\n }\n\n }\n }\n\nnamespace Sentry\\Laravel {\n /**\n * @see \\Sentry\\State\\HubInterface\n */\n class Facade {\n /**\n * Gets the client bound to the top of the stack.\n *\n * @static\n */\n public static function getClient()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getClient();\n }\n\n /**\n * Gets the ID of the last captured event.\n *\n * @static\n */\n public static function getLastEventId()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getLastEventId();\n }\n\n /**\n * Creates a new scope to store context information that will be layered on\n * top of the current one. It is isolated, i.e. all breadcrumbs and context\n * information added to this scope will be removed once the scope ends. Be\n * sure to always remove this scope with {@see Hub::popScope} when the\n * operation finishes or throws.\n *\n * @static\n */\n public static function pushScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->pushScope();\n }\n\n /**\n * Removes a previously pushed scope from the stack. This restores the state\n * before the scope was pushed. All breadcrumbs and context information added\n * since the last call to {@see Hub::pushScope} are discarded.\n *\n * @static\n */\n public static function popScope()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->popScope();\n }\n\n /**\n * Creates a new scope with and executes the given operation within. The scope\n * is automatically removed once the operation finishes or throws.\n *\n * @param callable $callback The callback to be executed\n * @return mixed|void The callback's return value, upon successful execution\n * @psalm-template T\n * @psalm-param callable(Scope): T $callback\n * @psalm-return T\n * @static\n */\n public static function withScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->withScope($callback);\n }\n\n /**\n * Calls the given callback passing to it the current scope so that any\n * operation can be run within its context.\n *\n * @static\n */\n public static function configureScope($callback)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->configureScope($callback);\n }\n\n /**\n * Binds the given client to the current scope.\n *\n * @static\n */\n public static function bindClient($client)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->bindClient($client);\n }\n\n /**\n * Captures a message event and sends it to Sentry.\n *\n * @static\n */\n public static function captureMessage($message, $level = null, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureMessage($message, $level, $hint);\n }\n\n /**\n * Captures an exception event and sends it to Sentry.\n *\n * @static\n */\n public static function captureException($exception, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureException($exception, $hint);\n }\n\n /**\n * Captures a new event using the provided data.\n *\n * @static\n */\n public static function captureEvent($event, $hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureEvent($event, $hint);\n }\n\n /**\n * Captures an event that logs the last occurred error.\n *\n * @static\n */\n public static function captureLastError($hint = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureLastError($hint);\n }\n\n /**\n * Captures a check-in.\n *\n * @param int|float|null $duration\n * @param int|float|null $duration\n * @static\n */\n public static function captureCheckIn($slug, $status, $duration = null, $monitorConfig = null, $checkInId = null)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->captureCheckIn($slug, $status, $duration, $monitorConfig, $checkInId);\n }\n\n /**\n * Records a new breadcrumb which will be attached to future events. They\n * will be added to subsequent events to provide more context on user's\n * actions prior to an error or crash.\n *\n * @static\n */\n public static function addBreadcrumb($breadcrumb)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->addBreadcrumb($breadcrumb);\n }\n\n /**\n * Gets the integration whose FQCN matches the given one if it's available on the current client.\n *\n * @param string $className The FQCN of the integration\n * @psalm-template T of IntegrationInterface\n * @psalm-param class-string<T> $className\n * @psalm-return T|null\n * @static\n */\n public static function getIntegration($className)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getIntegration($className);\n }\n\n /**\n * Starts a new `Transaction` and returns it. This is the entry point to manual\n * tracing instrumentation.\n * \n * A tree structure can be built by adding child spans to the transaction, and\n * child spans to other spans. To start a new child span within the transaction\n * or any span, call the respective `startChild()` method.\n * \n * Every child span must be finished before the transaction is finished,\n * otherwise the unfinished spans are discarded.\n * \n * The transaction must be finished with a call to its `finish()` method, at\n * which point the transaction with all its finished child spans will be sent to\n * Sentry.\n *\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @param array<string, mixed> $customSamplingContext Additional context that will be passed to the {@see SamplingContext}\n * @static\n */\n public static function startTransaction($context, $customSamplingContext = [])\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->startTransaction($context, $customSamplingContext);\n }\n\n /**\n * Returns the transaction that is on the Hub.\n *\n * @static\n */\n public static function getTransaction()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getTransaction();\n }\n\n /**\n * Sets the span on the Hub.\n *\n * @static\n */\n public static function setSpan($span)\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->setSpan($span);\n }\n\n /**\n * Returns the span that is on the Hub.\n *\n * @static\n */\n public static function getSpan()\n {\n /** @var \\Sentry\\State\\Hub $instance */\n return $instance->getSpan();\n }\n\n }\n }\n\nnamespace League\\StatsD\\Laravel5\\Facade {\n /**\n * Facade for Statsd Package\n *\n * @author Aran Wilkinson <aran@aranw.net>\n * @package League\\StatsD\\Laravel5\\Facade\n */\n class StatsdFacade {\n /**\n * Singleton Reference\n *\n * @static\n */\n public static function instance($name = 'default')\n {\n return \\League\\StatsD\\Client::instance($name);\n }\n\n /**\n * Initialize Connection Details\n *\n * @param array $options Configuration options\n * @return \\League\\StatsD\\Client This instance\n * @throws ConfigurationException If port is invalid\n * @static\n */\n public static function configure($options = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->configure($options);\n }\n\n /**\n * @static\n */\n public static function getHost()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getHost();\n }\n\n /**\n * @static\n */\n public static function getPort()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getPort();\n }\n\n /**\n * @static\n */\n public static function getNamespace()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getNamespace();\n }\n\n /**\n * Get Last message sent to server\n *\n * @static\n */\n public static function getLastMessage()\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->getLastMessage();\n }\n\n /**\n * Increment a metric\n *\n * @param string|array $metrics Metric(s) to increment\n * @param int $delta Value to decrement the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function increment($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->increment($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Decrement a metric\n *\n * @param string|array $metrics Metric(s) to decrement\n * @param int $delta Value to increment the metric by\n * @param float $sampleRate Sample rate of metric\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function decrement($metrics, $delta = 1, $sampleRate = 1.0, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->decrement($metrics, $delta, $sampleRate, $tags);\n }\n\n /**\n * Start timing the given metric\n *\n * @param string $metric Metric to time\n * @static\n */\n public static function startTiming($metric)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->startTiming($metric);\n }\n\n /**\n * End timing the given metric and record\n *\n * @param string $metric Metric to time\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function endTiming($metric, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->endTiming($metric, $tags);\n }\n\n /**\n * Timing\n *\n * @param string $metric Metric to track\n * @param float $time Time in milliseconds\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function timing($metric, $time, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timing($metric, $time, $tags);\n }\n\n /**\n * Send multiple timing metrics at once\n *\n * @param array $metrics key value map of metric name -> timing value\n * @throws ConnectionException\n * @static\n */\n public static function timings($metrics)\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->timings($metrics);\n }\n\n /**\n * Time a function\n *\n * @param string $metric Metric to time\n * @param callable $func Function to record\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function time($metric, $func, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->time($metric, $func, $tags);\n }\n\n /**\n * Gauges\n *\n * @param string $metric Metric to gauge\n * @param int|float $value Set the value of the gauge\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function gauge($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->gauge($metric, $value, $tags);\n }\n\n /**\n * Sets - count the number of unique values passed to a key\n *\n * @param string $metric\n * @param mixed $value\n * @param array $tags A list of metric tags values\n * @throws ConnectionException\n * @static\n */\n public static function set($metric, $value, $tags = [])\n {\n /** @var \\League\\StatsD\\Client $instance */\n return $instance->set($metric, $value, $tags);\n }\n\n }\n }\n\nnamespace Barryvdh\\Debugbar\\Facades {\n /**\n * @method static void alert(mixed $message)\n * @method static void critical(mixed $message)\n * @method static void debug(mixed $message)\n * @method static void emergency(mixed $message)\n * @method static void error(mixed $message)\n * @method static void info(mixed $message)\n * @method static void log(mixed $message)\n * @method static void notice(mixed $message)\n * @method static void warning(mixed $message)\n * @see \\Barryvdh\\Debugbar\\LaravelDebugbar\n */\n class Debugbar extends \\DebugBar\\DebugBar {\n /**\n * Returns the HTTP driver\n * \n * If no http driver where defined, a PhpHttpDriver is automatically created\n *\n * @return \\DebugBar\\HttpDriverInterface\n * @static\n */\n public static function getHttpDriver()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getHttpDriver();\n }\n\n /**\n * Enable the Debugbar and boot, if not already booted.\n *\n * @static\n */\n public static function enable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->enable();\n }\n\n /**\n * Boot the debugbar (add collectors, renderer and listener)\n *\n * @static\n */\n public static function boot()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->boot();\n }\n\n /**\n * @static\n */\n public static function shouldCollect($name, $default = false)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->shouldCollect($name, $default);\n }\n\n /**\n * Adds a data collector\n *\n * @param \\DebugBar\\DataCollector\\DataCollectorInterface $collector\n * @throws DebugBarException\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function addCollector($collector)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addCollector($collector);\n }\n\n /**\n * Handle silenced errors\n *\n * @param $level\n * @param $message\n * @param string $file\n * @param int $line\n * @param array $context\n * @throws \\ErrorException\n * @static\n */\n public static function handleError($level, $message, $file = '', $line = 0, $context = [])\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->handleError($level, $message, $file, $line, $context);\n }\n\n /**\n * Starts a measure\n *\n * @param string $name Internal name, used to stop the measure\n * @param string $label Public name\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function startMeasure($name, $label = null, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->startMeasure($name, $label, $collector, $group);\n }\n\n /**\n * Stops a measure\n *\n * @param string $name\n * @static\n */\n public static function stopMeasure($name)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stopMeasure($name);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Exception $e\n * @deprecated in favor of addThrowable\n * @static\n */\n public static function addException($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addException($e);\n }\n\n /**\n * Adds an exception to be profiled in the debug bar\n *\n * @param \\Throwable $e\n * @static\n */\n public static function addThrowable($e)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addThrowable($e);\n }\n\n /**\n * Returns a JavascriptRenderer for this instance\n *\n * @param string $baseUrl\n * @param string $basePath\n * @return \\Barryvdh\\Debugbar\\JavascriptRenderer\n * @static\n */\n public static function getJavascriptRenderer($baseUrl = null, $basePath = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getJavascriptRenderer($baseUrl, $basePath);\n }\n\n /**\n * Modify the response and inject the debugbar (or data in headers)\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Request $request\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response\n * @return \\Symfony\\Component\\HttpFoundation\\Response\n * @static\n */\n public static function modifyResponse($request, $response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->modifyResponse($request, $response);\n }\n\n /**\n * Check if the Debugbar is enabled\n *\n * @return boolean\n * @static\n */\n public static function isEnabled()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isEnabled();\n }\n\n /**\n * Collects the data from the collectors\n *\n * @return array\n * @static\n */\n public static function collect()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collect();\n }\n\n /**\n * Injects the web debug toolbar into the given Response.\n *\n * @param \\Symfony\\Component\\HttpFoundation\\Response $response A Response instance\n * Based on https://github.com/symfony/WebProfilerBundle/blob/master/EventListener/WebDebugToolbarListener.php\n * @static\n */\n public static function injectDebugbar($response)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->injectDebugbar($response);\n }\n\n /**\n * Checks if there is stacked data in the session\n *\n * @return boolean\n * @static\n */\n public static function hasStackedData()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasStackedData();\n }\n\n /**\n * Returns the data stacked in the session\n *\n * @param boolean $delete Whether to delete the data in the session\n * @return array\n * @static\n */\n public static function getStackedData($delete = true)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackedData($delete);\n }\n\n /**\n * Disable the Debugbar\n *\n * @static\n */\n public static function disable()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->disable();\n }\n\n /**\n * Adds a measure\n *\n * @param string $label\n * @param float $start\n * @param float $end\n * @param array|null $params\n * @param string|null $collector\n * @param string|null $group\n * @static\n */\n public static function addMeasure($label, $start, $end, $params = [], $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMeasure($label, $start, $end, $params, $collector, $group);\n }\n\n /**\n * Utility function to measure the execution of a Closure\n *\n * @param string $label\n * @param \\Closure $closure\n * @param string|null $collector\n * @param string|null $group\n * @return mixed\n * @static\n */\n public static function measure($label, $closure, $collector = null, $group = null)\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->measure($label, $closure, $collector, $group);\n }\n\n /**\n * Collect data in a CLI request\n *\n * @return array\n * @static\n */\n public static function collectConsole()\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->collectConsole();\n }\n\n /**\n * Adds a message to the MessagesCollector\n * \n * A message can be anything from an object to a string\n *\n * @param mixed $message\n * @param string $label\n * @static\n */\n public static function addMessage($message, $label = 'info')\n {\n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->addMessage($message, $label);\n }\n\n /**\n * Checks if a data collector has been added\n *\n * @param string $name\n * @return boolean\n * @static\n */\n public static function hasCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->hasCollector($name);\n }\n\n /**\n * Returns a data collector\n *\n * @param string $name\n * @return \\DebugBar\\DataCollector\\DataCollectorInterface\n * @throws DebugBarException\n * @static\n */\n public static function getCollector($name)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollector($name);\n }\n\n /**\n * Returns an array of all data collectors\n *\n * @return array[DataCollectorInterface]\n * @static\n */\n public static function getCollectors()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCollectors();\n }\n\n /**\n * Sets the request id generator\n *\n * @param \\DebugBar\\RequestIdGeneratorInterface $generator\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setRequestIdGenerator($generator)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setRequestIdGenerator($generator);\n }\n\n /**\n * @return \\DebugBar\\RequestIdGeneratorInterface\n * @static\n */\n public static function getRequestIdGenerator()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getRequestIdGenerator();\n }\n\n /**\n * Returns the id of the current request\n *\n * @return string\n * @static\n */\n public static function getCurrentRequestId()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getCurrentRequestId();\n }\n\n /**\n * Sets the storage backend to use to store the collected data\n *\n * @param \\DebugBar\\StorageInterface $storage\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStorage($storage = null)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStorage($storage);\n }\n\n /**\n * @return \\DebugBar\\StorageInterface\n * @static\n */\n public static function getStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStorage();\n }\n\n /**\n * Checks if the data will be persisted\n *\n * @return boolean\n * @static\n */\n public static function isDataPersisted()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isDataPersisted();\n }\n\n /**\n * Sets the HTTP driver\n *\n * @param \\DebugBar\\HttpDriverInterface $driver\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setHttpDriver($driver)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setHttpDriver($driver);\n }\n\n /**\n * Returns collected data\n * \n * Will collect the data if none have been collected yet\n *\n * @return array\n * @static\n */\n public static function getData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getData();\n }\n\n /**\n * Returns an array of HTTP headers containing the data\n *\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return array\n * @static\n */\n public static function getDataAsHeaders($headerName = 'phpdebugbar', $maxHeaderLength = 4096, $maxTotalHeaderLength = 250000)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getDataAsHeaders($headerName, $maxHeaderLength, $maxTotalHeaderLength);\n }\n\n /**\n * Sends the data through the HTTP headers\n *\n * @param bool $useOpenHandler\n * @param string $headerName\n * @param integer $maxHeaderLength\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function sendDataInHeaders($useOpenHandler = null, $headerName = 'phpdebugbar', $maxHeaderLength = 4096)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->sendDataInHeaders($useOpenHandler, $headerName, $maxHeaderLength);\n }\n\n /**\n * Stacks the data in the session for later rendering\n *\n * @static\n */\n public static function stackData()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->stackData();\n }\n\n /**\n * Sets the key to use in the $_SESSION array\n *\n * @param string $ns\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackDataSessionNamespace($ns)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackDataSessionNamespace($ns);\n }\n\n /**\n * Returns the key used in the $_SESSION array\n *\n * @return string\n * @static\n */\n public static function getStackDataSessionNamespace()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->getStackDataSessionNamespace();\n }\n\n /**\n * Sets whether to only use the session to store stacked data even\n * if a storage is enabled\n *\n * @param boolean $enabled\n * @return \\Barryvdh\\Debugbar\\LaravelDebugbar\n * @static\n */\n public static function setStackAlwaysUseSessionStorage($enabled = true)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->setStackAlwaysUseSessionStorage($enabled);\n }\n\n /**\n * Checks if the session is always used to store stacked data\n * even if a storage is enabled\n *\n * @return boolean\n * @static\n */\n public static function isStackAlwaysUseSessionStorage()\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->isStackAlwaysUseSessionStorage();\n }\n\n /**\n * @static\n */\n public static function offsetSet($key, $value)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetSet($key, $value);\n }\n\n /**\n * @static\n */\n public static function offsetGet($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetGet($key);\n }\n\n /**\n * @static\n */\n public static function offsetExists($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetExists($key);\n }\n\n /**\n * @static\n */\n public static function offsetUnset($key)\n {\n //Method inherited from \\DebugBar\\DebugBar \n /** @var \\Barryvdh\\Debugbar\\LaravelDebugbar $instance */\n return $instance->offsetUnset($key);\n }\n\n }\n }\n\nnamespace Barryvdh\\DomPDF\\Facade {\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n /**\n * @method static BasePDF setBaseHost(string $baseHost)\n * @method static BasePDF setBasePath(string $basePath)\n * @method static BasePDF setCanvas(\\Dompdf\\Canvas $canvas)\n * @method static BasePDF setCallbacks(array<string, mixed> $callbacks)\n * @method static BasePDF setCss(\\Dompdf\\Css\\Stylesheet $css)\n * @method static BasePDF setDefaultView(string $defaultView, array<string, mixed> $options)\n * @method static BasePDF setDom(\\DOMDocument $dom)\n * @method static BasePDF setFontMetrics(\\Dompdf\\FontMetrics $fontMetrics)\n * @method static BasePDF setHttpContext(resource|array<string, mixed> $httpContext)\n * @method static BasePDF setPaper(string|float[] $paper, string $orientation = 'portrait')\n * @method static BasePDF setProtocol(string $protocol)\n * @method static BasePDF setTree(\\Dompdf\\Frame\\FrameTree $tree)\n */\n class Pdf {\n /**\n * Get the DomPDF instance\n *\n * @static\n */\n public static function getDomPDF()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->getDomPDF();\n }\n\n /**\n * Show or hide warnings\n *\n * @static\n */\n public static function setWarnings($warnings)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setWarnings($warnings);\n }\n\n /**\n * Load a HTML string\n *\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadHTML($string, $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadHTML($string, $encoding);\n }\n\n /**\n * Load a HTML file\n *\n * @static\n */\n public static function loadFile($file)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadFile($file);\n }\n\n /**\n * Add metadata info\n *\n * @param array<string, string> $info\n * @static\n */\n public static function addInfo($info)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->addInfo($info);\n }\n\n /**\n * Load a View and convert to HTML\n *\n * @param array<string, mixed> $data\n * @param array<string, mixed> $mergeData\n * @param string|null $encoding Not used yet\n * @static\n */\n public static function loadView($view, $data = [], $mergeData = [], $encoding = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->loadView($view, $data, $mergeData, $encoding);\n }\n\n /**\n * Set/Change an option (or array of options) in Dompdf\n *\n * @param array<string, mixed>|string $attribute\n * @param null|mixed $value\n * @static\n */\n public static function setOption($attribute, $value = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOption($attribute, $value);\n }\n\n /**\n * Replace all the Options from DomPDF\n *\n * @param array<string, mixed> $options\n * @static\n */\n public static function setOptions($options, $mergeWithDefaults = false)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setOptions($options, $mergeWithDefaults);\n }\n\n /**\n * Output the PDF as a string.\n * \n * The options parameter controls the output. Accepted options are:\n * \n * 'compress' = > 1 or 0 - apply content stream compression, this is\n * on (1) by default\n *\n * @param array<string, int> $options\n * @return string The rendered PDF as string\n * @static\n */\n public static function output($options = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->output($options);\n }\n\n /**\n * Save the PDF to a file\n *\n * @static\n */\n public static function save($filename, $disk = null)\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->save($filename, $disk);\n }\n\n /**\n * Make the PDF downloadable by the user\n *\n * @static\n */\n public static function download($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->download($filename);\n }\n\n /**\n * Return a response with the PDF to show in the browser\n *\n * @static\n */\n public static function stream($filename = 'document.pdf')\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->stream($filename);\n }\n\n /**\n * Render the PDF\n *\n * @static\n */\n public static function render()\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->render();\n }\n\n /**\n * @param array<string> $pc\n * @static\n */\n public static function setEncryption($password, $ownerpassword = '', $pc = [])\n {\n /** @var \\Barryvdh\\DomPDF\\PDF $instance */\n return $instance->setEncryption($password, $ownerpassword, $pc);\n }\n\n }\n }\n\nnamespace ChaseConey\\LaravelDatadogHelper {\n /**\n * @see LaravelDatadogHelper\n * @see \\Datadog\\DogStatsd\n */\n class Datadog extends \\DataDog\\DogStatsd {\n /**\n * @static\n */\n public static function send($data, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->send($data, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Log timing information\n *\n * @param string $stat The metric to in log timing info for.\n * @param float $time The elapsed time (ms) to log\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function timing($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->timing($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * A convenient alias for the timing function when used with micro-timing\n *\n * @param string $stat The metric name\n * @param float $time The elapsed time to log, IN SECONDS\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function microtiming($stat, $time, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->microtiming($stat, $time, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Gauge\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function gauge($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->gauge($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Histogram\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function histogram($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->histogram($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Distribution\n *\n * @param string $stat The metric\n * @param float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function distribution($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->distribution($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Set\n *\n * @param string $stat The metric\n * @param string|float $value The value\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function set($stat, $value, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->set($stat, $value, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * Increments one or more stats counters\n *\n * @param string|array $stats The metric(s) to increment.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to increment by (default 1)\n * @return void\n * @static\n */\n public static function increment($stats, $sampleRate = 1.0, $tags = null, $value = 1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->increment($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Decrements one or more stats counters.\n *\n * @param string|array $stats The metric(s) to decrement.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param int $value the amount to decrement by (default -1)\n * @return void\n * @static\n */\n public static function decrement($stats, $sampleRate = 1.0, $tags = null, $value = -1, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->decrement($stats, $sampleRate, $tags, $value, $cardinality);\n }\n\n /**\n * Updates one or more stats counters by arbitrary amounts.\n *\n * @param string|array $stats The metric(s) to update. Should be either a string or array of metrics.\n * @param int $delta The amount to increment/decrement each metric by.\n * @param float $sampleRate the rate (0-1) for sampling.\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @return void\n * @static\n */\n public static function updateStats($stats, $delta = 1, $sampleRate = 1.0, $tags = null, $cardinality = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->updateStats($stats, $delta, $sampleRate, $tags, $cardinality);\n }\n\n /**\n * @deprecated service_check will be removed in future versions in favor of serviceCheck\n * \n * Send a custom service check status over UDP\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function service_check($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->service_check($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * Send a custom service check status over UDP\n *\n * @param string $name service check name\n * @param int $status service check status code (see OK, WARNING,...)\n * @param array|string $tags Key Value array of Tag => Value, or single tag as string\n * @param string $hostname hostname to associate with this service check status\n * @param string $message message to associate with this service check status\n * @param int $timestamp timestamp for the service check status (defaults to now)\n * @return void\n * @static\n */\n public static function serviceCheck($name, $status, $tags = null, $hostname = null, $message = null, $timestamp = null)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n $instance->serviceCheck($name, $status, $tags, $hostname, $message, $timestamp);\n }\n\n /**\n * @static\n */\n public static function report($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->report($message);\n }\n\n /**\n * @throws \\Exception|\\Throwable\n * @static\n */\n public static function flush($message)\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->flush($message);\n }\n\n /**\n * Formats $vals array into event for submission to Datadog via UDP\n *\n * @param array $vals Optional values of the event. See\n * https://docs.datadoghq.com/api/?lang=bash#post-an-event for the valid keys\n * @return bool\n * @static\n */\n public static function event($title, $vals = [])\n {\n //Method inherited from \\DataDog\\DogStatsd \n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->event($title, $vals);\n }\n\n /**\n * @static\n */\n public static function setMetricsPrefix($metricsPrefix)\n {\n /** @var \\ChaseConey\\LaravelDatadogHelper\\Datadog\\DogStatsd $instance */\n return $instance->setMetricsPrefix($metricsPrefix);\n }\n\n }\n }\n\nnamespace Spatie\\LaravelIgnition\\Facades {\n /**\n * @see \\Spatie\\FlareClient\\Flare\n */\n class Flare {\n /**\n * @static\n */\n public static function make($apiKey = null, $contextDetector = null)\n {\n return \\Spatie\\FlareClient\\Flare::make($apiKey, $contextDetector);\n }\n\n /**\n * @static\n */\n public static function setApiToken($apiToken)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setApiToken($apiToken);\n }\n\n /**\n * @static\n */\n public static function apiTokenSet()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->apiTokenSet();\n }\n\n /**\n * @static\n */\n public static function setBaseUrl($baseUrl)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setBaseUrl($baseUrl);\n }\n\n /**\n * @static\n */\n public static function setStage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setStage($stage);\n }\n\n /**\n * @static\n */\n public static function sendReportsImmediately()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendReportsImmediately();\n }\n\n /**\n * @static\n */\n public static function determineVersionUsing($determineVersionCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->determineVersionUsing($determineVersionCallable);\n }\n\n /**\n * @static\n */\n public static function reportErrorLevels($reportErrorLevels)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportErrorLevels($reportErrorLevels);\n }\n\n /**\n * @static\n */\n public static function filterExceptionsUsing($filterExceptionsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterExceptionsUsing($filterExceptionsCallable);\n }\n\n /**\n * @static\n */\n public static function filterReportsUsing($filterReportsCallable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->filterReportsUsing($filterReportsCallable);\n }\n\n /**\n * @param array<class-string<ArgumentReducer>|ArgumentReducer>|\\Spatie\\Backtrace\\Arguments\\ArgumentReducers|null $argumentReducers\n * @static\n */\n public static function argumentReducers($argumentReducers)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->argumentReducers($argumentReducers);\n }\n\n /**\n * @static\n */\n public static function withStackFrameArguments($withStackFrameArguments = true, $forcePHPIniSetting = false)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->withStackFrameArguments($withStackFrameArguments, $forcePHPIniSetting);\n }\n\n /**\n * @param class-string $exceptionClass\n * @static\n */\n public static function overrideGrouping($exceptionClass, $type = 'exception_message_and_class')\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->overrideGrouping($exceptionClass, $type);\n }\n\n /**\n * @static\n */\n public static function version()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->version();\n }\n\n /**\n * @return array<int, FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddleware()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddleware();\n }\n\n /**\n * @static\n */\n public static function setContextProviderDetector($contextDetector)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContextProviderDetector($contextDetector);\n }\n\n /**\n * @static\n */\n public static function setContainer($container)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->setContainer($container);\n }\n\n /**\n * @static\n */\n public static function registerFlareHandlers()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerFlareHandlers();\n }\n\n /**\n * @static\n */\n public static function registerExceptionHandler()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerExceptionHandler();\n }\n\n /**\n * @static\n */\n public static function registerErrorHandler($errorLevels = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerErrorHandler($errorLevels);\n }\n\n /**\n * @param \\Spatie\\FlareClient\\FlareMiddleware\\FlareMiddleware|array<FlareMiddleware>|class-string<FlareMiddleware>|callable $middleware\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function registerMiddleware($middleware)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->registerMiddleware($middleware);\n }\n\n /**\n * @return array<int,FlareMiddleware|class-string<FlareMiddleware>>\n * @static\n */\n public static function getMiddlewares()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getMiddlewares();\n }\n\n /**\n * @param string $name\n * @param string $messageLevel\n * @param array<int, mixed> $metaData\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function glow($name, $messageLevel = 'info', $metaData = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->glow($name, $messageLevel, $metaData);\n }\n\n /**\n * @static\n */\n public static function handleException($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleException($throwable);\n }\n\n /**\n * @return mixed\n * @static\n */\n public static function handleError($code, $message, $file = '', $line = 0)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->handleError($code, $message, $file, $line);\n }\n\n /**\n * @static\n */\n public static function applicationPath($applicationPath)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->applicationPath($applicationPath);\n }\n\n /**\n * @static\n */\n public static function report($throwable, $callback = null, $report = null, $handled = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->report($throwable, $callback, $report, $handled);\n }\n\n /**\n * @static\n */\n public static function reportHandled($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportHandled($throwable);\n }\n\n /**\n * @static\n */\n public static function reportMessage($message, $logLevel, $callback = null)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reportMessage($message, $logLevel, $callback);\n }\n\n /**\n * @static\n */\n public static function sendTestReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->sendTestReport($throwable);\n }\n\n /**\n * @static\n */\n public static function reset()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->reset();\n }\n\n /**\n * @static\n */\n public static function anonymizeIp()\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->anonymizeIp();\n }\n\n /**\n * @param array<int, string> $fieldNames\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function censorRequestBodyFields($fieldNames)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->censorRequestBodyFields($fieldNames);\n }\n\n /**\n * @static\n */\n public static function createReport($throwable)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReport($throwable);\n }\n\n /**\n * @static\n */\n public static function createReportFromMessage($message, $logLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->createReportFromMessage($message, $logLevel);\n }\n\n /**\n * @static\n */\n public static function stage($stage)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->stage($stage);\n }\n\n /**\n * @static\n */\n public static function messageLevel($messageLevel)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->messageLevel($messageLevel);\n }\n\n /**\n * @param string $groupName\n * @param mixed $default\n * @return array<int, mixed>\n * @static\n */\n public static function getGroup($groupName = 'context', $default = [])\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->getGroup($groupName, $default);\n }\n\n /**\n * @static\n */\n public static function context($key, $value)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->context($key, $value);\n }\n\n /**\n * @param string $groupName\n * @param array<string, mixed> $properties\n * @return \\Spatie\\FlareClient\\Flare\n * @static\n */\n public static function group($groupName, $properties)\n {\n /** @var \\Spatie\\FlareClient\\Flare $instance */\n return $instance->group($groupName, $properties);\n }\n\n }\n }\n\nnamespace Vinkla\\Hashids\\Facades {\n /**\n * @method static string encode(mixed ...$numbers)\n * @method static array decode(string $hash)\n * @method static string encodeHex(string $str)\n * @method static string decodeHex(string $hash)\n */\n class Hashids extends \\GrahamCampbell\\Manager\\AbstractManager {\n /**\n * @static\n */\n public static function getFactory()\n {\n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getFactory();\n }\n\n /**\n * Get a connection instance.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function connection($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->connection($name);\n }\n\n /**\n * Reconnect to the given connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return object\n * @static\n */\n public static function reconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->reconnect($name);\n }\n\n /**\n * Disconnect from the given connection.\n *\n * @param string|null $name\n * @return void\n * @static\n */\n public static function disconnect($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->disconnect($name);\n }\n\n /**\n * Get the configuration for a connection.\n *\n * @param string|null $name\n * @throws \\InvalidArgumentException\n * @return array\n * @static\n */\n public static function getConnectionConfig($name = null)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnectionConfig($name);\n }\n\n /**\n * Get the default connection name.\n *\n * @return string\n * @static\n */\n public static function getDefaultConnection()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getDefaultConnection();\n }\n\n /**\n * Set the default connection name.\n *\n * @param string $name\n * @return void\n * @static\n */\n public static function setDefaultConnection($name)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->setDefaultConnection($name);\n }\n\n /**\n * Register an extension connection resolver.\n *\n * @param string $name\n * @param callable $resolver\n * @return void\n * @static\n */\n public static function extend($name, $resolver)\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n $instance->extend($name, $resolver);\n }\n\n /**\n * Return all of the created connections.\n *\n * @return array<string,object>\n * @static\n */\n public static function getConnections()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConnections();\n }\n\n /**\n * Get the config instance.\n *\n * @return \\Illuminate\\Contracts\\Config\\Repository\n * @static\n */\n public static function getConfig()\n {\n //Method inherited from \\GrahamCampbell\\Manager\\AbstractManager \n /** @var \\Vinkla\\Hashids\\HashidsManager $instance */\n return $instance->getConfig();\n }\n\n }\n }\n\nnamespace Illuminate\\Support {\n /**\n * @template TKey of array-key\n * @template-covariant TValue\n * @implements \\ArrayAccess<TKey, TValue>\n * @implements \\Illuminate\\Support\\Enumerable<TKey, TValue>\n */\n class Collection {\n /**\n * @see \\Barryvdh\\Debugbar\\ServiceProvider::register()\n * @static\n */\n public static function debug()\n {\n return \\Illuminate\\Support\\Collection::debug();\n }\n\n /**\n * @see \\Spatie\\Fractal\\FractalServiceProvider::packageBooted()\n * @param mixed $transformer\n * @static\n */\n public static function transformWith($transformer)\n {\n return \\Illuminate\\Support\\Collection::transformWith($transformer);\n }\n\n }\n }\n\nnamespace Illuminate\\Http {\n /**\n */\n class Request extends \\Symfony\\Component\\HttpFoundation\\Request {\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validate($rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validate($rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestValidation()\n * @param string $errorBag\n * @param array $rules\n * @param mixed $params\n * @static\n */\n public static function validateWithBag($errorBag, $rules, ...$params)\n {\n return \\Illuminate\\Http\\Request::validateWithBag($errorBag, $rules, ...$params);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignature($absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignature($absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @static\n */\n public static function hasValidRelativeSignature()\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignature();\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @param mixed $absolute\n * @static\n */\n public static function hasValidSignatureWhileIgnoring($ignoreQuery = [], $absolute = true)\n {\n return \\Illuminate\\Http\\Request::hasValidSignatureWhileIgnoring($ignoreQuery, $absolute);\n }\n\n /**\n * @see \\Illuminate\\Foundation\\Providers\\FoundationServiceProvider::registerRequestSignatureValidation()\n * @param mixed $ignoreQuery\n * @static\n */\n public static function hasValidRelativeSignatureWhileIgnoring($ignoreQuery = [])\n {\n return \\Illuminate\\Http\\Request::hasValidRelativeSignatureWhileIgnoring($ignoreQuery);\n }\n\n }\n }\n\nnamespace Illuminate\\Testing {\n /**\n * @template TResponse of \\Symfony\\Component\\HttpFoundation\\Response\n * @mixin \\Illuminate\\Http\\Response\n */\n class TestResponse {\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param array $structure\n * @static\n */\n public static function assertJsonTypedStructure($structure)\n {\n return \\Illuminate\\Testing\\TestResponse::assertJsonTypedStructure($structure);\n }\n\n /**\n * @see \\JMac\\Testing\\AdditionalAssertionsServiceProvider::register()\n * @param string $key\n * @static\n */\n public static function assertViewHasNull($key)\n {\n return \\Illuminate\\Testing\\TestResponse::assertViewHasNull($key);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Schema {\n /**\n */\n class Blueprint {\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function nestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::nestedSet();\n }\n\n /**\n * @see \\Kalnoy\\Nestedset\\NestedSetServiceProvider::register()\n * @static\n */\n public static function dropNestedSet()\n {\n return \\Illuminate\\Database\\Schema\\Blueprint::dropNestedSet();\n }\n\n }\n }\n\nnamespace Illuminate\\Validation {\n /**\n */\n class Rule {\n /**\n * @see \\Propaganistas\\LaravelPhone\\PhoneServiceProvider::registerValidator()\n * @static\n */\n public static function phone()\n {\n return \\Illuminate\\Validation\\Rule::phone();\n }\n\n }\n }\n\nnamespace Illuminate\\Console\\Scheduling {\n /**\n */\n class Event {\n /**\n * @see \\Sentry\\Laravel\\Features\\ConsoleSchedulingIntegration::register()\n * @param string|null $monitorSlug\n * @param int|null $checkInMargin\n * @param int|null $maxRuntime\n * @param bool $updateMonitorConfig\n * @param int|null $failureIssueThreshold\n * @param int|null $recoveryThreshold\n * @static\n */\n public static function sentryMonitor($monitorSlug = null, $checkInMargin = null, $maxRuntime = null, $updateMonitorConfig = true, $failureIssueThreshold = null, $recoveryThreshold = null)\n {\n return \\Illuminate\\Console\\Scheduling\\Event::sentryMonitor($monitorSlug, $checkInMargin, $maxRuntime, $updateMonitorConfig, $failureIssueThreshold, $recoveryThreshold);\n }\n\n }\n }\n\nnamespace Illuminate\\Http\\Client {\n /**\n * @mixin \\Illuminate\\Http\\Client\\PendingRequest\n */\n class Factory {\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatApi();\n }\n\n /**\n * @see \\Jiminny\\Providers\\PlanhatServiceProvider::register()\n * @return \\Illuminate\\Http\\Client\\PendingRequest\n * @static\n */\n public static function planhatAnalyticsApi()\n {\n return \\Illuminate\\Http\\Client\\Factory::planhatAnalyticsApi();\n }\n\n }\n }\n\nnamespace Illuminate\\Routing {\n /**\n * @mixin \\Illuminate\\Routing\\RouteRegistrar\n */\n class Router {\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::auth()\n * @param mixed $options\n * @static\n */\n public static function auth($options = [])\n {\n return \\Illuminate\\Routing\\Router::auth($options);\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::resetPassword()\n * @static\n */\n public static function resetPassword()\n {\n return \\Illuminate\\Routing\\Router::resetPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::confirmPassword()\n * @static\n */\n public static function confirmPassword()\n {\n return \\Illuminate\\Routing\\Router::confirmPassword();\n }\n\n /**\n * @see \\Laravel\\Ui\\AuthRouteMethods::emailVerification()\n * @static\n */\n public static function emailVerification()\n {\n return \\Illuminate\\Routing\\Router::emailVerification();\n }\n\n }\n /**\n */\n class ResponseFactory {\n /**\n * @see \\Jiminny\\Providers\\ResponseMacroServiceProvider::boot()\n * @param mixed $data\n * @param mixed $status\n * @param array $headers\n * @param mixed $options\n * @static\n */\n public static function twiml($data = null, $status = 200, $headers = [], $options = 0)\n {\n return \\Illuminate\\Routing\\ResponseFactory::twiml($data, $status, $headers, $options);\n }\n\n }\n }\n\nnamespace Illuminate\\Database\\Eloquent {\n /**\n * @template TKey of array-key\n * @template TModel of \\Illuminate\\Database\\Eloquent\\Model\n * @extends \\Illuminate\\Support\\Collection<TKey, TModel>\n */\n class Collection extends \\Illuminate\\Support\\Collection {\n }\n }\n\n\nnamespace {\n class App extends \\Illuminate\\Support\\Facades\\App {}\n class Arr extends \\Illuminate\\Support\\Arr {}\n class Artisan extends \\Illuminate\\Support\\Facades\\Artisan {}\n class Auth extends \\Illuminate\\Support\\Facades\\Auth {}\n class Benchmark extends \\Illuminate\\Support\\Benchmark {}\n class Blade extends \\Illuminate\\Support\\Facades\\Blade {}\n class Broadcast extends \\Illuminate\\Support\\Facades\\Broadcast {}\n class Bus extends \\Illuminate\\Support\\Facades\\Bus {}\n class Cache extends \\Illuminate\\Support\\Facades\\Cache {}\n class Concurrency extends \\Illuminate\\Support\\Facades\\Concurrency {}\n class Config extends \\Illuminate\\Support\\Facades\\Config {}\n class Context extends \\Illuminate\\Support\\Facades\\Context {}\n class Cookie extends \\Illuminate\\Support\\Facades\\Cookie {}\n class Crypt extends \\Illuminate\\Support\\Facades\\Crypt {}\n class DB extends \\Illuminate\\Support\\Facades\\DB {}\n\n /**\n * @template TCollection of static\n * @template TModel of static\n * @template TValue of static\n * @template TValue of static\n */\n class Eloquent extends \\Illuminate\\Database\\Eloquent\\Model { /**\n * Create and return an un-saved model instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function make($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->make($attributes);\n }\n\n /**\n * Register a new global scope.\n *\n * @param string $identifier\n * @param \\Illuminate\\Database\\Eloquent\\Scope|\\Closure $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withGlobalScope($identifier, $scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withGlobalScope($identifier, $scope);\n }\n\n /**\n * Remove a registered global scope.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Scope|string $scope\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScope($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScope($scope);\n }\n\n /**\n * Remove all or passed registered global scopes.\n *\n * @param array|null $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopes($scopes = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopes($scopes);\n }\n\n /**\n * Remove all global scopes except the given scopes.\n *\n * @param array $scopes\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutGlobalScopesExcept($scopes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutGlobalScopesExcept($scopes);\n }\n\n /**\n * Get an array of global scopes that were removed from the query.\n *\n * @return array\n * @static\n */\n public static function removedScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->removedScopes();\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKey($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKey($id);\n }\n\n /**\n * Add a where clause on the primary key to the query.\n *\n * @param mixed $id\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereKeyNot($id)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereKeyNot($id);\n }\n\n /**\n * Add a basic where clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function where($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->where($column, $operator, $value, $boolean);\n }\n\n /**\n * Add a basic where clause to the query, and return the first result.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return TModel|null\n * @static\n */\n public static function firstWhere($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstWhere($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhere($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhere($column, $operator, $value);\n }\n\n /**\n * Add a basic \"where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNot($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNot($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query.\n *\n * @param (\\Closure(static): mixed)|array|string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNot($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNot($column, $operator, $value);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function latest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->latest($column);\n }\n\n /**\n * Add an \"order by\" clause for a timestamp to the query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function oldest($column = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->oldest($column);\n }\n\n /**\n * Create a collection of models from plain arrays.\n *\n * @param array $items\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function hydrate($items)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hydrate($items);\n }\n\n /**\n * Insert into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return bool\n * @static\n */\n public static function fillAndInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsert($values);\n }\n\n /**\n * Insert (ignoring errors) into the database after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return int\n * @static\n */\n public static function fillAndInsertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertOrIgnore($values);\n }\n\n /**\n * Insert a record into the database and get its ID after merging the model's default attributes, setting timestamps, and casting values.\n *\n * @param array<string, mixed> $values\n * @return int\n * @static\n */\n public static function fillAndInsertGetId($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillAndInsertGetId($values);\n }\n\n /**\n * Enrich the given values by merging in the model's default attributes, adding timestamps, and casting values.\n *\n * @param array<int, array<string, mixed>> $values\n * @return array<int, array<string, mixed>>\n * @static\n */\n public static function fillForInsert($values)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fillForInsert($values);\n }\n\n /**\n * Create a collection of models from a raw query.\n *\n * @param string $query\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function fromQuery($query, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->fromQuery($query, $bindings);\n }\n\n /**\n * Find a model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel|null)\n * @static\n */\n public static function find($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->find($id, $columns);\n }\n\n /**\n * Find a sole model by its primary key.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function findSole($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findSole($id, $columns);\n }\n\n /**\n * Find multiple models by their primary keys.\n *\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $ids\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function findMany($ids, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findMany($ids, $columns);\n }\n\n /**\n * Find a model by its primary key or throw an exception.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function findOrFail($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrFail($id, $columns);\n }\n\n /**\n * Find a model by its primary key or return fresh model instance.\n *\n * @param mixed $id\n * @param array|string $columns\n * @return ($id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>) ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel> : TModel)\n * @static\n */\n public static function findOrNew($id, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOrNew($id, $columns);\n }\n\n /**\n * Find a model by its primary key or call a callback.\n *\n * @template TValue\n * @param mixed $id\n * @param (\\Closure(): TValue)|list<string>|string $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return ( $id is (\\Illuminate\\Contracts\\Support\\Arrayable<array-key, mixed>|array<mixed>)\n * ? \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * : TModel|TValue\n * )\n * @static\n */\n public static function findOr($id, $columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->findOr($id, $columns, $callback);\n }\n\n /**\n * Get the first record matching the attributes or instantiate it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrNew($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrNew($attributes, $values);\n }\n\n /**\n * Get the first record matching the attributes. If the record is not found, create it.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function firstOrCreate($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrCreate($attributes, $values);\n }\n\n /**\n * Attempt to create the record. If a unique constraint violation occurs, attempt to find the matching record.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function createOrFirst($attributes = [], $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createOrFirst($attributes, $values);\n }\n\n /**\n * Create or update a record matching the attributes, and fill it with values.\n *\n * @param array $attributes\n * @param array $values\n * @return TModel\n * @static\n */\n public static function updateOrCreate($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->updateOrCreate($attributes, $values);\n }\n\n /**\n * Create a record matching the attributes, or increment the existing record.\n *\n * @param array $attributes\n * @param string $column\n * @param int|float $default\n * @param int|float $step\n * @param array $extra\n * @return TModel\n * @static\n */\n public static function incrementOrCreate($attributes, $column = 'count', $default = 1, $step = 1, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->incrementOrCreate($attributes, $column, $default, $step, $extra);\n }\n\n /**\n * Execute the query and get the first result or throw an exception.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function firstOrFail($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOrFail($columns);\n }\n\n /**\n * Execute the query and get the first result or call a callback.\n *\n * @template TValue\n * @param (\\Closure(): TValue)|list<string> $columns\n * @param (\\Closure(): TValue)|null $callback\n * @return TModel|TValue\n * @static\n */\n public static function firstOr($columns = [], $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->firstOr($columns, $callback);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TModel\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function sole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->sole($columns);\n }\n\n /**\n * Get a single column's value from the first result of a query.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @static\n */\n public static function value($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->value($column);\n }\n\n /**\n * Get a single column's value from the first result of a query if it's the sole matching record.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function soleValue($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->soleValue($column);\n }\n\n /**\n * Get a single column's value from the first result of the query or throw an exception.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return mixed\n * @throws \\Illuminate\\Database\\Eloquent\\ModelNotFoundException<TModel>\n * @static\n */\n public static function valueOrFail($column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->valueOrFail($column);\n }\n\n /**\n * Execute the query as a \"select\" statement.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Collection<int, TModel>\n * @static\n */\n public static function get($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->get($columns);\n }\n\n /**\n * Get the hydrated models without eager loading.\n *\n * @param array|string $columns\n * @return array<int, TModel>\n * @static\n */\n public static function getModels($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModels($columns);\n }\n\n /**\n * Eager load the relationships for the models.\n *\n * @param array<int, TModel> $models\n * @return array<int, TModel>\n * @static\n */\n public static function eagerLoadRelations($models)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eagerLoadRelations($models);\n }\n\n /**\n * Register a closure to be invoked after the query is executed.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function afterQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->afterQuery($callback);\n }\n\n /**\n * Invoke the \"after query\" modification callbacks.\n *\n * @param mixed $result\n * @return mixed\n * @static\n */\n public static function applyAfterQueryCallbacks($result)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyAfterQueryCallbacks($result);\n }\n\n /**\n * Get a lazy collection for the given query.\n *\n * @return \\Illuminate\\Support\\LazyCollection<int, TModel>\n * @static\n */\n public static function cursor()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursor();\n }\n\n /**\n * Get a collection with the values of a given column.\n *\n * @param string|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param string|null $key\n * @return \\Illuminate\\Support\\Collection<array-key, mixed>\n * @static\n */\n public static function pluck($column, $key = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pluck($column, $key);\n }\n\n /**\n * Paginate the given query.\n *\n * @param int|null|\\Closure $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @param \\Closure|int|null $total\n * @return \\Illuminate\\Pagination\\LengthAwarePaginator\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function paginate($perPage = null, $columns = [], $pageName = 'page', $page = null, $total = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->paginate($perPage, $columns, $pageName, $page, $total);\n }\n\n /**\n * Paginate the given query into a simple paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $pageName\n * @param int|null $page\n * @return \\Illuminate\\Contracts\\Pagination\\Paginator\n * @static\n */\n public static function simplePaginate($perPage = null, $columns = [], $pageName = 'page', $page = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->simplePaginate($perPage, $columns, $pageName, $page);\n }\n\n /**\n * Paginate the given query into a cursor paginator.\n *\n * @param int|null $perPage\n * @param array|string $columns\n * @param string $cursorName\n * @param \\Illuminate\\Pagination\\Cursor|string|null $cursor\n * @return \\Illuminate\\Contracts\\Pagination\\CursorPaginator\n * @static\n */\n public static function cursorPaginate($perPage = null, $columns = [], $cursorName = 'cursor', $cursor = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->cursorPaginate($perPage, $columns, $cursorName, $cursor);\n }\n\n /**\n * Save a new model and return the instance.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function create($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->create($attributes);\n }\n\n /**\n * Save a new model and return the instance without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function createQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->createQuietly($attributes);\n }\n\n /**\n * Save a new model and return the instance. Allow mass-assignment.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreate($attributes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreate($attributes);\n }\n\n /**\n * Save a new model instance with mass assignment without raising model events.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function forceCreateQuietly($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->forceCreateQuietly($attributes);\n }\n\n /**\n * Insert new records or update the existing ones.\n *\n * @param array $values\n * @param array|string $uniqueBy\n * @param array|null $update\n * @return int\n * @static\n */\n public static function upsert($values, $uniqueBy, $update = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->upsert($values, $uniqueBy, $update);\n }\n\n /**\n * Register a replacement for the default delete function.\n *\n * @param \\Closure $callback\n * @return void\n * @static\n */\n public static function onDelete($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n $instance->onDelete($callback);\n }\n\n /**\n * Call the given local model scopes.\n *\n * @param array|string $scopes\n * @return static|mixed\n * @static\n */\n public static function scopes($scopes)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->scopes($scopes);\n }\n\n /**\n * Apply the scopes to the Eloquent builder instance and return it.\n *\n * @return static\n * @static\n */\n public static function applyScopes()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->applyScopes();\n }\n\n /**\n * Prevent the specified relations from being eager loaded.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function without($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->without($relations);\n }\n\n /**\n * Set the relationships that should be eager loaded while removing any previously added eager loading specifications.\n *\n * @param array<array-key, array|(\\Closure(\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*,*,*>): mixed)|string>|string $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withOnly($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withOnly($relations);\n }\n\n /**\n * Create a new instance of the model being queried.\n *\n * @param array $attributes\n * @return TModel\n * @static\n */\n public static function newModelInstance($attributes = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->newModelInstance($attributes);\n }\n\n /**\n * Specify attributes that should be added to any new models created by this builder.\n * \n * The given key / value pairs will also be added as where conditions to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|array|string $attributes\n * @param mixed $value\n * @param bool $asConditions\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAttributes($attributes, $value = null, $asConditions = true)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAttributes($attributes, $value, $asConditions);\n }\n\n /**\n * Apply query-time casts to the model instance.\n *\n * @param array $casts\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCasts($casts)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCasts($casts);\n }\n\n /**\n * Execute the given Closure within a transaction savepoint if needed.\n *\n * @template TModelValue\n * @param \\Closure(): TModelValue $scope\n * @return TModelValue\n * @static\n */\n public static function withSavepointIfNeeded($scope)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSavepointIfNeeded($scope);\n }\n\n /**\n * Get the underlying query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function getQuery()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getQuery();\n }\n\n /**\n * Set the underlying query builder instance.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setQuery($query)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setQuery($query);\n }\n\n /**\n * Get a base query builder instance.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function toBase()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->toBase();\n }\n\n /**\n * Get the relationships being eagerly loaded.\n *\n * @return array\n * @static\n */\n public static function getEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getEagerLoads();\n }\n\n /**\n * Set the relationships being eagerly loaded.\n *\n * @param array $eagerLoad\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function setEagerLoads($eagerLoad)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setEagerLoads($eagerLoad);\n }\n\n /**\n * Indicate that the given relationships should not be eagerly loaded.\n *\n * @param array $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoad($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoad($relations);\n }\n\n /**\n * Flush the relationships being eagerly loaded.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withoutEagerLoads()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withoutEagerLoads();\n }\n\n /**\n * Get the \"limit\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getLimit()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getLimit();\n }\n\n /**\n * Get the \"offset\" value from the query or null if it's not set.\n *\n * @return mixed\n * @static\n */\n public static function getOffset()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getOffset();\n }\n\n /**\n * Get the model instance being queried.\n *\n * @return TModel\n * @static\n */\n public static function getModel()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getModel();\n }\n\n /**\n * Set a model instance for the model being queried.\n *\n * @template TModelNew of \\Illuminate\\Database\\Eloquent\\Model\n * @param TModelNew $model\n * @return static<TModelNew>\n * @static\n */\n public static function setModel($model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->setModel($model);\n }\n\n /**\n * Get the given macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->getMacro($name);\n }\n\n /**\n * Checks if a macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasMacro($name)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMacro($name);\n }\n\n /**\n * Get the given global macro by name.\n *\n * @param string $name\n * @return \\Closure\n * @static\n */\n public static function getGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::getGlobalMacro($name);\n }\n\n /**\n * Checks if a global macro is registered.\n *\n * @param string $name\n * @return bool\n * @static\n */\n public static function hasGlobalMacro($name)\n {\n return \\Illuminate\\Database\\Eloquent\\Builder::hasGlobalMacro($name);\n }\n\n /**\n * Clone the Eloquent query builder.\n *\n * @return static\n * @static\n */\n public static function clone()\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->clone();\n }\n\n /**\n * Register a closure to be invoked on a clone.\n *\n * @param \\Closure $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function onClone($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->onClone($callback);\n }\n\n /**\n * Chunk the results of the query.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @return bool\n * @static\n */\n public static function chunk($count, $callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunk($count, $callback);\n }\n\n /**\n * Run a map over each item while chunking.\n *\n * @template TReturn\n * @param callable(TValue): TReturn $callback\n * @param int $count\n * @return \\Illuminate\\Support\\Collection<int, TReturn>\n * @static\n */\n public static function chunkMap($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkMap($callback, $count);\n }\n\n /**\n * Execute a callback over each item while chunking.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function each($callback, $count = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->each($callback, $count);\n }\n\n /**\n * Chunk the results of a query by comparing IDs.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkById($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkById($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in descending order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function chunkByIdDesc($count, $callback, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->chunkByIdDesc($count, $callback, $column, $alias);\n }\n\n /**\n * Chunk the results of a query by comparing IDs in a given order.\n *\n * @param int $count\n * @param callable(\\Illuminate\\Support\\Collection<int, TValue>, int): mixed $callback\n * @param string|null $column\n * @param string|null $alias\n * @param bool $descending\n * @return bool\n * @throws \\RuntimeException\n * @static\n */\n public static function orderedChunkById($count, $callback, $column = null, $alias = null, $descending = false)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orderedChunkById($count, $callback, $column, $alias, $descending);\n }\n\n /**\n * Execute a callback over each item while chunking by ID.\n *\n * @param callable(TValue, int): mixed $callback\n * @param int $count\n * @param string|null $column\n * @param string|null $alias\n * @return bool\n * @static\n */\n public static function eachById($callback, $count = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->eachById($callback, $count, $column, $alias);\n }\n\n /**\n * Query lazily, by chunks of the given size.\n *\n * @param int $chunkSize\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazy($chunkSize = 1000)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazy($chunkSize);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyById($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyById($chunkSize, $column, $alias);\n }\n\n /**\n * Query lazily, by chunking the results of a query by comparing IDs in descending order.\n *\n * @param int $chunkSize\n * @param string|null $column\n * @param string|null $alias\n * @return \\Illuminate\\Support\\LazyCollection<int, TValue>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function lazyByIdDesc($chunkSize = 1000, $column = null, $alias = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->lazyByIdDesc($chunkSize, $column, $alias);\n }\n\n /**\n * Execute the query and get the first result.\n *\n * @param array|string $columns\n * @return TValue|null\n * @static\n */\n public static function first($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->first($columns);\n }\n\n /**\n * Execute the query and get the first result if it's the sole matching record.\n *\n * @param array|string $columns\n * @return TValue\n * @throws \\Illuminate\\Database\\RecordsNotFoundException\n * @throws \\Illuminate\\Database\\MultipleRecordsFoundException\n * @static\n */\n public static function baseSole($columns = [])\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->baseSole($columns);\n }\n\n /**\n * Pass the query to a given callback and then return it.\n *\n * @param callable($this): mixed $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function tap($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->tap($callback);\n }\n\n /**\n * Pass the query to a given callback and return the result.\n *\n * @template TReturn\n * @param (callable($this): TReturn) $callback\n * @return (TReturn is null|void ? $this : TReturn)\n * @static\n */\n public static function pipe($callback)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->pipe($callback);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) truthy.\n *\n * @template TWhenParameter\n * @template TWhenReturnType\n * @param (\\Closure($this): TWhenParameter)|TWhenParameter|null $value\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $callback\n * @param (callable($this, TWhenParameter): TWhenReturnType)|null $default\n * @return $this|TWhenReturnType\n * @static\n */\n public static function when($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->when($value, $callback, $default);\n }\n\n /**\n * Apply the callback if the given \"value\" is (or resolves to) falsy.\n *\n * @template TUnlessParameter\n * @template TUnlessReturnType\n * @param (\\Closure($this): TUnlessParameter)|TUnlessParameter|null $value\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $callback\n * @param (callable($this, TUnlessParameter): TUnlessReturnType)|null $default\n * @return $this|TUnlessReturnType\n * @static\n */\n public static function unless($value = null, $callback = null, $default = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->unless($value, $callback, $default);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function has($relation, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->has($relation, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHas($relation, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHas($relation, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHave($relation, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHave($relation, $boolean, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHave($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHave($relation);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n * \n * Also load the relationship with the same condition.\n *\n * @param string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHas($relation, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHas($relation, $callback, $operator, $count);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHave($relation, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHave($relation, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function hasMorph($relation, $types, $operator = '>=', $count = 1, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->hasMorph($relation, $types, $operator, $count, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHasMorph($relation, $types, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orHasMorph($relation, $types, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param string $boolean\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function doesntHaveMorph($relation, $types, $boolean = 'and', $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->doesntHaveMorph($relation, $types, $boolean, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with an \"or\".\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param string|array<int, string> $types\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orDoesntHaveMorph($relation, $types)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orDoesntHaveMorph($relation, $types);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @param string $operator\n * @param int $count\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereHasMorph($relation, $types, $callback = null, $operator = '>=', $count = 1)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereHasMorph($relation, $types, $callback, $operator, $count);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a polymorphic relationship count / exists condition to the query with where clauses and an \"or\".\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>, string): mixed)|null $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveMorph($relation, $types, $callback = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveMorph($relation, $types, $callback);\n }\n\n /**\n * Add a basic where clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic where clause to a relationship query and eager-load the relationship with the same conditions.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<*, *, *>|string $relation\n * @param \\Closure|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a basic count / exists condition to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add an \"or where\" clause to a relationship query.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\Relation<TRelatedModel, *, *>|string $relation\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDoesntHaveRelation($relation, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereDoesntHaveRelation($relation, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a where clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or where\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with a doesn't have clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a polymorphic relationship condition to the query with an \"or doesn't have\" clause.\n *\n * @template TRelatedModel of \\Illuminate\\Database\\Eloquent\\Model\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<TRelatedModel, *>|string $relation\n * @param string|array<int, string> $types\n * @param (\\Closure(\\Illuminate\\Database\\Eloquent\\Builder<TRelatedModel>): mixed)|string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphDoesntHaveRelation($relation, $types, $column, $operator, $value);\n }\n\n /**\n * Add a morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a not morph-to relationship condition to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotMorphedTo($relation, $model, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereNotMorphedTo($relation, $model, $boolean);\n }\n\n /**\n * Add a morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string|null $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereMorphedTo($relation, $model);\n }\n\n /**\n * Add a not morph-to relationship condition to the query with an \"or where\" clause.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Relations\\MorphTo<*, *>|string $relation\n * @param \\Illuminate\\Database\\Eloquent\\Model|iterable<int, \\Illuminate\\Database\\Eloquent\\Model>|string $model\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotMorphedTo($relation, $model)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereNotMorphedTo($relation, $model);\n }\n\n /**\n * Add a \"belongs to\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereBelongsTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereBelongsTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"BelongsTo\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereBelongsTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereBelongsTo($related, $relationshipName);\n }\n\n /**\n * Add a \"belongs to many\" relationship where clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model|\\Illuminate\\Database\\Eloquent\\Collection<int, \\Illuminate\\Database\\Eloquent\\Model> $related\n * @param string|null $relationshipName\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\Illuminate\\Database\\Eloquent\\RelationNotFoundException\n * @static\n */\n public static function whereAttachedTo($related, $relationshipName = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->whereAttachedTo($related, $relationshipName, $boolean);\n }\n\n /**\n * Add a \"belongs to many\" relationship with an \"or where\" clause to the query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Model $related\n * @param string|null $relationshipName\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\RuntimeException\n * @static\n */\n public static function orWhereAttachedTo($related, $relationshipName = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->orWhereAttachedTo($related, $relationshipName);\n }\n\n /**\n * Add subselect queries to include an aggregate value for a relationship.\n *\n * @param mixed $relations\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string|null $function\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAggregate($relations, $column, $function = null)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAggregate($relations, $column, $function);\n }\n\n /**\n * Add subselect queries to count the relations.\n *\n * @param mixed $relations\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withCount($relations)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withCount($relations);\n }\n\n /**\n * Add subselect queries to include the max of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMax($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMax($relation, $column);\n }\n\n /**\n * Add subselect queries to include the min of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withMin($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withMin($relation, $column);\n }\n\n /**\n * Add subselect queries to include the sum of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withSum($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withSum($relation, $column);\n }\n\n /**\n * Add subselect queries to include the average of the relation's column.\n *\n * @param string|array $relation\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withAvg($relation, $column)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withAvg($relation, $column);\n }\n\n /**\n * Add subselect queries to include the existence of related models.\n *\n * @param string|array $relation\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function withExists($relation)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->withExists($relation);\n }\n\n /**\n * Merge the where constraints from another query to the current query.\n *\n * @param \\Illuminate\\Database\\Eloquent\\Builder<*> $from\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeConstraintsFrom($from)\n {\n /** @var \\Illuminate\\Database\\Eloquent\\Builder $instance */\n return $instance->mergeConstraintsFrom($from);\n }\n\n /**\n * Set the columns to be selected.\n *\n * @param mixed $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function select($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->select($columns);\n }\n\n /**\n * Add a subselect expression to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function selectSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectSub($query, $as);\n }\n\n /**\n * Add a new \"raw\" select expression to the query.\n *\n * @param string $expression\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function selectRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->selectRaw($expression, $bindings);\n }\n\n /**\n * Makes \"from\" fetch from a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function fromSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromSub($query, $as);\n }\n\n /**\n * Add a raw from clause to the query.\n *\n * @param string $expression\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function fromRaw($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->fromRaw($expression, $bindings);\n }\n\n /**\n * Add a new select column to the query.\n *\n * @param mixed $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addSelect($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addSelect($column);\n }\n\n /**\n * Force the query to only return distinct results.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function distinct()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->distinct();\n }\n\n /**\n * Set the table which the query is targeting.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param string|null $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function from($table, $as = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->from($table, $as);\n }\n\n /**\n * Add an index hint to suggest a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useIndex($index);\n }\n\n /**\n * Add an index hint to force a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forceIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forceIndex($index);\n }\n\n /**\n * Add an index hint to ignore a query index.\n *\n * @param string $index\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function ignoreIndex($index)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ignoreIndex($index);\n }\n\n /**\n * Add a join clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function join($table, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->join($table, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @param string $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinWhere($table, $first, $operator, $second, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinWhere($table, $first, $operator, $second, $type);\n }\n\n /**\n * Add a subquery join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @param string $type\n * @param bool $where\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function joinSub($query, $as, $first, $operator = null, $second = null, $type = 'inner', $where = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinSub($query, $as, $first, $operator, $second, $type, $where);\n }\n\n /**\n * Add a lateral join clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function joinLateral($query, $as, $type = 'inner')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->joinLateral($query, $as, $type);\n }\n\n /**\n * Add a lateral left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinLateral($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinLateral($query, $as);\n }\n\n /**\n * Add a left join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery left join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function leftJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->leftJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a right join to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoin($table, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a \"right join where\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinWhere($table, $first, $operator, $second)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinWhere($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery right join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function rightJoinSub($query, $as, $first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rightJoinSub($query, $as, $first, $operator, $second);\n }\n\n /**\n * Add a \"cross join\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $table\n * @param \\Closure|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $first\n * @param string|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoin($table, $first = null, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoin($table, $first, $operator, $second);\n }\n\n /**\n * Add a subquery cross join to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @param string $as\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function crossJoinSub($query, $as)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->crossJoinSub($query, $as);\n }\n\n /**\n * Merge an array of where clauses and bindings.\n *\n * @param array $wheres\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeWheres($wheres, $bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeWheres($wheres, $bindings);\n }\n\n /**\n * Prepare the value and operator for a where clause.\n *\n * @param string $value\n * @param string $operator\n * @param bool $useDefault\n * @return array\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function prepareValueAndOperator($value, $operator, $useDefault = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->prepareValueAndOperator($value, $operator, $useDefault);\n }\n\n /**\n * Add a \"where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @param string|null $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereColumn($first, $operator = null, $second = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereColumn($first, $operator, $second, $boolean);\n }\n\n /**\n * Add an \"or where\" clause comparing two columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string|array $first\n * @param string|null $operator\n * @param string|null $second\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereColumn($first, $operator = null, $second = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereColumn($first, $operator, $second);\n }\n\n /**\n * Add a raw where clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $sql\n * @param mixed $bindings\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or where clause to the query.\n *\n * @param string $sql\n * @param mixed $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRaw($sql, $bindings);\n }\n\n /**\n * Add a \"where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereLike($column, $value, $caseSensitive = false, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereLike($column, $value, $caseSensitive, $boolean, $not);\n }\n\n /**\n * Add an \"or where like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotLike($column, $value, $caseSensitive = false, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotLike($column, $value, $caseSensitive, $boolean);\n }\n\n /**\n * Add an \"or where not like\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $value\n * @param bool $caseSensitive\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotLike($column, $value, $caseSensitive = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotLike($column, $value, $caseSensitive);\n }\n\n /**\n * Add a \"where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIn($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIn($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIn($column, $values);\n }\n\n /**\n * Add a \"where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotIn($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotIn($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param mixed $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotIn($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotIn($column, $values);\n }\n\n /**\n * Add a \"where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerInRaw($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerInRaw($column, $values, $boolean, $not);\n }\n\n /**\n * Add an \"or where in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerInRaw($column, $values);\n }\n\n /**\n * Add a \"where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereIntegerNotInRaw($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereIntegerNotInRaw($column, $values, $boolean);\n }\n\n /**\n * Add an \"or where not in raw\" clause for integer values to the query.\n *\n * @param string $column\n * @param \\Illuminate\\Contracts\\Support\\Arrayable|array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereIntegerNotInRaw($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereIntegerNotInRaw($column, $values);\n }\n\n /**\n * Add a \"where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or where null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNull($column);\n }\n\n /**\n * Add a \"where not null\" clause to the query.\n *\n * @param string|array|\\Illuminate\\Contracts\\Database\\Query\\Expression $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotNull($columns, $boolean);\n }\n\n /**\n * Add a where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBetweenColumns($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBetweenColumns($column, $values, $boolean, $not);\n }\n\n /**\n * Add an or where between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetween($column, $values);\n }\n\n /**\n * Add an or where between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBetweenColumns($column, $values);\n }\n\n /**\n * Add a where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetween($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetween($column, $values, $boolean);\n }\n\n /**\n * Add a where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotBetweenColumns($column, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotBetweenColumns($column, $values, $boolean);\n }\n\n /**\n * Add an or where not between statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetween($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetween($column, $values);\n }\n\n /**\n * Add an or where not between statement using columns to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotBetweenColumns($column, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotBetweenColumns($column, $values);\n }\n\n /**\n * Add a where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueBetween($value, $columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueBetween($value, $columns, $boolean, $not);\n }\n\n /**\n * Add an or where between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueBetween($value, $columns);\n }\n\n /**\n * Add a where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereValueNotBetween($value, $columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereValueNotBetween($value, $columns, $boolean);\n }\n\n /**\n * Add an or where not between columns statement using a value to the query.\n *\n * @param mixed $value\n * @param array{\\Illuminate\\Contracts\\Database\\Query\\Expression|string, \\Illuminate\\Contracts\\Database\\Query\\Expression|string} $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereValueNotBetween($value, $columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereValueNotBetween($value, $columns);\n }\n\n /**\n * Add an \"or where not null\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotNull($column);\n }\n\n /**\n * Add a \"where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDate($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDate($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where date\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDate($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDate($column, $operator, $value);\n }\n\n /**\n * Add a \"where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTime($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTime($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where time\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|null $operator\n * @param \\DateTimeInterface|string|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTime($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTime($column, $operator, $value);\n }\n\n /**\n * Add a \"where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereDay($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereDay($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where day\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereDay($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereDay($column, $operator, $value);\n }\n\n /**\n * Add a \"where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereMonth($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereMonth($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where month\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereMonth($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereMonth($column, $operator, $value);\n }\n\n /**\n * Add a \"where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereYear($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereYear($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where year\" statement to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param \\DateTimeInterface|string|int|null $operator\n * @param \\DateTimeInterface|string|int|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereYear($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereYear($column, $operator, $value);\n }\n\n /**\n * Add a nested where statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNested($callback, $boolean);\n }\n\n /**\n * Create a new query instance for nested where condition.\n *\n * @return \\Illuminate\\Database\\Query\\Builder\n * @static\n */\n public static function forNestedWhere()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forNestedWhere();\n }\n\n /**\n * Add another query builder as a nested where to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedWhereQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedWhereQuery($query, $boolean);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereExists($callback, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereExists($callback, $boolean, $not);\n }\n\n /**\n * Add an or exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereExists($callback, $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereExists($callback, $not);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNotExists($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNotExists($callback, $boolean);\n }\n\n /**\n * Add a where not exists clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $callback\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNotExists($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNotExists($callback);\n }\n\n /**\n * Add an exists clause to the query.\n *\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addWhereExistsQuery($query, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addWhereExistsQuery($query, $boolean, $not);\n }\n\n /**\n * Adds a where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function whereRowValues($columns, $operator, $values, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereRowValues($columns, $operator, $values, $boolean);\n }\n\n /**\n * Adds an or where condition using row values.\n *\n * @param array $columns\n * @param string $operator\n * @param array $values\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereRowValues($columns, $operator, $values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereRowValues($columns, $operator, $values);\n }\n\n /**\n * Add a \"where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContains($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContains($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContains($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContains($column, $value);\n }\n\n /**\n * Add a \"where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContain($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContain($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not contains\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContain($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContain($column, $value);\n }\n\n /**\n * Add a \"where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonOverlaps($column, $value, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonOverlaps($column, $value, $boolean, $not);\n }\n\n /**\n * Add an \"or where JSON overlaps\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonOverlaps($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonOverlaps($column, $value);\n }\n\n /**\n * Add a \"where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntOverlap($column, $value, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntOverlap($column, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON not overlap\" clause to the query.\n *\n * @param string $column\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntOverlap($column, $value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntOverlap($column, $value);\n }\n\n /**\n * Add a clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonContainsKey($column, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonContainsKey($column, $boolean, $not);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path exists to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonContainsKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonContainsKey($column);\n }\n\n /**\n * Add a clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonDoesntContainKey($column, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonDoesntContainKey($column, $boolean);\n }\n\n /**\n * Add an \"or\" clause that determines if a JSON path does not exist to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonDoesntContainKey($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonDoesntContainKey($column);\n }\n\n /**\n * Add a \"where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereJsonLength($column, $operator, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereJsonLength($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where JSON length\" clause to the query.\n *\n * @param string $column\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereJsonLength($column, $operator, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereJsonLength($column, $operator, $value);\n }\n\n /**\n * Handles dynamic \"where\" clauses to the query.\n *\n * @param string $method\n * @param array $parameters\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dynamicWhere($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dynamicWhere($method, $parameters);\n }\n\n /**\n * Add a \"where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFullText($columns, $value, $options = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFullText($columns, $value, $options, $boolean);\n }\n\n /**\n * Add a \"or where fulltext\" clause to the query.\n *\n * @param string|string[] $columns\n * @param string $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFullText($columns, $value, $options = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFullText($columns, $value, $options);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAll($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAll($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"and\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAll($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAll($columns, $operator, $value);\n }\n\n /**\n * Add a \"where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAny($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAny($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where\" clause to the query for multiple columns with \"or\" conditions between them.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAny($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAny($columns, $operator, $value);\n }\n\n /**\n * Add a \"where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNone($columns, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNone($columns, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or where not\" clause to the query for multiple columns where none of the conditions should be true.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression[]|\\Closure[]|string[] $columns\n * @param mixed $operator\n * @param mixed $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNone($columns, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNone($columns, $operator, $value);\n }\n\n /**\n * Add a \"group by\" clause to the query.\n *\n * @param array|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $groups\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupBy(...$groups)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupBy(...$groups);\n }\n\n /**\n * Add a raw groupBy clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupByRaw($sql, $bindings);\n }\n\n /**\n * Add a \"having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function having($column, $operator = null, $value = null, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->having($column, $operator, $value, $boolean);\n }\n\n /**\n * Add an \"or having\" clause to the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\Closure|string $column\n * @param \\DateTimeInterface|string|int|float|null $operator\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|\\DateTimeInterface|string|int|float|null $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHaving($column, $operator = null, $value = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHaving($column, $operator, $value);\n }\n\n /**\n * Add a nested having statement to the query.\n *\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNested($callback, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNested($callback, $boolean);\n }\n\n /**\n * Add another query builder as a nested having to the query builder.\n *\n * @param \\Illuminate\\Database\\Query\\Builder $query\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function addNestedHavingQuery($query, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addNestedHavingQuery($query, $boolean);\n }\n\n /**\n * Add a \"having null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNull($columns, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNull($columns, $boolean, $not);\n }\n\n /**\n * Add an \"or having null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNull($column);\n }\n\n /**\n * Add a \"having not null\" clause to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingNotNull($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingNotNull($columns, $boolean);\n }\n\n /**\n * Add an \"or having not null\" clause to the query.\n *\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingNotNull($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingNotNull($column);\n }\n\n /**\n * Add a \"having between \" clause to the query.\n *\n * @param string $column\n * @param string $boolean\n * @param bool $not\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingBetween($column, $values, $boolean = 'and', $not = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingBetween($column, $values, $boolean, $not);\n }\n\n /**\n * Add a raw having clause to the query.\n *\n * @param string $sql\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function havingRaw($sql, $bindings = [], $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->havingRaw($sql, $bindings, $boolean);\n }\n\n /**\n * Add a raw or having clause to the query.\n *\n * @param string $sql\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orHavingRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orHavingRaw($sql, $bindings);\n }\n\n /**\n * Add an \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function orderBy($column, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderBy($column, $direction);\n }\n\n /**\n * Add a descending \"order by\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|\\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByDesc($column);\n }\n\n /**\n * Put the query's results in random order.\n *\n * @param string|int $seed\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function inRandomOrder($seed = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->inRandomOrder($seed);\n }\n\n /**\n * Add a raw \"order by\" clause to the query.\n *\n * @param string $sql\n * @param array $bindings\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orderByRaw($sql, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orderByRaw($sql, $bindings);\n }\n\n /**\n * Alias to set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function skip($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->skip($value);\n }\n\n /**\n * Set the \"offset\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function offset($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->offset($value);\n }\n\n /**\n * Alias to set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function take($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->take($value);\n }\n\n /**\n * Set the \"limit\" value of the query.\n *\n * @param int $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function limit($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->limit($value);\n }\n\n /**\n * Add a \"group limit\" clause to the query.\n *\n * @param int $value\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function groupLimit($value, $column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->groupLimit($value, $column);\n }\n\n /**\n * Set the limit and offset for a given page.\n *\n * @param int $page\n * @param int $perPage\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPage($page, $perPage = 15)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPage($page, $perPage);\n }\n\n /**\n * Constrain the query to the previous \"page\" of results before a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageBeforeId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageBeforeId($perPage, $lastId, $column);\n }\n\n /**\n * Constrain the query to the next \"page\" of results after a given ID.\n *\n * @param int $perPage\n * @param int|null $lastId\n * @param string $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function forPageAfterId($perPage = 15, $lastId = 0, $column = 'id')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->forPageAfterId($perPage, $lastId, $column);\n }\n\n /**\n * Remove all existing orders and optionally add a new order.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @param string $direction\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorder($column = null, $direction = 'asc')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorder($column, $direction);\n }\n\n /**\n * Add descending \"reorder\" clause to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Contracts\\Database\\Query\\Expression|string|null $column\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function reorderDesc($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->reorderDesc($column);\n }\n\n /**\n * Add a union statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @param bool $all\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function union($query, $all = false)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->union($query, $all);\n }\n\n /**\n * Add a union all statement to the query.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*> $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function unionAll($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->unionAll($query);\n }\n\n /**\n * Lock the selected rows in the table.\n *\n * @param string|bool $value\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lock($value = true)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lock($value);\n }\n\n /**\n * Lock the selected rows in the table for updating.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function lockForUpdate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->lockForUpdate();\n }\n\n /**\n * Share lock the selected rows in the table.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function sharedLock()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sharedLock();\n }\n\n /**\n * Register a closure to be invoked before the query is executed.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function beforeQuery($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->beforeQuery($callback);\n }\n\n /**\n * Invoke the \"before query\" modification callbacks.\n *\n * @return void\n * @static\n */\n public static function applyBeforeQueryCallbacks()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->applyBeforeQueryCallbacks();\n }\n\n /**\n * Get the SQL representation of the query.\n *\n * @return string\n * @static\n */\n public static function toSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toSql();\n }\n\n /**\n * Get the raw SQL representation of the query with embedded bindings.\n *\n * @return string\n * @static\n */\n public static function toRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->toRawSql();\n }\n\n /**\n * Get a single expression value from the first result of a query.\n *\n * @return mixed\n * @static\n */\n public static function rawValue($expression, $bindings = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->rawValue($expression, $bindings);\n }\n\n /**\n * Get the count of the total records for the paginator.\n *\n * @param array<string|\\Illuminate\\Contracts\\Database\\Query\\Expression> $columns\n * @return int<0, max>\n * @static\n */\n public static function getCountForPagination($columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getCountForPagination($columns);\n }\n\n /**\n * Concatenate values of a given column as a string.\n *\n * @param string $column\n * @param string $glue\n * @return string\n * @static\n */\n public static function implode($column, $glue = '')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->implode($column, $glue);\n }\n\n /**\n * Determine if any rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function exists()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->exists();\n }\n\n /**\n * Determine if no rows exist for the current query.\n *\n * @return bool\n * @static\n */\n public static function doesntExist()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExist();\n }\n\n /**\n * Execute the given callback if no rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function existsOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->existsOr($callback);\n }\n\n /**\n * Execute the given callback if rows exist for the current query.\n *\n * @return mixed\n * @static\n */\n public static function doesntExistOr($callback)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->doesntExistOr($callback);\n }\n\n /**\n * Retrieve the \"count\" result of the query.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $columns\n * @return int<0, max>\n * @static\n */\n public static function count($columns = '*')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->count($columns);\n }\n\n /**\n * Retrieve the minimum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function min($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->min($column);\n }\n\n /**\n * Retrieve the maximum value of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function max($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->max($column);\n }\n\n /**\n * Retrieve the sum of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function sum($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->sum($column);\n }\n\n /**\n * Retrieve the average of the values of a given column.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function avg($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->avg($column);\n }\n\n /**\n * Alias for the \"avg\" method.\n *\n * @param \\Illuminate\\Contracts\\Database\\Query\\Expression|string $column\n * @return mixed\n * @static\n */\n public static function average($column)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->average($column);\n }\n\n /**\n * Execute an aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return mixed\n * @static\n */\n public static function aggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->aggregate($function, $columns);\n }\n\n /**\n * Execute a numeric aggregate function on the database.\n *\n * @param string $function\n * @param array $columns\n * @return float|int\n * @static\n */\n public static function numericAggregate($function, $columns = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->numericAggregate($function, $columns);\n }\n\n /**\n * Insert new records into the database.\n *\n * @return bool\n * @static\n */\n public static function insert($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insert($values);\n }\n\n /**\n * Insert new records into the database while ignoring errors.\n *\n * @return int<0, max>\n * @static\n */\n public static function insertOrIgnore($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnore($values);\n }\n\n /**\n * Insert a new record and get the value of the primary key.\n *\n * @param string|null $sequence\n * @return int\n * @static\n */\n public static function insertGetId($values, $sequence = null)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertGetId($values, $sequence);\n }\n\n /**\n * Insert new records into the table using a subquery.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertUsing($columns, $query);\n }\n\n /**\n * Insert new records into the table using a subquery while ignoring errors.\n *\n * @param \\Closure|\\Illuminate\\Database\\Query\\Builder|\\Illuminate\\Database\\Eloquent\\Builder<*>|string $query\n * @return int\n * @static\n */\n public static function insertOrIgnoreUsing($columns, $query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->insertOrIgnoreUsing($columns, $query);\n }\n\n /**\n * Update records in a PostgreSQL database using the update from syntax.\n *\n * @return int\n * @static\n */\n public static function updateFrom($values)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateFrom($values);\n }\n\n /**\n * Insert or update a record matching the attributes, and fill it with values.\n *\n * @return bool\n * @static\n */\n public static function updateOrInsert($attributes, $values = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->updateOrInsert($attributes, $values);\n }\n\n /**\n * Increment the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function incrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->incrementEach($columns, $extra);\n }\n\n /**\n * Decrement the given column's values by the given amounts.\n *\n * @param array<string, float|int|numeric-string> $columns\n * @param array<string, mixed> $extra\n * @return int<0, max>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function decrementEach($columns, $extra = [])\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->decrementEach($columns, $extra);\n }\n\n /**\n * Run a truncate statement on the table.\n *\n * @return void\n * @static\n */\n public static function truncate()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n $instance->truncate();\n }\n\n /**\n * Get all of the query builder's columns in a text-only array with all expressions evaluated.\n *\n * @return list<string>\n * @static\n */\n public static function getColumns()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getColumns();\n }\n\n /**\n * Create a raw database expression.\n *\n * @param mixed $value\n * @return \\Illuminate\\Contracts\\Database\\Query\\Expression\n * @static\n */\n public static function raw($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->raw($value);\n }\n\n /**\n * Get the current query value bindings in a flattened array.\n *\n * @return list<mixed>\n * @static\n */\n public static function getBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getBindings();\n }\n\n /**\n * Get the raw array of bindings.\n *\n * @return \\Illuminate\\Database\\Query\\array{ select: list<mixed>,\n * from: list<mixed>,\n * join: list<mixed>,\n * where: list<mixed>,\n * groupBy: list<mixed>,\n * having: list<mixed>,\n * order: list<mixed>,\n * union: list<mixed>,\n * unionOrder: list<mixed>,\n * }\n * @static\n */\n public static function getRawBindings()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getRawBindings();\n }\n\n /**\n * Set the bindings on the query builder.\n *\n * @param list<mixed> $bindings\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function setBindings($bindings, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->setBindings($bindings, $type);\n }\n\n /**\n * Add a binding to the query.\n *\n * @param mixed $value\n * @param \"select\"|\"from\"|\"join\"|\"where\"|\"groupBy\"|\"having\"|\"order\"|\"union\"|\"unionOrder\" $type\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @throws \\InvalidArgumentException\n * @static\n */\n public static function addBinding($value, $type = 'where')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->addBinding($value, $type);\n }\n\n /**\n * Cast the given binding value.\n *\n * @param mixed $value\n * @return mixed\n * @static\n */\n public static function castBinding($value)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->castBinding($value);\n }\n\n /**\n * Merge an array of bindings into our bindings.\n *\n * @param self $query\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function mergeBindings($query)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->mergeBindings($query);\n }\n\n /**\n * Remove all of the expressions from a list of bindings.\n *\n * @param array<mixed> $bindings\n * @return list<mixed>\n * @static\n */\n public static function cleanBindings($bindings)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cleanBindings($bindings);\n }\n\n /**\n * Get the database query processor instance.\n *\n * @return \\Illuminate\\Database\\Query\\Processors\\Processor\n * @static\n */\n public static function getProcessor()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getProcessor();\n }\n\n /**\n * Get the query grammar instance.\n *\n * @return \\Illuminate\\Database\\Query\\Grammars\\Grammar\n * @static\n */\n public static function getGrammar()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->getGrammar();\n }\n\n /**\n * Use the \"write\" PDO connection when executing the query.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function useWritePdo()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->useWritePdo();\n }\n\n /**\n * Clone the query without the given properties.\n *\n * @return static\n * @static\n */\n public static function cloneWithout($properties)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithout($properties);\n }\n\n /**\n * Clone the query without the given bindings.\n *\n * @return static\n * @static\n */\n public static function cloneWithoutBindings($except)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->cloneWithoutBindings($except);\n }\n\n /**\n * Dump the current SQL and bindings.\n *\n * @param mixed $args\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dump(...$args)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dump(...$args);\n }\n\n /**\n * Dump the raw current SQL with embedded bindings.\n *\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function dumpRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dumpRawSql();\n }\n\n /**\n * Die and dump the current SQL and bindings.\n *\n * @return never\n * @static\n */\n public static function dd()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->dd();\n }\n\n /**\n * Die and dump the current SQL with embedded bindings.\n *\n * @return never\n * @static\n */\n public static function ddRawSql()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->ddRawSql();\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function wherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->wherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrPast($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the past to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWherePast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWherePast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the past or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrPast($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrPast($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereFuture($columns);\n }\n\n /**\n * Add a where clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereNowOrFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereFuture($columns);\n }\n\n /**\n * Add an \"or where\" clause to determine if a \"date\" column is in the future or now to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereNowOrFuture($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereNowOrFuture($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @param string $boolean\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereToday($columns, $boolean = 'and')\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereToday($columns, $boolean);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereBeforeToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrBefore($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereAfterToday($columns);\n }\n\n /**\n * Add a \"where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function whereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->whereTodayOrAfter($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is before today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereBeforeToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereBeforeToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or before to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrBefore($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrBefore($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is after today.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereAfterToday($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereAfterToday($columns);\n }\n\n /**\n * Add an \"or where date\" clause to determine if a \"date\" column is today or after to the query.\n *\n * @param array|string $columns\n * @return \\Illuminate\\Database\\Eloquent\\Builder<static>\n * @static\n */\n public static function orWhereTodayOrAfter($columns)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->orWhereTodayOrAfter($columns);\n }\n\n /**\n * Explains the query.\n *\n * @return \\Illuminate\\Support\\Collection\n * @static\n */\n public static function explain()\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->explain();\n }\n\n /**\n * Register a custom macro.\n *\n * @param string $name\n * @param object|callable $macro\n * @param-closure-this static $macro\n * @return void\n * @static\n */\n public static function macro($name, $macro)\n {\n \\Illuminate\\Database\\Query\\Builder::macro($name, $macro);\n }\n\n /**\n * Mix another object into the class.\n *\n * @param object $mixin\n * @param bool $replace\n * @return void\n * @throws \\ReflectionException\n * @static\n */\n public static function mixin($mixin, $replace = true)\n {\n \\Illuminate\\Database\\Query\\Builder::mixin($mixin, $replace);\n }\n\n /**\n * Flush the existing macros.\n *\n * @return void\n * @static\n */\n public static function flushMacros()\n {\n \\Illuminate\\Database\\Query\\Builder::flushMacros();\n }\n\n /**\n * Dynamically handle calls to the class.\n *\n * @param string $method\n * @param array $parameters\n * @return mixed\n * @throws \\BadMethodCallException\n * @static\n */\n public static function macroCall($method, $parameters)\n {\n /** @var \\Illuminate\\Database\\Query\\Builder $instance */\n return $instance->macroCall($method, $parameters);\n }\n\n}\n class Event extends \\Illuminate\\Support\\Facades\\Event {}\n class File extends \\Illuminate\\Support\\Facades\\File {}\n class Gate extends \\Illuminate\\Support\\Facades\\Gate {}\n class Hash extends \\Illuminate\\Support\\Facades\\Hash {}\n class Http extends \\Illuminate\\Support\\Facades\\Http {}\n class Js extends \\Illuminate\\Support\\Js {}\n class Lang extends \\Illuminate\\Support\\Facades\\Lang {}\n class Log extends \\Illuminate\\Support\\Facades\\Log {}\n class Mail extends \\Illuminate\\Support\\Facades\\Mail {}\n class Notification extends \\Illuminate\\Support\\Facades\\Notification {}\n class Number extends \\Illuminate\\Support\\Number {}\n class Password extends \\Illuminate\\Support\\Facades\\Password {}\n class Process extends \\Illuminate\\Support\\Facades\\Process {}\n class Queue extends \\Illuminate\\Support\\Facades\\Queue {}\n class RateLimiter extends \\Illuminate\\Support\\Facades\\RateLimiter {}\n class Redirect extends \\Illuminate\\Support\\Facades\\Redirect {}\n class Request extends \\Illuminate\\Support\\Facades\\Request {}\n class Response extends \\Illuminate\\Support\\Facades\\Response {}\n class Route extends \\Illuminate\\Support\\Facades\\Route {}\n class Schedule extends \\Illuminate\\Support\\Facades\\Schedule {}\n class Schema extends \\Illuminate\\Support\\Facades\\Schema {}\n class Session extends \\Illuminate\\Support\\Facades\\Session {}\n class Storage extends \\Illuminate\\Support\\Facades\\Storage {}\n class Str extends \\Illuminate\\Support\\Str {}\n class Uri extends \\Illuminate\\Support\\Uri {}\n class URL extends \\Illuminate\\Support\\Facades\\URL {}\n class Validator extends \\Illuminate\\Support\\Facades\\Validator {}\n class View extends \\Illuminate\\Support\\Facades\\View {}\n class Vite extends \\Illuminate\\Support\\Facades\\Vite {}\n class AWS extends \\Aws\\Laravel\\AwsFacade {}\n class Avatar extends \\Laravolt\\Avatar\\Facade {}\n class Fractal extends \\Spatie\\Fractal\\Facades\\Fractal {}\n class Laratrust extends \\Laratrust\\LaratrustFacade {}\n class RedisManager extends \\Illuminate\\Support\\Facades\\Redis {}\n class Sentry extends \\Sentry\\Laravel\\Facade {}\n class Statsd extends \\League\\StatsD\\Laravel5\\Facade\\StatsdFacade {}\n class Debugbar extends \\Barryvdh\\Debugbar\\Facades\\Debugbar {}\n class PDF extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Pdf extends \\Barryvdh\\DomPDF\\Facade\\Pdf {}\n class Datadog extends \\ChaseConey\\LaravelDatadogHelper\\Datadog {}\n class Flare extends \\Spatie\\LaravelIgnition\\Facades\\Flare {}\n class Hashids extends \\Vinkla\\Hashids\\Facades\\Hashids {}\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"19","depth":4,"bounds":{"left":0.6296542,"top":0.10055866,"width":0.009640957,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6409575,"top":0.09896249,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.64827126,"top":0.09896249,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\n\"headers\":{\n\"Date\":[\"Thu,07 May 2026 14:21:15 GMT\"],\n \"Content-Type\":[\"application/json;charset=utf-8\"],\n \"Transfer-Encoding\":[\"chunked\"],\n \"Connection\":[\"keep-alive\"],\n \"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\n \"CF-Cache-Status\":[\"DYNAMIC\"],\n \"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\n \"Vary\":[\"origin,\n accept-encoding\"],\n \"access-control-allow-credentials\":[\"false\"],\n \"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\",\n cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\n \"x-content-type-options\":[\"nosniff\"],\n \"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\n \"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,\n 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\n \"Report-To\":[\"{\n\\\"endpoints\\\":[{\n\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\n\\\"group\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"NEL\":[\"{\n\\\"success_fraction\\\":0.01,\n\\\"report_to\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"Server\":[\"cloudflare\"]}} {\n\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\n\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","depth":4,"bounds":{"left":0.42885637,"top":0.09736632,"width":0.5711436,"height":0.8818835},"on_screen":true,"lines":[{"char_start":207,"char_count":30,"bounds":{"left":0.42885637,"top":0.0,"width":0.07513298,"height":0.014365523}},{"char_start":237,"char_count":36,"bounds":{"left":0.42885637,"top":0.0,"width":0.09075798,"height":0.014365523}},{"char_start":273,"char_count":32,"bounds":{"left":0.42885637,"top":0.0,"width":0.080119684,"height":0.014365523}},{"char_start":305,"char_count":79,"bounds":{"left":0.42885637,"top":0.0,"width":0.20212767,"height":0.014365523}},{"char_start":384,"char_count":18,"bounds":{"left":0.42885637,"top":0.0,"width":0.043882977,"height":0.014365523}},{"char_start":402,"char_count":21,"bounds":{"left":0.42885637,"top":0.0,"width":0.051861703,"height":0.014365523}},{"char_start":423,"char_count":48,"bounds":{"left":0.42885637,"top":0.008778931,"width":0.12167553,"height":0.014365523}},{"char_start":471,"char_count":72,"bounds":{"left":0.42885637,"top":0.026336791,"width":0.18384309,"height":0.014365523}},{"char_start":543,"char_count":40,"bounds":{"left":0.42885637,"top":0.043894652,"width":0.10106383,"height":0.014365523}},{"char_start":583,"char_count":41,"bounds":{"left":0.42885637,"top":0.061452515,"width":0.10372341,"height":0.014365523}},{"char_start":624,"char_count":72,"bounds":{"left":0.42885637,"top":0.079010375,"width":0.18384309,"height":0.014365523}},{"char_start":696,"char_count":219,"bounds":{"left":0.42885637,"top":0.096568234,"width":0.56515956,"height":0.014365523}},{"char_start":915,"char_count":83,"bounds":{"left":0.42885637,"top":0.11412609,"width":0.21243352,"height":0.014365523}},{"char_start":998,"char_count":20,"bounds":{"left":0.42885637,"top":0.13168396,"width":0.04920213,"height":0.014365523}},{"char_start":1018,"char_count":17,"bounds":{"left":0.42885637,"top":0.14924182,"width":0.041223403,"height":0.014365523}},{"char_start":1035,"char_count":203,"bounds":{"left":0.42885637,"top":0.16679968,"width":0.52360374,"height":0.014365523}},{"char_start":1238,"char_count":22,"bounds":{"left":0.42885637,"top":0.18435754,"width":0.05418883,"height":0.014365523}},{"char_start":1260,"char_count":23,"bounds":{"left":0.42885637,"top":0.2019154,"width":0.056848403,"height":0.014365523}},{"char_start":1283,"char_count":10,"bounds":{"left":0.42885637,"top":0.21947326,"width":0.023271276,"height":0.014365523}},{"char_start":1293,"char_count":27,"bounds":{"left":0.42885637,"top":0.23703113,"width":0.06715426,"height":0.014365523}},{"char_start":1320,"char_count":26,"bounds":{"left":0.42885637,"top":0.254589,"width":0.06482713,"height":0.014365523}},{"char_start":1346,"char_count":23,"bounds":{"left":0.42885637,"top":0.27214685,"width":0.056848403,"height":0.014365523}},{"char_start":1369,"char_count":28,"bounds":{"left":0.42885637,"top":0.2897047,"width":0.06981383,"height":0.014365523}}],"value":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\n\"headers\":{\n\"Date\":[\"Thu,07 May 2026 14:21:15 GMT\"],\n \"Content-Type\":[\"application/json;charset=utf-8\"],\n \"Transfer-Encoding\":[\"chunked\"],\n \"Connection\":[\"keep-alive\"],\n \"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\n \"CF-Cache-Status\":[\"DYNAMIC\"],\n \"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\n \"Vary\":[\"origin,\n accept-encoding\"],\n \"access-control-allow-credentials\":[\"false\"],\n \"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\",\n cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\n \"x-content-type-options\":[\"nosniff\"],\n \"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\n \"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu,\n 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\n \"Report-To\":[\"{\n\\\"endpoints\\\":[{\n\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\n\\\"group\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"NEL\":[\"{\n\\\"success_fraction\\\":0.01,\n\\\"report_to\\\":\\\"cf-nel\\\",\n\\\"max_age\\\":604800}\"],\n\"Server\":[\"cloudflare\"]}} {\n\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\n\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6908084031734223470
|
-4461000910654451772
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20725-handle-HS-search Project: faVsco.js, menu
JY-20725-handle-HS-search-rate-limit, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
Analyzing…
<?php
/* @noinspection ALL */
// @formatter:off
// phpcs:ignoreFile
/**
* A helper file for Laravel, to provide autocomplete information to your IDE
* Generated for Laravel 12.33.0.
*
* This file should not be included in your code, only analyzed by your IDE!
*
* @author Barry vd. Heuvel <[EMAIL]>
* @see [URL_WITH_CREDENTIALS] string
* @static
*/
public static function inferBasePath()
{
return \Illuminate\Foundation\Application::inferBasePath();
}
/**
* Get the version number of the application.
*
* @return string
* @static
*/
public static function version()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->version();
}
/**
* Run the given array of bootstrap classes.
*
* @param string[] $bootstrappers
* @return void
* @static
*/
public static function bootstrapWith($bootstrappers)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->bootstrapWith($bootstrappers);
}
/**
* Register a callback to run after loading the environment.
*
* @param \Closure $callback
* @return void
* @static
*/
public static function afterLoadingEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterLoadingEnvironment($callback);
}
/**
* Register a callback to run before a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function beforeBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->beforeBootstrapping($bootstrapper, $callback);
}
/**
* Register a callback to run after a bootstrapper.
*
* @param string $bootstrapper
* @param \Closure $callback
* @return void
* @static
*/
public static function afterBootstrapping($bootstrapper, $callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->afterBootstrapping($bootstrapper, $callback);
}
/**
* Determine if the application has been bootstrapped before.
*
* @return bool
* @static
*/
public static function hasBeenBootstrapped()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasBeenBootstrapped();
}
/**
* Set the base path for the application.
*
* @param string $basePath
* @return \Illuminate\Foundation\Application
* @static
*/
public static function setBasePath($basePath)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->setBasePath($basePath);
}
/**
* Get the path to the application "app" directory.
*
* @param string $path
* @return string
* @static
*/
public static function path($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->path($path);
}
/**
* Set the application directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useAppPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useAppPath($path);
}
/**
* Get the base path of the Laravel installation.
*
* @param string $path
* @return string
* @static
*/
public static function basePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->basePath($path);
}
/**
* Get the path to the bootstrap directory.
*
* @param string $path
* @return string
* @static
*/
public static function bootstrapPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bootstrapPath($path);
}
/**
* Get the path to the service provider list in the bootstrap directory.
*
* @return string
* @static
*/
public static function getBootstrapProvidersPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getBootstrapProvidersPath();
}
/**
* Set the bootstrap file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useBootstrapPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useBootstrapPath($path);
}
/**
* Get the path to the application configuration files.
*
* @param string $path
* @return string
* @static
*/
public static function configPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configPath($path);
}
/**
* Set the configuration directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useConfigPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useConfigPath($path);
}
/**
* Get the path to the database directory.
*
* @param string $path
* @return string
* @static
*/
public static function databasePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->databasePath($path);
}
/**
* Set the database directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useDatabasePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useDatabasePath($path);
}
/**
* Get the path to the language files.
*
* @param string $path
* @return string
* @static
*/
public static function langPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->langPath($path);
}
/**
* Set the language file directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useLangPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useLangPath($path);
}
/**
* Get the path to the public / web directory.
*
* @param string $path
* @return string
* @static
*/
public static function publicPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->publicPath($path);
}
/**
* Set the public / web directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function usePublicPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->usePublicPath($path);
}
/**
* Get the path to the storage directory.
*
* @param string $path
* @return string
* @static
*/
public static function storagePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->storagePath($path);
}
/**
* Set the storage directory.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useStoragePath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useStoragePath($path);
}
/**
* Get the path to the resources directory.
*
* @param string $path
* @return string
* @static
*/
public static function resourcePath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resourcePath($path);
}
/**
* Get the path to the views directory.
*
* This method returns the first configured path in the array of view paths.
*
* @param string $path
* @return string
* @static
*/
public static function viewPath($path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->viewPath($path);
}
/**
* Join the given paths together.
*
* @param string $basePath
* @param string $path
* @return string
* @static
*/
public static function joinPaths($basePath, $path = '')
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->joinPaths($basePath, $path);
}
/**
* Get the path to the environment file directory.
*
* @return string
* @static
*/
public static function environmentPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentPath();
}
/**
* Set the directory for the environment file.
*
* @param string $path
* @return \Illuminate\Foundation\Application
* @static
*/
public static function useEnvironmentPath($path)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->useEnvironmentPath($path);
}
/**
* Set the environment file to be loaded during bootstrapping.
*
* @param string $file
* @return \Illuminate\Foundation\Application
* @static
*/
public static function loadEnvironmentFrom($file)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->loadEnvironmentFrom($file);
}
/**
* Get the environment file the application is using.
*
* @return string
* @static
*/
public static function environmentFile()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFile();
}
/**
* Get the fully qualified path to the environment file.
*
* @return string
* @static
*/
public static function environmentFilePath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environmentFilePath();
}
/**
* Get or check the current application environment.
*
* @param string|array $environments
* @return string|bool
* @static
*/
public static function environment(...$environments)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->environment(...$environments);
}
/**
* Determine if the application is in the local environment.
*
* @return bool
* @static
*/
public static function isLocal()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocal();
}
/**
* Determine if the application is in the production environment.
*
* @return bool
* @static
*/
public static function isProduction()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isProduction();
}
/**
* Detect the application's current environment.
*
* @param \Closure $callback
* @return string
* @static
*/
public static function detectEnvironment($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->detectEnvironment($callback);
}
/**
* Determine if the application is running in the console.
*
* @return bool
* @static
*/
public static function runningInConsole()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningInConsole();
}
/**
* Determine if the application is running any of the given console commands.
*
* @param string|array $commands
* @return bool
* @static
*/
public static function runningConsoleCommand(...$commands)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningConsoleCommand(...$commands);
}
/**
* Determine if the application is running unit tests.
*
* @return bool
* @static
*/
public static function runningUnitTests()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->runningUnitTests();
}
/**
* Determine if the application is running with debug mode enabled.
*
* @return bool
* @static
*/
public static function hasDebugModeEnabled()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasDebugModeEnabled();
}
/**
* Register a new registered listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function registered($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registered($callback);
}
/**
* Register all of the configured providers.
*
* @return void
* @static
*/
public static function registerConfiguredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerConfiguredProviders();
}
/**
* Register a service provider with the application.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @param bool $force
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function register($provider, $force = false)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->register($provider, $force);
}
/**
* Get the registered service provider instance if it exists.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return \Illuminate\Support\ServiceProvider|null
* @static
*/
public static function getProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProvider($provider);
}
/**
* Get the registered service provider instances if any exist.
*
* @param \Illuminate\Support\ServiceProvider|string $provider
* @return array
* @static
*/
public static function getProviders($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getProviders($provider);
}
/**
* Resolve a service provider instance from the class name.
*
* @param string $provider
* @return \Illuminate\Support\ServiceProvider
* @static
*/
public static function resolveProvider($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolveProvider($provider);
}
/**
* Load and boot all of the remaining deferred providers.
*
* @return void
* @static
*/
public static function loadDeferredProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProviders();
}
/**
* Load the provider for a deferred service.
*
* @param string $service
* @return void
* @static
*/
public static function loadDeferredProvider($service)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->loadDeferredProvider($service);
}
/**
* Register a deferred provider and service.
*
* @param string $provider
* @param string|null $service
* @return void
* @static
*/
public static function registerDeferredProvider($provider, $service = null)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerDeferredProvider($provider, $service);
}
/**
* Resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function make($abstract, $parameters = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->make($abstract, $parameters);
}
/**
* Determine if the given abstract type has been bound.
*
* @param string $abstract
* @return bool
* @static
*/
public static function bound($abstract)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->bound($abstract);
}
/**
* Determine if the application has booted.
*
* @return bool
* @static
*/
public static function isBooted()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isBooted();
}
/**
* Boot the application's service providers.
*
* @return void
* @static
*/
public static function boot()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->boot();
}
/**
* Register a new boot listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booting($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booting($callback);
}
/**
* Register a new "booted" listener.
*
* @param callable $callback
* @return void
* @static
*/
public static function booted($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->booted($callback);
}
/**
* {@inheritdoc}
*
* @return \Symfony\Component\HttpFoundation\Response
* @static
*/
public static function handle($request, $type = 1, $catch = true)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handle($request, $type, $catch);
}
/**
* Handle the incoming HTTP request and send the response to the browser.
*
* @param \Illuminate\Http\Request $request
* @return void
* @static
*/
public static function handleRequest($request)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->handleRequest($request);
}
/**
* Handle the incoming Artisan command.
*
* @param \Symfony\Component\Console\Input\InputInterface $input
* @return int
* @static
*/
public static function handleCommand($input)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->handleCommand($input);
}
/**
* Determine if the framework's base configuration should be merged.
*
* @return bool
* @static
*/
public static function shouldMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldMergeFrameworkConfiguration();
}
/**
* Indicate that the framework's base configuration should not be merged.
*
* @return \Illuminate\Foundation\Application
* @static
*/
public static function dontMergeFrameworkConfiguration()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->dontMergeFrameworkConfiguration();
}
/**
* Determine if middleware has been disabled for the application.
*
* @return bool
* @static
*/
public static function shouldSkipMiddleware()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->shouldSkipMiddleware();
}
/**
* Get the path to the cached services.php file.
*
* @return string
* @static
*/
public static function getCachedServicesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedServicesPath();
}
/**
* Get the path to the cached packages.php file.
*
* @return string
* @static
*/
public static function getCachedPackagesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedPackagesPath();
}
/**
* Determine if the application configuration is cached.
*
* @return bool
* @static
*/
public static function configurationIsCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->configurationIsCached();
}
/**
* Get the path to the configuration cache file.
*
* @return string
* @static
*/
public static function getCachedConfigPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedConfigPath();
}
/**
* Determine if the application routes are cached.
*
* @return bool
* @static
*/
public static function routesAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->routesAreCached();
}
/**
* Get the path to the routes cache file.
*
* @return string
* @static
*/
public static function getCachedRoutesPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedRoutesPath();
}
/**
* Determine if the application events are cached.
*
* @return bool
* @static
*/
public static function eventsAreCached()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->eventsAreCached();
}
/**
* Get the path to the events cache file.
*
* @return string
* @static
*/
public static function getCachedEventsPath()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getCachedEventsPath();
}
/**
* Add new prefix to list of absolute path prefixes.
*
* @param string $prefix
* @return \Illuminate\Foundation\Application
* @static
*/
public static function addAbsoluteCachePathPrefix($prefix)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->addAbsoluteCachePathPrefix($prefix);
}
/**
* Get an instance of the maintenance mode manager implementation.
*
* @return \Illuminate\Contracts\Foundation\MaintenanceMode
* @static
*/
public static function maintenanceMode()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->maintenanceMode();
}
/**
* Determine if the application is currently down for maintenance.
*
* @return bool
* @static
*/
public static function isDownForMaintenance()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDownForMaintenance();
}
/**
* Throw an HttpException with the given data.
*
* @param int $code
* @param string $message
* @param array $headers
* @return never
* @throws \Symfony\Component\HttpKernel\Exception\HttpException
* @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
* @static
*/
public static function abort($code, $message = '', $headers = [])
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->abort($code, $message, $headers);
}
/**
* Register a terminating callback with the application.
*
* @param callable|string $callback
* @return \Illuminate\Foundation\Application
* @static
*/
public static function terminating($callback)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->terminating($callback);
}
/**
* Terminate the application.
*
* @return void
* @static
*/
public static function terminate()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->terminate();
}
/**
* Get the service providers that have been loaded.
*
* @return array<string, bool>
* @static
*/
public static function getLoadedProviders()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLoadedProviders();
}
/**
* Determine if the given service provider is loaded.
*
* @param string $provider
* @return bool
* @static
*/
public static function providerIsLoaded($provider)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->providerIsLoaded($provider);
}
/**
* Get the application's deferred services.
*
* @return array
* @static
*/
public static function getDeferredServices()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getDeferredServices();
}
/**
* Set the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function setDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setDeferredServices($services);
}
/**
* Determine if the given service is a deferred service.
*
* @param string $service
* @return bool
* @static
*/
public static function isDeferredService($service)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isDeferredService($service);
}
/**
* Add an array of services to the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function addDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->addDeferredServices($services);
}
/**
* Remove an array of services from the application's deferred services.
*
* @param array $services
* @return void
* @static
*/
public static function removeDeferredServices($services)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->removeDeferredServices($services);
}
/**
* Configure the real-time facade namespace.
*
* @param string $namespace
* @return void
* @static
*/
public static function provideFacades($namespace)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->provideFacades($namespace);
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function getLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getLocale();
}
/**
* Get the current application locale.
*
* @return string
* @static
*/
public static function currentLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->currentLocale();
}
/**
* Get the current application fallback locale.
*
* @return string
* @static
*/
public static function getFallbackLocale()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getFallbackLocale();
}
/**
* Set the current application locale.
*
* @param string $locale
* @return void
* @static
*/
public static function setLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setLocale($locale);
}
/**
* Set the current application fallback locale.
*
* @param string $fallbackLocale
* @return void
* @static
*/
public static function setFallbackLocale($fallbackLocale)
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->setFallbackLocale($fallbackLocale);
}
/**
* Determine if the application locale is the given locale.
*
* @param string $locale
* @return bool
* @static
*/
public static function isLocale($locale)
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isLocale($locale);
}
/**
* Register the core class aliases in the container.
*
* @return void
* @static
*/
public static function registerCoreContainerAliases()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->registerCoreContainerAliases();
}
/**
* Flush the container of all bindings and resolved instances.
*
* @return void
* @static
*/
public static function flush()
{
/** @var \Illuminate\Foundation\Application $instance */
$instance->flush();
}
/**
* Get the application namespace.
*
* @return string
* @throws \RuntimeException
* @static
*/
public static function getNamespace()
{
/** @var \Illuminate\Foundation\Application $instance */
return $instance->getNamespace();
}
/**
* Define a contextual binding.
*
* @param array|string $concrete
* @return \Illuminate\Contracts\Container\ContextualBindingBuilder
* @static
*/
public static function when($concrete)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->when($concrete);
}
/**
* Define a contextual binding based on an attribute.
*
* @param string $attribute
* @param \Closure $handler
* @return void
* @static
*/
public static function whenHasAttribute($attribute, $handler)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->whenHasAttribute($attribute, $handler);
}
/**
* Returns true if the container can return an entry for the given identifier.
*
* Returns false otherwise.
*
* `has($id)` returning true does not mean that `get($id)` will not throw an exception.
* It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
*
* @return bool
* @param string $id Identifier of the entry to look for.
* @return bool
* @static
*/
public static function has($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->has($id);
}
/**
* Determine if the given abstract type has been resolved.
*
* @param string $abstract
* @return bool
* @static
*/
public static function resolved($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->resolved($abstract);
}
/**
* Determine if a given type is shared.
*
* @param string $abstract
* @return bool
* @static
*/
public static function isShared($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isShared($abstract);
}
/**
* Determine if a given string is an alias.
*
* @param string $name
* @return bool
* @static
*/
public static function isAlias($name)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->isAlias($name);
}
/**
* Register a binding with the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @throws \TypeError
* @throws ReflectionException
* @static
*/
public static function bind($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bind($abstract, $concrete, $shared);
}
/**
* Determine if the container has a method binding.
*
* @param string $method
* @return bool
* @static
*/
public static function hasMethodBinding($method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->hasMethodBinding($method);
}
/**
* Bind a callback to resolve with Container::call.
*
* @param array|string $method
* @param \Closure $callback
* @return void
* @static
*/
public static function bindMethod($method, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindMethod($method, $callback);
}
/**
* Get the method binding for the given method.
*
* @param string $method
* @param mixed $instance
* @return mixed
* @static
*/
public static function callMethodBinding($method, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->callMethodBinding($method, $instance);
}
/**
* Add a contextual binding to the container.
*
* @param string $concrete
* @param \Closure|string $abstract
* @param \Closure|string $implementation
* @return void
* @static
*/
public static function addContextualBinding($concrete, $abstract, $implementation)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->addContextualBinding($concrete, $abstract, $implementation);
}
/**
* Register a binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @param bool $shared
* @return void
* @static
*/
public static function bindIf($abstract, $concrete = null, $shared = false)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->bindIf($abstract, $concrete, $shared);
}
/**
* Register a shared binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singleton($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singleton($abstract, $concrete);
}
/**
* Register a shared binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function singletonIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->singletonIf($abstract, $concrete);
}
/**
* Register a scoped binding in the container.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scoped($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scoped($abstract, $concrete);
}
/**
* Register a scoped binding if it hasn't already been registered.
*
* @param \Closure|string $abstract
* @param \Closure|string|null $concrete
* @return void
* @static
*/
public static function scopedIf($abstract, $concrete = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->scopedIf($abstract, $concrete);
}
/**
* "Extend" an abstract type in the container.
*
* @param string $abstract
* @param \Closure $closure
* @return void
* @throws \InvalidArgumentException
* @static
*/
public static function extend($abstract, $closure)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->extend($abstract, $closure);
}
/**
* Register an existing instance as shared in the container.
*
* @template TInstance of mixed
* @param string $abstract
* @param TInstance $instance
* @return TInstance
* @static
*/
public static function instance($abstract, $instance)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->instance($abstract, $instance);
}
/**
* Assign a set of tags to a given binding.
*
* @param array|string $abstracts
* @param mixed $tags
* @return void
* @static
*/
public static function tag($abstracts, $tags)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->tag($abstracts, $tags);
}
/**
* Resolve all of the bindings for a given tag.
*
* @param string $tag
* @return iterable
* @static
*/
public static function tagged($tag)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->tagged($tag);
}
/**
* Alias a type to a different name.
*
* @param string $abstract
* @param string $alias
* @return void
* @throws \LogicException
* @static
*/
public static function alias($abstract, $alias)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
$instance->alias($abstract, $alias);
}
/**
* Bind a new callback to an abstract's rebind event.
*
* @param string $abstract
* @param \Closure $callback
* @return mixed
* @static
*/
public static function rebinding($abstract, $callback)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->rebinding($abstract, $callback);
}
/**
* Refresh an instance on the given target and method.
*
* @param string $abstract
* @param mixed $target
* @param string $method
* @return mixed
* @static
*/
public static function refresh($abstract, $target, $method)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->refresh($abstract, $target, $method);
}
/**
* Wrap the given closure such that its dependencies will be injected when executed.
*
* @param \Closure $callback
* @param array $parameters
* @return \Closure
* @static
*/
public static function wrap($callback, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->wrap($callback, $parameters);
}
/**
* Call the given Closure / class@method and inject its dependencies.
*
* @param callable|string $callback
* @param array<string, mixed> $parameters
* @param string|null $defaultMethod
* @return mixed
* @throws \InvalidArgumentException
* @static
*/
public static function call($callback, $parameters = [], $defaultMethod = null)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->call($callback, $parameters, $defaultMethod);
}
/**
* Get a closure to resolve the given type from the container.
*
* @template TClass of object
* @param string|class-string<TClass> $abstract
* @return ($abstract is class-string<TClass> ? \Closure(): TClass : \Closure(): mixed)
* @static
*/
public static function factory($abstract)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->factory($abstract);
}
/**
* An alias function name for make().
*
* @template TClass of object
* @param string|class-string<TClass>|callable $abstract
* @param array $parameters
* @return ($abstract is class-string<TClass> ? TClass : mixed)
* @throws \Illuminate\Contracts\Container\BindingResolutionException
* @static
*/
public static function makeWith($abstract, $parameters = [])
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $instance */
return $instance->makeWith($abstract, $parameters);
}
/**
* {@inheritdoc}
*
* @template TClass of object
* @param string|class-string<TClass> $id
* @return ($id is class-string<TClass> ? TClass : mixed)
* @static
*/
public static function get($id)
{
//Method inherited from \Illuminate\Container\Container
/** @var \Illuminate\Foundation\Application $i...
|
16364
|
NULL
|
NULL
|
NULL
|
|
40275
|
1487
|
10
|
2026-05-14T08:30:02.812461+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778747402812_m1.jpg...
|
PhpStorm
|
faVsco.js – accounts [EU]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"25","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"8179134","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"8179134","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e5f7d9c-6dc0-4687-a39f-57c3167874fa","depth":6,"on_screen":true,"role_description":"cell"}]...
|
5644628853052281172
|
1347515447572114052
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa...
|
40273
|
NULL
|
NULL
|
NULL
|
|
40276
|
1488
|
8
|
2026-05-14T08:30:02.793344+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778747402793_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [EU]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.37200797,"top":0.22426178,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"25","depth":4,"bounds":{"left":0.38198137,"top":0.22426178,"width":0.009973404,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39361703,"top":0.22266561,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.40093085,"top":0.22266561,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.40824467,"top":0.14365523,"width":0.1419548,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"8179134","depth":6,"bounds":{"left":0.5505319,"top":0.16520351,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"8179134","depth":7,"bounds":{"left":0.5505319,"top":0.16520351,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e5f7d9c-6dc0-4687-a39f-57c3167874fa","depth":6,"bounds":{"left":0.5505319,"top":0.1867518,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"}]...
|
5644628853052281172
|
1347515447572114052
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
40277
|
1487
|
11
|
2026-05-14T08:30:04.945735+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778747404945_m1.jpg...
|
PhpStorm
|
faVsco.js – accounts [EU]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
1534392770
519
519
0
436
436
0
90806037738
90806037738
1534392770
16605
16605
0
1534392770
1534392770
1534392770
nordhusene.dk...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"25","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"8179134","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"8179134","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e5f7d9c-6dc0-4687-a39f-57c3167874fa","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e5f7d9c-6dc0-4687-a39f-57c3167874fa","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"519","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"519","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"436","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"436","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"90806037738","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"90806037738","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"16605","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"16605","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1534392770","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1534392770","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"nordhusene.dk","depth":6,"on_screen":true,"role_description":"cell"}]...
|
8802780848095986227
|
1347515447572114052
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
1534392770
519
519
0
436
436
0
90806037738
90806037738
1534392770
16605
16605
0
1534392770
1534392770
1534392770
nordhusene.dk...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
40278
|
1488
|
9
|
2026-05-14T08:30:04.963100+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-14/1778 /Users/lukas/.screenpipe/data/data/2026-05-14/1778747404963_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [EU]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
1534392770
519
519
0
436
436
0
90806037738
90806037738
1534392770
16605
16605
0
1534392770
1534392770
1534392770
nordhusene.dk
nordhusene.dk
1534392770
+4564403700
+4564403700
1534392770
<null>
<null>
1534392770
REAL_ESTATE
REAL_ESTATE
1534392770
nordhusene.dk
nordhusene.dk
1534392770
/ce12155c-3317-4e3c-a080-bc1f249da896/avatars/90806037738.png
/ce12155c-3317-4e3c-a080-bc1f249da896/avatars/90806037738.png
1534392770
DK
DK
1534392770
0
0
0
<null>
<null>
1534392770
2025-07-07 20:16:12
2025-07-07 20:16:12
1534392770
2025-02-04 08:13:31
2025-02-04 08:13:31
1534392770
2026-04-26 03:14:02
2026-04-26 03:14:02
1534392770
id = 8179134
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.37200797,"top":0.22426178,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"25","depth":4,"bounds":{"left":0.38198137,"top":0.22426178,"width":0.009973404,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39361703,"top":0.22266561,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.40093085,"top":0.22266561,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Services\\Crm\\Hubspot;\n\nuse Carbon\\Carbon;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Psr\\Log\\LoggerInterface;\n\nclass PayloadBuilder\n{\n public const int MAX_SEARCH_REQUEST_LIMIT = 200;\n\n private const int MAX_FILTER_SIZE = 100;\n\n private const string SORT_PROPERTY = 'hs_timestamp';\n private const string ENGAGEMENT_MEETINGS = 'meetings';\n\n public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($engagementType === self::ENGAGEMENT_MEETINGS) {\n $payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_timestamp',\n 'hs_activity_type',\n ];\n } else {\n $payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp'];\n }\n\n return $payload;\n }\n\n public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array\n {\n $lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array\n {\n $lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';\n\n $payload = [\n 'filters' => [\n [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'GT',\n 'value' => $since->getPreciseTimestamp(3),\n ],\n [\n 'propertyName' => 'hubspot_owner_id',\n 'operator' => 'EQ',\n 'value' => $crmId,\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_object_id',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($to) {\n $payload['filters'][] = [\n 'propertyName' => $lastUpdateDate,\n 'operator' => 'LT',\n 'value' => $to->getPreciseTimestamp(3),\n ];\n }\n\n $payload['properties'] = $properties;\n\n return $payload;\n }\n\n private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array\n {\n $filters = [];\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'IN',\n 'values' => ['SCHEDULED', 'RESCHEDULED'],\n ],\n ],\n ];\n\n $filters[] = [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n [\n 'propertyName' => 'hs_meeting_outcome',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ],\n ];\n\n return $filters;\n }\n\n private function buildTaskFiltersForLinkToTask($objectType, $objectId): array\n {\n return [\n [\n 'filters' => [\n $this->getAssociatedObjectFilter($objectType, $objectId),\n ],\n ],\n ];\n }\n\n private function getAssociatedObjectFilter(string $objectType, string $objectId): array\n {\n return [\n 'propertyName' => 'associations.' . $objectType,\n 'operator' => 'EQ',\n 'value' => $objectId,\n ];\n }\n\n public function generatePlaybackURLSearchPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $activityProvider,\n ],\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'operator' => 'BETWEEN',\n 'value' => intval($from->getPreciseTimestamp(3)),\n 'highValue' => intval($to->getPreciseTimestamp(3)),\n ],\n ],\n 'sorts' => [\n [\n 'propertyName' => 'hs_timestamp',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $this->getSearchCallAttributes(),\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n 'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n }\n\n public function getSearchCallAttributes(): array\n {\n return [\n 'hs_timestamp',\n 'hs_call_recording_url',\n 'hs_call_body',\n 'hs_call_status',\n 'hs_call_to_number',\n 'hs_call_from_number',\n 'hs_call_duration',\n 'hs_call_disposition',\n 'hs_call_title',\n 'hs_call_direction',\n 'hubspot_owner_id',\n 'hs_activity_type',\n 'hs_call_external_id',\n 'hs_call_source',\n ];\n }\n\n public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array\n {\n $updateObjectsData = [];\n\n foreach ($crmUpdateData as $data) {\n $updateObjectsData[] = [\n 'id' => $data['crm_id'],\n 'properties' => [\n 'hs_call_body' => $data['hs_call_body'] .\n '<p><span style=\"font-size: 13.3333px; line-height: 16px;\">' .\n '<a href=\"' . $data['playback_url'] . '\" target=\"_blank\">Review in Jiminny</a> ▶️</span></p>',\n ],\n ];\n }\n\n return ['inputs' => $updateObjectsData];\n }\n\n public function generateSearchCallByTokenPayload(string $playbackURLToken): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => 'hs_call_recording_url',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $playbackURLToken,\n ],\n ],\n 'properties' => [\n 'hs_call_recording_url',\n 'hs_call_body',\n ],\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload for phone search based on the specified parameters.\n *\n * @param string $phone The phone number to search.\n * @param bool $isAlternativeSearch Indicates if an alternative search should be performed\n * if the first search fails to find a match. The first search request should cover most of the cases.\n */\n public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array\n {\n $filterPropertyNames = $isAlternativeSearch ?\n ['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :\n ['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];\n\n $filterGroups = array_map(function ($propertyName) use ($phone) {\n return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);\n }, $filterPropertyNames);\n\n $properties = [\n 'email',\n 'firstname',\n 'lastname',\n 'country',\n 'phone',\n 'mobilephone',\n 'jobtitle',\n 'hubspot_owner_id',\n 'associatedcompanyid',\n 'photo',\n ];\n\n return $this->createPayload($filterGroups, $properties);\n }\n\n /**\n * Creates a filter group with the specified parameters.\n */\n private function createFilterGroup(string $propertyName, string $operator, $value): array\n {\n return [\n 'filters' => [\n [\n 'propertyName' => $propertyName,\n 'operator' => $operator,\n 'value' => $value,\n ],\n ],\n ];\n }\n\n /**\n * Creates a payload with the specified filter groups and properties.\n */\n private function createPayload(array $filterGroups, array $properties): array\n {\n return [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => 'modifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n 'properties' => $properties,\n 'limit' => 1,\n ];\n }\n\n /**\n * Generates a payload to find related activities based on the specified data and object type.\n * The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)\n * and are associated with any of the provided prospect types (contact or company).\n *\n * @param array $data An associative array containing the following keys:\n * - 'from': The start time for the activity search (timestamp).\n * - 'to': The end time for the activity search (timestamp).\n * - 'contact': (optional) The ID of the associated contact.\n * - 'company': (optional) The ID of the associated company.\n * @param string $objectType The type of engagement to search for (meeting or other type like call).\n *\n * @return array The payload array to be used for searching related activities.\n */\n public function getFindRelatedActivityPayload(array $data, string $objectType): array\n {\n $payload = [\n 'sorts' => [\n [\n 'propertyName' => self::SORT_PROPERTY,\n 'direction' => 'DESCENDING',\n ],\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n if ($objectType === self::ENGAGEMENT_MEETINGS) {\n $payload['properties'] = [\n 'hs_meeting_title',\n 'hs_meeting_outcome',\n 'hs_activity_type',\n 'hs_timestamp',\n 'hubspot_owner_id',\n 'hs_meeting_body',\n 'hs_internal_meeting_notes',\n 'hs_meeting_location',\n 'hs_meeting_start_time',\n 'hs_meeting_end_time',\n ];\n } else {\n $payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];\n }\n\n $timeFiltersWithEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'LTE',\n 'value' => $data['to'],\n ],\n ];\n\n $timeFiltersWithoutEndTime = [\n [\n 'propertyName' => 'hs_meeting_start_time',\n 'operator' => 'GTE',\n 'value' => $data['from'],\n ],\n [\n 'propertyName' => 'hs_meeting_end_time',\n 'operator' => 'NOT_HAS_PROPERTY',\n ],\n ];\n\n $payload['filterGroups'] = [];\n\n $associationTypes = ['contact', 'company'];\n foreach ($associationTypes as $type) {\n if (! empty($data[$type])) {\n $filterGroupWithEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithEndTime;\n\n $filterGroupWithoutEndTime = [\n 'filters' => array_merge(\n $timeFiltersWithoutEndTime,\n [$this->getAssociatedObjectFilter($type, $data[$type])]\n ),\n ];\n $payload['filterGroups'][] = $filterGroupWithoutEndTime ;\n }\n }\n\n return $payload;\n }\n\n /** Parameters\n * [\n * 'accountId' => $crmAccountId,\n * 'sortBy' => $sortBy,\n * 'sortDir' => $sortDir,\n * 'onlyOpen' => $onlyOpen,\n * 'closedStages' => $this->getClosedDealStages(),\n * 'userId' => $userId,\n * ];\n */\n public function generateOpportunitiesSearchPayload(\n Configuration $config,\n string $crmAccountId,\n array $closedStages,\n ): array {\n $closedFilters = [];\n $filterGroups = [];\n $onlyOpen = true;\n\n switch ($config->getOpportunityAssignmentRule()) {\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'DESCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:\n $sortBy = 'createdate';\n $sortDir = 'ASCENDING';\n\n break;\n\n case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:\n default:\n $sortBy = 'modifieddate';\n $sortDir = 'DESCENDING';\n $onlyOpen = false;\n }\n\n $baseFilters = [\n [\n 'propertyName' => 'associations.company',\n 'operator' => 'EQ',\n 'value' => $crmAccountId,\n ],\n ];\n\n // Handle closed stages in chunks\n if ($onlyOpen) {\n foreach (['won', 'lost'] as $key) {\n if (! empty($closedStages[$key])) {\n $chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);\n foreach ($chunks as $chunk) {\n $closedFilters[] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $chunk,\n ];\n }\n }\n }\n }\n\n $filterGroups[] = [\n 'filters' => array_merge($baseFilters, $closedFilters),\n ];\n\n $payload = [\n 'filterGroups' => $filterGroups,\n 'sorts' => [\n [\n 'propertyName' => $sortBy,\n 'direction' => $sortDir,\n ],\n ],\n 'properties' => [\n 'dealname',\n 'amount',\n 'hubspot_owner_id',\n 'pipeline',\n 'dealstage',\n 'closedate',\n 'deal_currency_code',\n ],\n 'limit' => self::MAX_SEARCH_REQUEST_LIMIT,\n ];\n\n $logger = app(LoggerInterface::class);\n $logger->info('[HubSpot] CRM Search requested', [\n 'request' => $payload,\n ]);\n\n return $payload;\n }\n\n /**\n * Converts v1 payload data to v3\n */\n public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array\n {\n // Use this mapping until the whole Hubspot V1 is dropped.\n $properties = [\n 'hubspot_owner_id' => $engagement['ownerId'],\n 'hs_timestamp' => $engagement['timestamp'],\n ];\n\n // $engagement['activityType'] is $activity->category->name\n if (isset($engagement['activityType'])) {\n $properties['hs_activity_type'] = $engagement['activityType'];\n }\n\n $metadataKeyMap = [\n 'hs_meeting_outcome' => 'meetingOutcome',\n 'hs_meeting_title' => 'title',\n 'hs_meeting_start_time' => 'startTime',\n 'hs_meeting_end_time' => 'endTime',\n 'hs_meeting_body' => 'body',\n 'hs_internal_meeting_notes' => 'internalMeetingNotes',\n ];\n\n foreach ($metadataKeyMap as $newKey => $oldKey) {\n if (isset($metadata[$oldKey])) {\n $properties[$newKey] = $metadata[$oldKey];\n unset($metadata[$oldKey]);\n }\n }\n\n $properties = [\n ...$properties,\n ...$metadata, // custom fields\n ];\n\n $response = [\n 'properties' => $properties,\n ];\n\n if (! empty($associations)) {\n $response['associations'] = $associations;\n }\n\n return $response;\n }\n\n /**\n * Generate a payload to search for contacts by name.\n * The search is a token search in firstname or lastname\n */\n public function generateSearchContactsByNamePayload(string $name, array $fields): array\n {\n $firstNameFilter = [\n 'propertyName' => 'firstname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n $lastNameFilter = [\n 'propertyName' => 'lastname',\n 'operator' => 'CONTAINS_TOKEN',\n 'value' => $name,\n ];\n\n return [\n 'filterGroups' => [\n [\n 'filters' => [$firstNameFilter],\n ],\n [\n 'filters' => [$lastNameFilter],\n ],\n ],\n 'properties' => $fields,\n 'sorts' => [\n [\n 'propertyName' => 'lastmodifieddate',\n 'direction' => 'DESCENDING',\n ],\n ],\n ];\n }\n\n public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array\n {\n $inputs = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $inputs[] = [\n 'from' => [\n 'id' => $crmId,\n ],\n 'to' => [\n 'id' => (string) $id,\n ],\n 'types' => [\n [\n 'associationCategory' => 'HUBSPOT_DEFINED',\n 'associationTypeId' => $associationType,\n ],\n ],\n ];\n }\n\n return ['inputs' => $inputs];\n }\n\n public function buildRemoveAssociationPayload(string $crmId, array $ids): array\n {\n $toArray = [];\n foreach ($ids as $id) {\n if ($id === null || $id === '') {\n continue;\n }\n\n $toArray[] = ['id' => (string) $id];\n }\n\n return [\n 'inputs' => [\n [\n 'from' => ['id' => $crmId],\n 'to' => $toArray,\n ],\n ],\n ];\n }\n\n public function addClosedStageFilters(array &$payload, array $closedStages): void\n {\n if (! empty($closedStages['won'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['won'],\n ];\n }\n\n if (! empty($closedStages['lost'])) {\n $payload['filters'][] = [\n 'propertyName' => 'dealstage',\n 'operator' => 'NOT_IN',\n 'values' => $closedStages['lost'],\n ];\n }\n }\n\n public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void\n {\n $payload['filters'][] = [\n 'propertyName' => 'createdate',\n 'operator' => 'GT',\n 'value' => $createdAfter->getPreciseTimestamp(3),\n ];\n }\n\n public function getDealsInBulkPayload(array $dealIds): array\n {\n return [\n 'filterGroups' => [\n [\n 'filters' => [\n [\n 'propertyName' => 'hs_object_id',\n 'operator' => 'IN',\n 'values' => $dealIds,\n ],\n ],\n ],\n ],\n 'limit' => self::MAX_FILTER_SIZE,\n ];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.40824467,"top":0.14365523,"width":0.1419548,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"8179134","depth":6,"bounds":{"left":0.5505319,"top":0.16520351,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"8179134","depth":7,"bounds":{"left":0.5505319,"top":0.16520351,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e5f7d9c-6dc0-4687-a39f-57c3167874fa","depth":6,"bounds":{"left":0.5505319,"top":0.1867518,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e5f7d9c-6dc0-4687-a39f-57c3167874fa","depth":7,"bounds":{"left":0.5505319,"top":0.1867518,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"519","depth":6,"bounds":{"left":0.5505319,"top":0.20830008,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"519","depth":7,"bounds":{"left":0.5505319,"top":0.20830008,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"436","depth":6,"bounds":{"left":0.5505319,"top":0.22984837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"436","depth":7,"bounds":{"left":0.5505319,"top":0.22984837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"90806037738","depth":6,"bounds":{"left":0.5505319,"top":0.25139666,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"90806037738","depth":7,"bounds":{"left":0.5505319,"top":0.25139666,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"16605","depth":6,"bounds":{"left":0.5505319,"top":0.27294493,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"16605","depth":7,"bounds":{"left":0.5505319,"top":0.27294493,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1534392770","depth":6,"bounds":{"left":0.5505319,"top":0.29449323,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1534392770","depth":7,"bounds":{"left":0.5505319,"top":0.29449323,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"nordhusene.dk","depth":6,"bounds":{"left":0.5505319,"top":0.3160415,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"nordhusene.dk","depth":7,"bounds":{"left":0.5505319,"top":0.3160415,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"+4564403700","depth":6,"bounds":{"left":0.5505319,"top":0.33758977,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"+4564403700","depth":7,"bounds":{"left":0.5505319,"top":0.33758977,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.5505319,"top":0.35913807,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.5505319,"top":0.35913807,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"REAL_ESTATE","depth":6,"bounds":{"left":0.5505319,"top":0.38068634,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"REAL_ESTATE","depth":7,"bounds":{"left":0.5505319,"top":0.38068634,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"nordhusene.dk","depth":6,"bounds":{"left":0.5505319,"top":0.40223464,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"nordhusene.dk","depth":7,"bounds":{"left":0.5505319,"top":0.40223464,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/ce12155c-3317-4e3c-a080-bc1f249da896/avatars/90806037738.png","depth":6,"bounds":{"left":0.5505319,"top":0.4237829,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/ce12155c-3317-4e3c-a080-bc1f249da896/avatars/90806037738.png","depth":7,"bounds":{"left":0.5505319,"top":0.4237829,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"DK","depth":6,"bounds":{"left":0.5505319,"top":0.44533122,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"DK","depth":7,"bounds":{"left":0.5505319,"top":0.44533122,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.5505319,"top":0.4668795,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.5505319,"top":0.4668795,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.5505319,"top":0.4884278,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.5505319,"top":0.4884278,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2025-07-07 20:16:12","depth":6,"bounds":{"left":0.5505319,"top":0.509976,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2025-07-07 20:16:12","depth":7,"bounds":{"left":0.5505319,"top":0.509976,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2025-02-04 08:13:31","depth":6,"bounds":{"left":0.5505319,"top":0.53152436,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2025-02-04 08:13:31","depth":7,"bounds":{"left":0.5505319,"top":0.53152436,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-04-26 03:14:02","depth":6,"bounds":{"left":0.5505319,"top":0.55307263,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-04-26 03:14:02","depth":7,"bounds":{"left":0.5505319,"top":0.55307263,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"1534392770","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"1534392770","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 8179134","depth":4,"bounds":{"left":0.41788563,"top":0.1245012,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 8179134","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.51795214,"top":0.1245012,"width":0.21575798,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"bounds":{"left":0.40957448,"top":0.09976058,"width":0.017952127,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"bounds":{"left":0.42985374,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"bounds":{"left":0.43849733,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.44714096,"top":0.09896249,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-3932220686232658624
|
1349767247385803396
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
25
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\Hubspot;
use Carbon\Carbon;
use Jiminny\Models\Crm\Configuration;
use Psr\Log\LoggerInterface;
class PayloadBuilder
{
public const int MAX_SEARCH_REQUEST_LIMIT = 200;
private const int MAX_FILTER_SIZE = 100;
private const string SORT_PROPERTY = 'hs_timestamp';
private const string ENGAGEMENT_MEETINGS = 'meetings';
public function getLinkToTaskPayload(string $objectType, string $objectId, string $engagementType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($engagementType === self::ENGAGEMENT_MEETINGS) {
$payload['filterGroups'] = $this->buildMeetingFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_timestamp',
'hs_activity_type',
];
} else {
$payload['filterGroups'] = $this->buildTaskFiltersForLinkToTask($objectType, $objectId);
$payload['properties'] = ['hs_task_subject', 'hs_timestamp'];
}
return $payload;
}
public function getRecentlyUpdatedSearchPayload(Carbon $since, ?Carbon $to, array $properties): array
{
$lastUpdateDate = in_array('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
public function getByProfileSearchPayload(string $crmId, array $properties, Carbon $since, ?Carbon $to): array
{
$lastUpdateDate = array_key_exists('firstname', $properties) ? 'lastmodifieddate' : 'hs_lastmodifieddate';
$payload = [
'filters' => [
[
'propertyName' => $lastUpdateDate,
'operator' => 'GT',
'value' => $since->getPreciseTimestamp(3),
],
[
'propertyName' => 'hubspot_owner_id',
'operator' => 'EQ',
'value' => $crmId,
],
],
'sorts' => [
[
'propertyName' => 'hs_object_id',
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($to) {
$payload['filters'][] = [
'propertyName' => $lastUpdateDate,
'operator' => 'LT',
'value' => $to->getPreciseTimestamp(3),
];
}
$payload['properties'] = $properties;
return $payload;
}
private function buildMeetingFiltersForLinkToTask($objectType, $objectId): array
{
$filters = [];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'IN',
'values' => ['SCHEDULED', 'RESCHEDULED'],
],
],
];
$filters[] = [
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
[
'propertyName' => 'hs_meeting_outcome',
'operator' => 'NOT_HAS_PROPERTY',
],
],
];
return $filters;
}
private function buildTaskFiltersForLinkToTask($objectType, $objectId): array
{
return [
[
'filters' => [
$this->getAssociatedObjectFilter($objectType, $objectId),
],
],
];
}
private function getAssociatedObjectFilter(string $objectType, string $objectId): array
{
return [
'propertyName' => 'associations.' . $objectType,
'operator' => 'EQ',
'value' => $objectId,
];
}
public function generatePlaybackURLSearchPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
public function generateGetCallsPayload(Carbon $from, Carbon $to, string $activityProvider, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $activityProvider,
],
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function generateSearchCallsByPeriodPayload(Carbon $from, Carbon $to, $page): array
{
return [
'filters' => [
[
'propertyName' => 'hs_timestamp',
'operator' => 'BETWEEN',
'value' => intval($from->getPreciseTimestamp(3)),
'highValue' => intval($to->getPreciseTimestamp(3)),
],
],
'sorts' => [
[
'propertyName' => 'hs_timestamp',
'direction' => 'DESCENDING',
],
],
'properties' => $this->getSearchCallAttributes(),
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
'after' => ($page - 1) * self::MAX_SEARCH_REQUEST_LIMIT,
];
}
public function getSearchCallAttributes(): array
{
return [
'hs_timestamp',
'hs_call_recording_url',
'hs_call_body',
'hs_call_status',
'hs_call_to_number',
'hs_call_from_number',
'hs_call_duration',
'hs_call_disposition',
'hs_call_title',
'hs_call_direction',
'hubspot_owner_id',
'hs_activity_type',
'hs_call_external_id',
'hs_call_source',
];
}
public function generatePlaybackAddUrlBatchPayload(array $crmUpdateData): array
{
$updateObjectsData = [];
foreach ($crmUpdateData as $data) {
$updateObjectsData[] = [
'id' => $data['crm_id'],
'properties' => [
'hs_call_body' => $data['hs_call_body'] .
'<p><span style="font-size: 13.3333px; line-height: 16px;">' .
'<a href="' . $data['playback_url'] . '" target="_blank">Review in Jiminny</a> ▶️</span></p>',
],
];
}
return ['inputs' => $updateObjectsData];
}
public function generateSearchCallByTokenPayload(string $playbackURLToken): array
{
return [
'filters' => [
[
'propertyName' => 'hs_call_recording_url',
'operator' => 'CONTAINS_TOKEN',
'value' => $playbackURLToken,
],
],
'properties' => [
'hs_call_recording_url',
'hs_call_body',
],
'limit' => 1,
];
}
/**
* Generates a payload for phone search based on the specified parameters.
*
* @param string $phone The phone number to search.
* @param bool $isAlternativeSearch Indicates if an alternative search should be performed
* if the first search fails to find a match. The first search request should cover most of the cases.
*/
public function generatePhoneSearchPayload(string $phone, bool $isAlternativeSearch = false): array
{
$filterPropertyNames = $isAlternativeSearch ?
['hs_searchable_calculated_mobile_number', 'phone', 'mobilephone'] :
['hs_searchable_calculated_phone_number', 'hs_calculated_phone_number', 'hs_calculated_mobile_number'];
$filterGroups = array_map(function ($propertyName) use ($phone) {
return $this->createFilterGroup($propertyName, 'CONTAINS_TOKEN', $phone);
}, $filterPropertyNames);
$properties = [
'email',
'firstname',
'lastname',
'country',
'phone',
'mobilephone',
'jobtitle',
'hubspot_owner_id',
'associatedcompanyid',
'photo',
];
return $this->createPayload($filterGroups, $properties);
}
/**
* Creates a filter group with the specified parameters.
*/
private function createFilterGroup(string $propertyName, string $operator, $value): array
{
return [
'filters' => [
[
'propertyName' => $propertyName,
'operator' => $operator,
'value' => $value,
],
],
];
}
/**
* Creates a payload with the specified filter groups and properties.
*/
private function createPayload(array $filterGroups, array $properties): array
{
return [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => 'modifieddate',
'direction' => 'DESCENDING',
],
],
'properties' => $properties,
'limit' => 1,
];
}
/**
* Generates a payload to find related activities based on the specified data and object type.
* The search looks for activities that match the specified time range (starttime - endtime or only starttime with endtime not set)
* and are associated with any of the provided prospect types (contact or company).
*
* @param array $data An associative array containing the following keys:
* - 'from': The start time for the activity search (timestamp).
* - 'to': The end time for the activity search (timestamp).
* - 'contact': (optional) The ID of the associated contact.
* - 'company': (optional) The ID of the associated company.
* @param string $objectType The type of engagement to search for (meeting or other type like call).
*
* @return array The payload array to be used for searching related activities.
*/
public function getFindRelatedActivityPayload(array $data, string $objectType): array
{
$payload = [
'sorts' => [
[
'propertyName' => self::SORT_PROPERTY,
'direction' => 'DESCENDING',
],
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
if ($objectType === self::ENGAGEMENT_MEETINGS) {
$payload['properties'] = [
'hs_meeting_title',
'hs_meeting_outcome',
'hs_activity_type',
'hs_timestamp',
'hubspot_owner_id',
'hs_meeting_body',
'hs_internal_meeting_notes',
'hs_meeting_location',
'hs_meeting_start_time',
'hs_meeting_end_time',
];
} else {
$payload['properties'] = ['hs_task_subject', 'hs_timestamp', 'hubspot_owner_id', 'hs_call_body'];
}
$timeFiltersWithEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'LTE',
'value' => $data['to'],
],
];
$timeFiltersWithoutEndTime = [
[
'propertyName' => 'hs_meeting_start_time',
'operator' => 'GTE',
'value' => $data['from'],
],
[
'propertyName' => 'hs_meeting_end_time',
'operator' => 'NOT_HAS_PROPERTY',
],
];
$payload['filterGroups'] = [];
$associationTypes = ['contact', 'company'];
foreach ($associationTypes as $type) {
if (! empty($data[$type])) {
$filterGroupWithEndTime = [
'filters' => array_merge(
$timeFiltersWithEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithEndTime;
$filterGroupWithoutEndTime = [
'filters' => array_merge(
$timeFiltersWithoutEndTime,
[$this->getAssociatedObjectFilter($type, $data[$type])]
),
];
$payload['filterGroups'][] = $filterGroupWithoutEndTime ;
}
}
return $payload;
}
/** Parameters
* [
* 'accountId' => $crmAccountId,
* 'sortBy' => $sortBy,
* 'sortDir' => $sortDir,
* 'onlyOpen' => $onlyOpen,
* 'closedStages' => $this->getClosedDealStages(),
* 'userId' => $userId,
* ];
*/
public function generateOpportunitiesSearchPayload(
Configuration $config,
string $crmAccountId,
array $closedStages,
): array {
$closedFilters = [];
$filterGroups = [];
$onlyOpen = true;
switch ($config->getOpportunityAssignmentRule()) {
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_UPDATED:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_RECENTLY_CREATED:
$sortBy = 'createdate';
$sortDir = 'DESCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_OPEN_OLDEST_CREATED:
$sortBy = 'createdate';
$sortDir = 'ASCENDING';
break;
case Configuration::OPP_ASSIGNMENT_ALL_RECENTLY_UPDATED:
default:
$sortBy = 'modifieddate';
$sortDir = 'DESCENDING';
$onlyOpen = false;
}
$baseFilters = [
[
'propertyName' => 'associations.company',
'operator' => 'EQ',
'value' => $crmAccountId,
],
];
// Handle closed stages in chunks
if ($onlyOpen) {
foreach (['won', 'lost'] as $key) {
if (! empty($closedStages[$key])) {
$chunks = array_chunk($closedStages[$key], self::MAX_FILTER_SIZE);
foreach ($chunks as $chunk) {
$closedFilters[] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $chunk,
];
}
}
}
}
$filterGroups[] = [
'filters' => array_merge($baseFilters, $closedFilters),
];
$payload = [
'filterGroups' => $filterGroups,
'sorts' => [
[
'propertyName' => $sortBy,
'direction' => $sortDir,
],
],
'properties' => [
'dealname',
'amount',
'hubspot_owner_id',
'pipeline',
'dealstage',
'closedate',
'deal_currency_code',
],
'limit' => self::MAX_SEARCH_REQUEST_LIMIT,
];
$logger = app(LoggerInterface::class);
$logger->info('[HubSpot] CRM Search requested', [
'request' => $payload,
]);
return $payload;
}
/**
* Converts v1 payload data to v3
*/
public function getV3MeetingPayload(array $engagement, array $metadata, array $associations = []): array
{
// Use this mapping until the whole Hubspot V1 is dropped.
$properties = [
'hubspot_owner_id' => $engagement['ownerId'],
'hs_timestamp' => $engagement['timestamp'],
];
// $engagement['activityType'] is $activity->category->name
if (isset($engagement['activityType'])) {
$properties['hs_activity_type'] = $engagement['activityType'];
}
$metadataKeyMap = [
'hs_meeting_outcome' => 'meetingOutcome',
'hs_meeting_title' => 'title',
'hs_meeting_start_time' => 'startTime',
'hs_meeting_end_time' => 'endTime',
'hs_meeting_body' => 'body',
'hs_internal_meeting_notes' => 'internalMeetingNotes',
];
foreach ($metadataKeyMap as $newKey => $oldKey) {
if (isset($metadata[$oldKey])) {
$properties[$newKey] = $metadata[$oldKey];
unset($metadata[$oldKey]);
}
}
$properties = [
...$properties,
...$metadata, // custom fields
];
$response = [
'properties' => $properties,
];
if (! empty($associations)) {
$response['associations'] = $associations;
}
return $response;
}
/**
* Generate a payload to search for contacts by name.
* The search is a token search in firstname or lastname
*/
public function generateSearchContactsByNamePayload(string $name, array $fields): array
{
$firstNameFilter = [
'propertyName' => 'firstname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
$lastNameFilter = [
'propertyName' => 'lastname',
'operator' => 'CONTAINS_TOKEN',
'value' => $name,
];
return [
'filterGroups' => [
[
'filters' => [$firstNameFilter],
],
[
'filters' => [$lastNameFilter],
],
],
'properties' => $fields,
'sorts' => [
[
'propertyName' => 'lastmodifieddate',
'direction' => 'DESCENDING',
],
],
];
}
public function buildAddAssociationPayload(string $crmId, array $ids, int $associationType): array
{
$inputs = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$inputs[] = [
'from' => [
'id' => $crmId,
],
'to' => [
'id' => (string) $id,
],
'types' => [
[
'associationCategory' => 'HUBSPOT_DEFINED',
'associationTypeId' => $associationType,
],
],
];
}
return ['inputs' => $inputs];
}
public function buildRemoveAssociationPayload(string $crmId, array $ids): array
{
$toArray = [];
foreach ($ids as $id) {
if ($id === null || $id === '') {
continue;
}
$toArray[] = ['id' => (string) $id];
}
return [
'inputs' => [
[
'from' => ['id' => $crmId],
'to' => $toArray,
],
],
];
}
public function addClosedStageFilters(array &$payload, array $closedStages): void
{
if (! empty($closedStages['won'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['won'],
];
}
if (! empty($closedStages['lost'])) {
$payload['filters'][] = [
'propertyName' => 'dealstage',
'operator' => 'NOT_IN',
'values' => $closedStages['lost'],
];
}
}
public function addCreatedDateFilters(array &$payload, Carbon $createdAfter): void
{
$payload['filters'][] = [
'propertyName' => 'createdate',
'operator' => 'GT',
'value' => $createdAfter->getPreciseTimestamp(3),
];
}
public function getDealsInBulkPayload(array $dealIds): array
{
return [
'filterGroups' => [
[
'filters' => [
[
'propertyName' => 'hs_object_id',
'operator' => 'IN',
'values' => $dealIds,
],
],
],
],
'limit' => self::MAX_FILTER_SIZE,
];
}
}
A
1
Select All
8179134
8179134
0
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
4e5f7d9c-6dc0-4687-a39f-57c3167874fa
1534392770
519
519
0
436
436
0
90806037738
90806037738
1534392770
16605
16605
0
1534392770
1534392770
1534392770
nordhusene.dk
nordhusene.dk
1534392770
+4564403700
+4564403700
1534392770
<null>
<null>
1534392770
REAL_ESTATE
REAL_ESTATE
1534392770
nordhusene.dk
nordhusene.dk
1534392770
/ce12155c-3317-4e3c-a080-bc1f249da896/avatars/90806037738.png
/ce12155c-3317-4e3c-a080-bc1f249da896/avatars/90806037738.png
1534392770
DK
DK
1534392770
0
0
0
<null>
<null>
1534392770
2025-07-07 20:16:12
2025-07-07 20:16:12
1534392770
2025-02-04 08:13:31
2025-02-04 08:13:31
1534392770
2026-04-26 03:14:02
2026-04-26 03:14:02
1534392770
id = 8179134
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements...
|
40276
|
NULL
|
NULL
|
NULL
|
|
3733
|
136
|
25
|
2026-05-07T12:38:12.463872+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157492463_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
430
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2
2
430
2
2
430
1212213464
1212213464
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
430
[PHONE]83316
579583316
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
Umbrella Corp
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
[PHONE]
[PHONE]
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
umbrellacorp.com
umbrellacorp.com
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
0
0
430
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2026-03-30 06:44:25
2026-03-30 06:44:25
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2019-02-01 15:39:53
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2026-03-30 06:44:25
2026-03-30 06:44:25
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"430","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"430","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"430","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"430","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"430","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"430","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"430","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"430","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"430","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"430","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"bounds":{"left":0.5299202,"top":0.075019956,"width":0.017952127,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"bounds":{"left":0.55019945,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"bounds":{"left":0.5588431,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5674867,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"bounds":{"left":0.5784575,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Rows","depth":4,"bounds":{"left":0.58710104,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"bounds":{"left":0.59574467,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"bounds":{"left":0.6043883,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"bounds":{"left":0.6130319,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.62400264,"top":0.074221864,"width":0.024268618,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"bounds":{"left":0.6505984,"top":0.074221864,"width":0.011303191,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"bounds":{"left":0.6619016,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"bounds":{"left":0.6705452,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"bounds":{"left":0.67918885,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"bounds":{"left":0.6878325,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"bounds":{"left":0.69647604,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"bounds":{"left":0.70511967,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"bounds":{"left":0.921875,"top":0.074221864,"width":0.017287234,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"bounds":{"left":0.94148934,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"bounds":{"left":0.95013297,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"bounds":{"left":0.9587766,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"bounds":{"left":0.96974736,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"bounds":{"left":0.97839093,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8483013425991974430
|
-6772997518982025845
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
430
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2
2
430
2
2
430
1212213464
1212213464
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
430
[PHONE]83316
579583316
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
Umbrella Corp
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
[PHONE]
[PHONE]
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
umbrellacorp.com
umbrellacorp.com
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
0
0
430
<null>
<null>
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2026-03-30 06:44:25
2026-03-30 06:44:25
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2019-02-01 15:39:53
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
2026-03-30 06:44:25
2026-03-30 06:44:25
/abae74b8-bfa8-4383-9a7f-89f4bf2bdb…
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3730
|
NULL
|
NULL
|
NULL
|
|
3734
|
135
|
27
|
2026-05-07T12:38:14.136629+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157494136_m1.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Rows","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1912975389989075783
|
2450374518003854731
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All...
|
3732
|
NULL
|
NULL
|
NULL
|
|
3735
|
136
|
26
|
2026-05-07T12:38:14.196217+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157494196_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"bounds":{"left":0.5299202,"top":0.075019956,"width":0.017952127,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"bounds":{"left":0.55019945,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"bounds":{"left":0.5588431,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5674867,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"bounds":{"left":0.5784575,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Rows","depth":4,"bounds":{"left":0.58710104,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"bounds":{"left":0.59574467,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"bounds":{"left":0.6043883,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"bounds":{"left":0.6130319,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.62400264,"top":0.074221864,"width":0.024268618,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"bounds":{"left":0.6505984,"top":0.074221864,"width":0.011303191,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"bounds":{"left":0.6619016,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"bounds":{"left":0.6705452,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"bounds":{"left":0.67918885,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"bounds":{"left":0.6878325,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"bounds":{"left":0.69647604,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"bounds":{"left":0.70511967,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"bounds":{"left":0.921875,"top":0.074221864,"width":0.017287234,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"bounds":{"left":0.94148934,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"bounds":{"left":0.95013297,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"bounds":{"left":0.9587766,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"bounds":{"left":0.96974736,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"bounds":{"left":0.97839093,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-978006724692954154
|
2450374518003854731
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3736
|
135
|
28
|
2026-05-07T12:38:15.817574+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157495817_m1.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Rows","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8961513851643819616
|
-8100467319066333492
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Rows
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3737
|
136
|
27
|
2026-05-07T12:38:18.527100+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157498527_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"2019-02-01 15:39:53","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"2019-02-01 15:39:53","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"bounds":{"left":0.5299202,"top":0.075019956,"width":0.017952127,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"bounds":{"left":0.55019945,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"bounds":{"left":0.5588431,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5674867,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"bounds":{"left":0.5784575,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Row","depth":4,"bounds":{"left":0.58710104,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"bounds":{"left":0.59574467,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"bounds":{"left":0.6043883,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"bounds":{"left":0.6130319,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.62400264,"top":0.074221864,"width":0.024268618,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"bounds":{"left":0.6505984,"top":0.074221864,"width":0.011303191,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"bounds":{"left":0.6619016,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"bounds":{"left":0.6705452,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"bounds":{"left":0.67918885,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"bounds":{"left":0.6878325,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"bounds":{"left":0.69647604,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"bounds":{"left":0.70511967,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"bounds":{"left":0.921875,"top":0.074221864,"width":0.017287234,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"bounds":{"left":0.94148934,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"bounds":{"left":0.95013297,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"bounds":{"left":0.9587766,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"bounds":{"left":0.96974736,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"bounds":{"left":0.97839093,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.48038563,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"120","depth":4,"bounds":{"left":0.49035904,"top":0.19952115,"width":0.011968086,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.5043218,"top":0.19952115,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.51396275,"top":0.19792499,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5212766,"top":0.19792499,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Carbon\\CarbonImmutable;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n UserPilotClient $userPilotClient\n ): void {\n $this->rateLimit();\n exit(1);\n\n\n\n $report = AutomatedReport::find(71);\n $last = AutomatedReportResult::query()\n ->where('report_id', $report->getId())\n ->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])\n// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)\n ->whereDate('created_at', CarbonImmutable::now()->toDateString())\n ->latest()\n ->first();\n\n $this->info(\"Last: {$last->getId()}\");\n\n exit(1);\n\n $user = User::find(143);\n // $count = $automatedReportsRepository->countUserReports($user);\n // $this->info(\"Count: {$count}\");\n // $count = $automatedReportsRepository->countAllUserReports($user);\n // $this->info(\"All count: {$count}\");\n\n $payload = [\n 'report_type' => 'ask_jiminny',\n 'frequency' => 'weekly',\n ];\n $userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);\n\n exit(1);\n\n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n\n // $from = $now->copy()->previousWeekday()->startOfDay();\n // $to = $now->copy()->previousWeekday()->endOfDay();\n\n // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subWeek()->startOfWeek();\n // $toNew = $now->copy()->subWeek()->endOfWeek();\n\n // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n // $toOld = $now->copy()->subDay()->endOfDay();\n // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n\n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n $fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();\n $toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();\n\n $this->info(\"From old: {$fromOld->toDateTimeString()}\");\n $this->info(\"To old: {$toOld->toDateTimeString()}\");\n $this->info(\"From new: {$fromNew->toDateTimeString()}\");\n $this->info(\"To new: {$toNew->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n\n private function rateLimit()\n {\n $team = Team::find(2);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n for ($i = 0 ; $i < 10; $i++) {\n// if ($i % 25 === 0) {\n// $this->info(\"Syncing opportunity {$i}\");\n $this->info(\"Matching account {$i}\");\n// }\n// $crmService->syncOpportunity('374720564');\n $crmService->matchExactlyByEmail('coolrobot@hubspot.com');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5469230330171907334
|
2450374518003854731
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
2019-02-01 15:39:53
2
2
0
2
2
0
1212213464
1212213464
2019-02-01 15:39:53
430
430
0
579583316
579583316
2019-02-01 15:39:53
Umbrella Corp
Umbrella Corp
2019-02-01 15:39:53
[PHONE]
[PHONE]
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
umbrellacorp.com
umbrellacorp.com
2019-02-01 15:39:53
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
2019-02-01 15:39:53
<null>
<null>
2019-02-01 15:39:53
0
0
0
<null>
<null>
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2019-02-01 15:39:53
2026-03-30 06:44:25
2026-03-30 06:44:25
2019-02-01 15:39:53
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Sync Changes
Hide This Notification
Code changed:
Hide
5
120
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Carbon\CarbonImmutable;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
UserPilotClient $userPilotClient
): void {
$this->rateLimit();
exit(1);
$report = AutomatedReport::find(71);
$last = AutomatedReportResult::query()
->where('report_id', $report->getId())
->whereIn('status', [AutomatedReportResult::STATUS_DEFAULT, AutomatedReportResult::STATUS_FAILED])
// ->where('reason', '!=', AutomatedReportResult::REASON_NOT_ENOUGH_ACTIVITIES)
->whereDate('created_at', CarbonImmutable::now()->toDateString())
->latest()
->first();
$this->info("Last: {$last->getId()}");
exit(1);
$user = User::find(143);
// $count = $automatedReportsRepository->countUserReports($user);
// $this->info("Count: {$count}");
// $count = $automatedReportsRepository->countAllUserReports($user);
// $this->info("All count: {$count}");
$payload = [
'report_type' => 'ask_jiminny',
'frequency' => 'weekly',
];
$userPilotClient->track($user, 'ask-jiminny-report-generated', $payload);
exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
// $from = $now->copy()->previousWeekday()->startOfDay();
// $to = $now->copy()->previousWeekday()->endOfDay();
// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subWeek()->startOfWeek();
// $toNew = $now->copy()->subWeek()->endOfWeek();
// $fromOld = $now->copy()->subMonths(1)->startOfDay();
// $toOld = $now->copy()->subDay()->endOfDay();
// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
$fromNew = $now->copy()->subQuarterNoOverflow()->startOfQuarter();
$toNew = $now->copy()->subQuarterNoOverflow()->endOfQuarter();
$this->info("From old: {$fromOld->toDateTimeString()}");
$this->info("To old: {$toOld->toDateTimeString()}");
$this->info("From new: {$fromNew->toDateTimeString()}");
$this->info("To new: {$toNew->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
private function rateLimit()
{
$team = Team::find(2);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
for ($i = 0 ; $i < 10; $i++) {
// if ($i % 25 === 0) {
// $this->info("Syncing opportunity {$i}");
$this->info("Matching account {$i}");
// }
// $crmService->syncOpportunity('374720564');
$crmService->matchExactlyByEmail('[EMAIL]');
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3735
|
NULL
|
NULL
|
NULL
|
|
3762
|
136
|
40
|
2026-05-07T12:39:43.606967+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157583606_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5699873674798819258
|
-9177001522953722122
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
3763
|
135
|
41
|
2026-05-07T12:39:43.673600+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157583673_m1.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Code changed:
Hide
Sync Changes
Hide This Notification
Reader Mode
<?php
namespace SevenShores\Hubspot\Endpoints;
/**
* @see [URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function create(array $properties)
{
$endpoint = '[URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function update($id, array $properties)
{
$endpoint = "[URL_WITH_CREDENTIALS] int $id The company id
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['limit', 'offset', 'properties']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] [URL_WITH_CREDENTIALS] int $id
* @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']
*
* @see https://developers.hubspot.com/docs/methods/companies/get_company
*
* @return \SevenShores\Hubspot\Http\Response
*/
public function getById($id, array $params = [])
{
$endpoint = "https://api.hubapi.com/companies/v2/companies/{$id}";
return $this->client->request(
'get',
$endpoint,
[],
build_query_string($params)
);
}
}
Project
Project
New File or Directory…...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.008333334,"height":0.03},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.0,"top":0.0,"width":0.2048611,"height":0.024444444},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Row","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reader Mode","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace SevenShores\\Hubspot\\Endpoints;\n\n/**\n * @see https://developers.hubspot.com/docs/methods/companies/companies-overview\n */\nclass Companies extends Endpoint\n{\n /**\n * Create a company.\n *\n * @param array $properties array of company properties\n *\n * @see https://developers.hubspot.com/docs/methods/companies/create_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function create(array $properties)\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/';\n\n return $this->client->request(\n 'post',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * Updates a company.\n *\n * @param int $id the company id\n * @param array $properties the company properties to update\n *\n * @see https://developers.hubspot.com/docs/methods/companies/update_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function update($id, array $properties)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'put',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * @param array $companies the companies and properties\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function updateBatch(array $companies)\n {\n $endpoint = 'https://api.hubapi.com/companies/v1/batch-async/update';\n\n return $this->client->request('post', $endpoint, ['json' => $companies]);\n }\n\n /**\n * Deletes a company.\n *\n * @param int $id The company id\n *\n * @see https://developers.hubspot.com/docs/methods/companies/delete_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function delete($id)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request('delete', $endpoint);\n }\n\n /**\n * Returns all companies.\n *\n * @param array $params Array of optional parameters ['limit', 'offset', 'properties']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get-all-companies\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function all(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/paged';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently modified companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_modified\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyModified(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/modified';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently created companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_created\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyCreated(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/created';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Search for companies by domain.\n *\n * @see https://developers.hubspot.com/docs/methods/companies/search_companies_by_domain\n *\n * @return \\Psr\\Http\\Message\\ResponseInterface|\\SevenShores\\Hubspot\\Http\\Response\n */\n public function searchByDomain(\n string $domain,\n array $properties = [],\n int $limit = 100,\n int $offset = 0\n ) {\n $endpoint = \"https://api.hubapi.com/companies/v2/domains/{$domain}/companies\";\n\n return $this->client->request(\n 'post',\n $endpoint,\n [\n 'json' => [\n 'limit' => $limit,\n 'offset' => [\n 'isPrimary' => true,\n 'companyId' => $offset,\n ],\n 'requestOptions' => [\n 'properties' => $properties,\n ],\n ],\n ]\n );\n }\n\n /**\n * Returns a company with id $id.\n *\n * @param int $id\n * @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getById($id, array $params = [])\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace SevenShores\\Hubspot\\Endpoints;\n\n/**\n * @see https://developers.hubspot.com/docs/methods/companies/companies-overview\n */\nclass Companies extends Endpoint\n{\n /**\n * Create a company.\n *\n * @param array $properties array of company properties\n *\n * @see https://developers.hubspot.com/docs/methods/companies/create_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function create(array $properties)\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/';\n\n return $this->client->request(\n 'post',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * Updates a company.\n *\n * @param int $id the company id\n * @param array $properties the company properties to update\n *\n * @see https://developers.hubspot.com/docs/methods/companies/update_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function update($id, array $properties)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'put',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * @param array $companies the companies and properties\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function updateBatch(array $companies)\n {\n $endpoint = 'https://api.hubapi.com/companies/v1/batch-async/update';\n\n return $this->client->request('post', $endpoint, ['json' => $companies]);\n }\n\n /**\n * Deletes a company.\n *\n * @param int $id The company id\n *\n * @see https://developers.hubspot.com/docs/methods/companies/delete_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function delete($id)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request('delete', $endpoint);\n }\n\n /**\n * Returns all companies.\n *\n * @param array $params Array of optional parameters ['limit', 'offset', 'properties']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get-all-companies\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function all(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/paged';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently modified companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_modified\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyModified(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/modified';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently created companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_created\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyCreated(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/created';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Search for companies by domain.\n *\n * @see https://developers.hubspot.com/docs/methods/companies/search_companies_by_domain\n *\n * @return \\Psr\\Http\\Message\\ResponseInterface|\\SevenShores\\Hubspot\\Http\\Response\n */\n public function searchByDomain(\n string $domain,\n array $properties = [],\n int $limit = 100,\n int $offset = 0\n ) {\n $endpoint = \"https://api.hubapi.com/companies/v2/domains/{$domain}/companies\";\n\n return $this->client->request(\n 'post',\n $endpoint,\n [\n 'json' => [\n 'limit' => $limit,\n 'offset' => [\n 'isPrimary' => true,\n 'companyId' => $offset,\n ],\n 'requestOptions' => [\n 'properties' => $properties,\n ],\n ],\n ]\n );\n }\n\n /**\n * Returns a company with id $id.\n *\n * @param int $id\n * @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getById($id, array $params = [])\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-732064054499033799
|
-4458104458265532724
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Code changed:
Hide
Sync Changes
Hide This Notification
Reader Mode
<?php
namespace SevenShores\Hubspot\Endpoints;
/**
* @see [URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function create(array $properties)
{
$endpoint = '[URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function update($id, array $properties)
{
$endpoint = "[URL_WITH_CREDENTIALS] int $id The company id
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['limit', 'offset', 'properties']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] [URL_WITH_CREDENTIALS] int $id
* @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']
*
* @see https://developers.hubspot.com/docs/methods/companies/get_company
*
* @return \SevenShores\Hubspot\Http\Response
*/
public function getById($id, array $params = [])
{
$endpoint = "https://api.hubapi.com/companies/v2/companies/{$id}";
return $this->client->request(
'get',
$endpoint,
[],
build_query_string($params)
);
}
}
Project
Project
New File or Directory…...
|
3761
|
NULL
|
NULL
|
NULL
|
|
3764
|
136
|
41
|
2026-05-07T12:39:44.732046+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778157584732_m2.jpg...
|
PhpStorm
|
faVsco.js – accounts [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Code changed:
Hide
Sync Changes
Hide This Notification
Reader Mode
<?php
namespace SevenShores\Hubspot\Endpoints;
/**
* @see [URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function create(array $properties)
{
$endpoint = '[URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function update($id, array $properties)
{
$endpoint = "[URL_WITH_CREDENTIALS] int $id The company id
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['limit', 'offset', 'properties']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] [URL_WITH_CREDENTIALS] int $id
* @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']
*
* @see https://developers.hubspot.com/docs/methods/companies/get_company
*
* @return \SevenShores\Hubspot\Http\Response
*/
public function getById($id, array $params = [])
{
$endpoint = "https://api.hubapi.com/companies/v2/companies/{$id}";
return $this->client->request(
'get',
$endpoint,
[],
build_query_string($params)
);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"A","depth":4,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0039893617,"height":0.0},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Select All","depth":4,"bounds":{"left":0.52859044,"top":0.118914604,"width":0.07180851,"height":0.0207502},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"5190","depth":6,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"5190","depth":7,"bounds":{"left":0.6007314,"top":0.14046289,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":6,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"4e3f2289-a3d2-5235-b410-b94ebb547490","depth":7,"bounds":{"left":0.6007314,"top":0.16201118,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.18355946,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2","depth":6,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2","depth":7,"bounds":{"left":0.6007314,"top":0.20510775,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"1212213464","depth":6,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"1212213464","depth":7,"bounds":{"left":0.6007314,"top":0.22665602,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"430","depth":6,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"430","depth":7,"bounds":{"left":0.6007314,"top":0.2482043,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"579583316","depth":6,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"579583316","depth":7,"bounds":{"left":0.6007314,"top":0.2697526,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"Umbrella Corp","depth":6,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"Umbrella Corp","depth":7,"bounds":{"left":0.6007314,"top":0.29130086,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"661-244-6711","depth":6,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"661-244-6711","depth":7,"bounds":{"left":0.6007314,"top":0.31284916,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.33439744,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.35594574,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"umbrellacorp.com","depth":6,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"umbrellacorp.com","depth":7,"bounds":{"left":0.6007314,"top":0.377494,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":6,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png","depth":7,"bounds":{"left":0.6007314,"top":0.3990423,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.42059058,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"0","depth":6,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"0","depth":7,"bounds":{"left":0.6007314,"top":0.44213888,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"0","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"0","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"<null>","depth":6,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"<null>","depth":7,"bounds":{"left":0.6007314,"top":0.46368715,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.48523542,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2019-02-01 15:39:53","depth":6,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2019-02-01 15:39:53","depth":7,"bounds":{"left":0.6007314,"top":0.5067837,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCell","text":"2026-03-30 06:44:25","depth":6,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"cell"},{"role":"AXStaticText","text":"2026-03-30 06:44:25","depth":7,"bounds":{"left":0.6007314,"top":0.528332,"width":0.10006649,"height":0.0207502},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"Umbrella Corp","depth":8,"bounds":{"left":0.27027926,"top":1.0,"width":0.098071806,"height":0.0},"on_screen":false,"value":"Umbrella Corp","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"id = 5190","depth":4,"bounds":{"left":0.5382314,"top":0.09976058,"width":0.08045213,"height":0.014365523},"on_screen":true,"value":"id = 5190","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Editor","depth":4,"bounds":{"left":0.63829786,"top":0.09976058,"width":0.34574467,"height":0.014365523},"on_screen":true,"role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"1 row","depth":4,"bounds":{"left":0.5299202,"top":0.075019956,"width":0.017952127,"height":0.017557861},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reload Page","depth":4,"bounds":{"left":0.55019945,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Auto Refresh","depth":4,"bounds":{"left":0.5588431,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5674867,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add Row","depth":4,"bounds":{"left":0.5784575,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Delete Row","depth":4,"bounds":{"left":0.58710104,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Revert Selected","depth":4,"bounds":{"left":0.59574467,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Preview Pending Changes","depth":4,"bounds":{"left":0.6043883,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Submit","depth":4,"bounds":{"left":0.6130319,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.62400264,"top":0.074221864,"width":0.024268618,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"DDL","depth":4,"bounds":{"left":0.6505984,"top":0.074221864,"width":0.011303191,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Find on Current Page","depth":4,"bounds":{"left":0.6619016,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Result Local Filter","depth":4,"bounds":{"left":0.6705452,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Record View","depth":4,"bounds":{"left":0.67918885,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Table Coloring Options","depth":4,"bounds":{"left":0.6878325,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Geo Viewer","depth":4,"bounds":{"left":0.69647604,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Chart","depth":4,"bounds":{"left":0.70511967,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CSV","depth":4,"bounds":{"left":0.921875,"top":0.074221864,"width":0.017287234,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Export Data…","depth":4,"bounds":{"left":0.94148934,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Copy to Database…","depth":4,"bounds":{"left":0.95013297,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compare Data","depth":4,"bounds":{"left":0.9587766,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View as","depth":4,"bounds":{"left":0.96974736,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Options Menu","depth":4,"bounds":{"left":0.97839093,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reader Mode","depth":4,"bounds":{"left":0.47207448,"top":0.17318435,"width":0.034574468,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace SevenShores\\Hubspot\\Endpoints;\n\n/**\n * @see https://developers.hubspot.com/docs/methods/companies/companies-overview\n */\nclass Companies extends Endpoint\n{\n /**\n * Create a company.\n *\n * @param array $properties array of company properties\n *\n * @see https://developers.hubspot.com/docs/methods/companies/create_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function create(array $properties)\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/';\n\n return $this->client->request(\n 'post',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * Updates a company.\n *\n * @param int $id the company id\n * @param array $properties the company properties to update\n *\n * @see https://developers.hubspot.com/docs/methods/companies/update_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function update($id, array $properties)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'put',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * @param array $companies the companies and properties\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function updateBatch(array $companies)\n {\n $endpoint = 'https://api.hubapi.com/companies/v1/batch-async/update';\n\n return $this->client->request('post', $endpoint, ['json' => $companies]);\n }\n\n /**\n * Deletes a company.\n *\n * @param int $id The company id\n *\n * @see https://developers.hubspot.com/docs/methods/companies/delete_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function delete($id)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request('delete', $endpoint);\n }\n\n /**\n * Returns all companies.\n *\n * @param array $params Array of optional parameters ['limit', 'offset', 'properties']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get-all-companies\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function all(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/paged';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently modified companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_modified\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyModified(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/modified';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently created companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_created\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyCreated(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/created';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Search for companies by domain.\n *\n * @see https://developers.hubspot.com/docs/methods/companies/search_companies_by_domain\n *\n * @return \\Psr\\Http\\Message\\ResponseInterface|\\SevenShores\\Hubspot\\Http\\Response\n */\n public function searchByDomain(\n string $domain,\n array $properties = [],\n int $limit = 100,\n int $offset = 0\n ) {\n $endpoint = \"https://api.hubapi.com/companies/v2/domains/{$domain}/companies\";\n\n return $this->client->request(\n 'post',\n $endpoint,\n [\n 'json' => [\n 'limit' => $limit,\n 'offset' => [\n 'isPrimary' => true,\n 'companyId' => $offset,\n ],\n 'requestOptions' => [\n 'properties' => $properties,\n ],\n ],\n ]\n );\n }\n\n /**\n * Returns a company with id $id.\n *\n * @param int $id\n * @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getById($id, array $params = [])\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace SevenShores\\Hubspot\\Endpoints;\n\n/**\n * @see https://developers.hubspot.com/docs/methods/companies/companies-overview\n */\nclass Companies extends Endpoint\n{\n /**\n * Create a company.\n *\n * @param array $properties array of company properties\n *\n * @see https://developers.hubspot.com/docs/methods/companies/create_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function create(array $properties)\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/';\n\n return $this->client->request(\n 'post',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * Updates a company.\n *\n * @param int $id the company id\n * @param array $properties the company properties to update\n *\n * @see https://developers.hubspot.com/docs/methods/companies/update_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function update($id, array $properties)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'put',\n $endpoint,\n ['json' => ['properties' => $properties]]\n );\n }\n\n /**\n * @param array $companies the companies and properties\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function updateBatch(array $companies)\n {\n $endpoint = 'https://api.hubapi.com/companies/v1/batch-async/update';\n\n return $this->client->request('post', $endpoint, ['json' => $companies]);\n }\n\n /**\n * Deletes a company.\n *\n * @param int $id The company id\n *\n * @see https://developers.hubspot.com/docs/methods/companies/delete_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function delete($id)\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request('delete', $endpoint);\n }\n\n /**\n * Returns all companies.\n *\n * @param array $params Array of optional parameters ['limit', 'offset', 'properties']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get-all-companies\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function all(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/paged';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently modified companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_modified\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyModified(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/modified';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Returns the recently created companies.\n *\n * @param array $params Array of optional parameters ['count', 'offset']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_companies_created\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getRecentlyCreated(array $params = [])\n {\n $endpoint = 'https://api.hubapi.com/companies/v2/companies/recent/created';\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n\n /**\n * Search for companies by domain.\n *\n * @see https://developers.hubspot.com/docs/methods/companies/search_companies_by_domain\n *\n * @return \\Psr\\Http\\Message\\ResponseInterface|\\SevenShores\\Hubspot\\Http\\Response\n */\n public function searchByDomain(\n string $domain,\n array $properties = [],\n int $limit = 100,\n int $offset = 0\n ) {\n $endpoint = \"https://api.hubapi.com/companies/v2/domains/{$domain}/companies\";\n\n return $this->client->request(\n 'post',\n $endpoint,\n [\n 'json' => [\n 'limit' => $limit,\n 'offset' => [\n 'isPrimary' => true,\n 'companyId' => $offset,\n ],\n 'requestOptions' => [\n 'properties' => $properties,\n ],\n ],\n ]\n );\n }\n\n /**\n * Returns a company with id $id.\n *\n * @param int $id\n * @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']\n *\n * @see https://developers.hubspot.com/docs/methods/companies/get_company\n *\n * @return \\SevenShores\\Hubspot\\Http\\Response\n */\n public function getById($id, array $params = [])\n {\n $endpoint = \"https://api.hubapi.com/companies/v2/companies/{$id}\";\n\n return $this->client->request(\n 'get',\n $endpoint,\n [],\n build_query_string($params)\n );\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2658523096194342618
|
-4458104458265532724
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
A
1
Select All
5190
5190
0
4e3f2289-a3d2-5235-b410-b94ebb547490
4e3f2289-a3d2-5235-b410-b94ebb547490
Umbrella Corp
2
2
0
2
2
0
1212213464
1212213464
Umbrella Corp
430
430
0
579583316
579583316
Umbrella Corp
Umbrella Corp
Umbrella Corp
Umbrella Corp
[PHONE]
[PHONE]
Umbrella Corp
<null>
<null>
Umbrella Corp
<null>
<null>
Umbrella Corp
umbrellacorp.com
umbrellacorp.com
Umbrella Corp
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/1212213464.png
Umbrella Corp
<null>
<null>
Umbrella Corp
0
0
0
<null>
<null>
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
2019-02-01 15:39:53
2019-02-01 15:39:53
Umbrella Corp
2026-03-30 06:44:25
2026-03-30 06:44:25
Umbrella Corp
id = 5190
Editor
1 row
Reload Page
Table Result Auto Refresh
Cancel Running Statements
Add Row
Delete Row
Revert Selected
Preview Pending Changes
Submit
Tx: Auto
DDL
Find on Current Page
Table Result Local Filter
Record View
Table Coloring Options
Show Geo Viewer
Show Chart
CSV
Export Data…
Copy to Database…
Compare Data
View as
Show Options Menu
Code changed:
Hide
Sync Changes
Hide This Notification
Reader Mode
<?php
namespace SevenShores\Hubspot\Endpoints;
/**
* @see [URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function create(array $properties)
{
$endpoint = '[URL_WITH_CREDENTIALS] \SevenShores\Hubspot\Http\Response
*/
public function update($id, array $properties)
{
$endpoint = "[URL_WITH_CREDENTIALS] int $id The company id
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['limit', 'offset', 'properties']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] array $params Array of optional parameters ['count', 'offset']
*
* @see [URL_WITH_CREDENTIALS] [URL_WITH_CREDENTIALS] int $id
* @param array $params Array of optional parameters ['includeMergeAudits', 'includePropertyVersions']
*
* @see https://developers.hubspot.com/docs/methods/companies/get_company
*
* @return \SevenShores\Hubspot\Http\Response
*/
public function getById($id, array $params = [])
{
$endpoint = "https://api.hubapi.com/companies/v2/companies/{$id}";
return $this->client->request(
'get',
$endpoint,
[],
build_query_string($params)
);
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
3762
|
NULL
|
NULL
|
NULL
|
|
33540
|
1274
|
11
|
2026-05-13T10:32:28.386304+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668348386_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6318826349608934065
|
-8348465145538433082
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
QuickTime PlayerFileEditViewWindowHelp(ahlGalya Dimitrova (Presenting, annotating)SlackFileEditViewGoHistoryWindowHelp÷88JIMg For you• Recent [# Starred°? Apps|& Plans0 SpacesStarredJiminny (New)|u Platform TelIID ProcessingUID SE KanbanIID Capture TeaU Enterprise 9DiscoveryDMs+ActivityFiesLaterMoreProductRecent(9 Service-Desk= More spaces= FiltersB DashboardsOperations& CustomersJiminny Inc~+ More unread messagesE Lukas Kovalik, Nikolay..C. Nikolay IvanovP. Nikolay Yankov. Petko Kashinski. Stefka Stoyanovad Stoyan Tanev. Vasil Vasilev ER. Vilma A(. ZoriAP. Galya Dimitrova...Channels# alertsAppsConfluenceGoogle CalendarGoogle DrivejiminnyJira CloudToastu UserpilotQ Describe what you are looking for# alerts8 22| MessagesAdd canvasO Filesmuyaпa veeseva zuzyhas been added to #alerts by Mira.Monday, 6 April -Thursday, 9 AprilAutomation for Jira APPSRD-6782 Transcription issue has been escalated with Critical priority to" @hereAutomation for Jira APPSRD:6782 Transcription issue has been assigned with Critical priority to Mihail Mihaylov @hereToday ~CircleCl APP 10:122 PRs with vulnerability fixes are ready for review $Please take a look at the code and confirm that everything works properly on your local machine oron a planet environment jPull requests (Gjiminny/app)• $11970 fix/securitvl.composer dependensyundates - 2026-04-15 (secfix/composer-20260415)• $11969 fix/securitvl.nom denendensy_undates - 2026-04-15 (secfix/npm-20260415 )|View workflow.rvn$ 1Message #alertsAa@JY-19967 Upgrade Python and libraries - AprMAINTENANCEBACKLOG v+ Createmeet.9o09e.com is snaring your SorcenStop sharingClick or hold page_up + page_down to start dictating• Support Daily - in 1h 28 m1428• Wed 15 Apr 10:37Campus X|) FirebaseE UM EvalunAsk Rovo4ComponentsMore 9+4.5= 8== 8= &= &= *= *= 8= 8= 8= %= 8=10:37 AM | [Platform] Planning | Session i7100% <8• Wed 13 May 13:32:289000Nikolay NikolovGalya Dimitrova4 othersStefka StoyanovaLukas Kovalik...
|
33538
|
NULL
|
NULL
|
NULL
|
|
33541
|
1274
|
12
|
2026-05-13T10:32:34.278458+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668354278_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-4047408223668449518
|
-8636777727364969024
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
QuickTime PlayerFileEditViewWindowHelp(ahlGalya Dimitrova (Presenting, annotating)SlackFileEditViewGoHistoryWindowHelp÷88JIMg For you• Recent [# Starred°? Apps|& Plans0 SpacesStarredJiminny (New)|u Platform TelIID ProcessingUID SE KanbanIID Capture TeaU Enterprise 9DiscoveryDMs+ActivityFiesLaterMoreProductRecent(9 Service-Desk= More spaces= FiltersB DashboardsOperations& CustomersJiminny Inc~+ More unread messagesE Lukas Kovalik, Nikolay..C. Nikolay IvanovP. Nikolay Yankov. Petko Kashinski. Stefka Stoyanovad Stoyan Tanev. Vasil Vasilev ER. Vilma A(. ZoriAP. Galya Dimitrova...Channels# alertsAppsConfluenceGoogle CalendarGoogle DrivejiminnyJira CloudToastu UserpilotQ Describe what you are looking for# alerts8 22| MessagesAdd canvasO Filesmuyaпa veeseva zuzyhas been added to #alerts by Mira.Monday, 6 April -Thursday, 9 AprilAutomation for Jira APPSRD-6782 Transcription issue has been escalated with Critical priority to" @hereAutomation for Jira APPSRD:6782 Transcription issue has been assigned with Critical priority to Mihail Mihaylov @hereToday ~CircleCl APP 10:122 PRs with vulnerability fixes are ready for review $Please take a look at the code and confirm that everything works properly on your local machine oron a planet environment jPull requests (Gjiminny/app)• $11970 fix/securitvl.composer dependensyundates - 2026-04-15 (secfix/composer-20260415)• $11969 fix/securitvl.nom denendensy_undates - 2026-04-15 (secfix/npm-20260415 )|View workflow.rvn$ 1Message #alertsAa@JY-19967 Upgrade Python and libraries - AprMAINTENANCEBACKLOG v+ Createmeet.9o09e.com is snaring your SorcenStop sharingClick or hold page_up + page_down to start dictating• Support Daily - in 1h 28 m1428• Wed 15 Apr 10:37Campus X|) FirebaseE UM EvalunAsk Rovo4ComponentsMore 9+4.5= 8== 8= &= &= *= *= 8= 8= 8= %= 8=10:37 AM | [Platform] Planning | Session i7100% <8• Wed 13 May 13:32:339000Nikolay NikolovGalya Dimitrova4 othersStefka StoyanovaLukas Kovalik...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
33542
|
1275
|
15
|
2026-05-13T10:32:34.276088+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668354276_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.35272607,"top":0.13088587,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.36136967,"top":0.13088587,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1152584637578662702
|
-8204420343118173242
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
PhostormProleteyViewINavigarecodeLaravelKeractorJOOISWindowFV faVsco.js?9 master k© EmailTextRelay.php= custom.log|aravel.l0gA SF (jiminny@localhost]4 HS_local [jiminny@localhost]& console (PROD] X A console [EU]© ConferenceService.php© InsightSeatService.php(C)InstantMeetingservice.on© IntercomService.php© IpapiClient.php© IpapiService.php© ParticipantShareService.pPlannatservice.png© PlaybackService.php© PlaybackVideoOnlyServic© PlaybookCategoryServicephp api.php Xk?phpu Playlistceneratorintenacc) simolehrouleservice.on(c) Socia AccountService.ohrc) SoftPhoneService.oho(C) TeamDeactivatedService@ [EMAIL](C) TeamService.ono© TranscodeParameterResc© UserService.php© Uuid.php, M TraitsM UseCasesmliser> D Utils• M Validation841sho heloers.onp0 InitialFrontendState.php© Jiminny.php© Plan.php© Serializer.php© TeamScimDetails.php>@ bootstrap>O build.>config>O] contrib|> C database> Mdocs> O front-end>llanal> • node_modules library rooM ohostan>D public>M resourcesv Mroutodohp ani.nhrpho ani v2 nhopho console nhn9049051102610271103111.03411.06911071199%1099A console [STAGING]A2A5 V1Y17 A Vdeclarelscrict-types=1)9900569570•dsee Jiminny Providers RouteServiceProviden* over Router Srouter575576use…..$router->group(['middleware' => ['auth:api']], static function (Router $router): void {...});$router->group(['middleware' => ['auth:api']], static function (Router $router): void {...}):Srouter->group(['middleware' => ['api']], static function (Router Srouter): void {...}):581582583Srouter->group(['prefix' => 'user'], static function (Router Srouter): void {...}):585Srouter->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router Srouter): void {...$router->group(['middleware' => ['auth:api']], static function (Router $router): void {...})589Srouter->group(['prefix' => 'page', 'middleware' => ['api''auth:api']], static function " use (Srouter): -vi591Srouter->qroup(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function ( use (Srouter)594Srouter->group(['prefix' => 'activity', 'middleware' => 'api'], static function ( use (Srouter): void {...})Srouter->aroup(['middleware' => ('auth:api'1l. static function @ use (Srouter) {...}):Srouter->aroup(['middleware' => f'auth:api'1l. static function (Router Srouter): void {...}).Srouter->arouo (middleware' => T'aoi'ilstatic function (Router $router): void {...}60€601602603604605$router->group(['middLeware' => ['auth:api']], static function (Router $router): void {...F);Srouter->group(['middleware' => ['api']], static function (Router Srouter): void {...}):609[MobileSettingsController::class, 'getAll']); /api/v1/mobile-settings'/mobile-settings'. [MobileSettingsController::class, 'updateSettings']) /api/v1/mobile-settings->middleware(['auth:api'.'can:kiosk.' . User::classl)-›name( name: 'api.kiosk.mobile_settings.update'):(55 minutes aao)Tx: Auto vSELECT * FROM crm_configurations WHERE id = 555;SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182SELECICONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,u.emailsa.*t.owner_id FROM social_accounts saJOTN usens u on u.id = sa.sociable idlSo jiminny040 A1 A40 V 64 ^JOIN teams t 1.n<->1: on t.id = u.team_ioWHERE u.team_id = 581 and sa.provider = 'salesforce';SELECT * FROM automated report results order by id desc:select * from features,select * from team features where feature id = 40:select * from teams where id = 556:select * from automated reports:where id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044["pdf", "podcast"]SELECT * FROM automated report results WHERE uuid to bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid:select * fromautomated_report results order by id desc;SELECT * FROM automated report results WHERE id = 1919select * from automated_report_results WHERE report id = 54;select * fron onnortunities where id = 7594349:SELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 -[EMAIL] * from playbooks where team_id = 711; # event 226147SSlECT * CROM nlavhook cateaonies WHEPE nlavhook 1d = 5515•SELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event':SELECT * FROM crm_fields WHERE id = 226147:SELECT * FROM crm_field_values WHERE crm_field_ id = 226147:SELECT * FROM crm configurations WHERE id = 692:SELSCTmomosalsa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idLIOTM toome +1necs1.on + Ad =n +oom ¿.CONCAT(u.id, CASE WHEN u.id = t.owner id THEN ' (owner)' ELSE '' END) AS user id.WHERE u.team_id = 711 and sa.provider = 'salesforce':SELECT * FROM crm profiles co JOTN users u 1.n<->1: on u.id = co.user id WHERE u.team_id = 711:select * from leads:• suppon Dally • In 1h zơm100% S2• Wed 13 May 13:32:34AskJiminnyReportActivityServiceTest vcascadeTrial Owner Role SeleSMS Failure Email Inve+0 ..The failure email logic is flawed because:• It's sent when the entire job fails, not specifically when the SMS fails to sendIt SMS is sent successtully but activity creation tails, no failure email is sent (but SMS was already sent)• If SMS sending fails but it's not a TextRelayException, no failure email is sent (user never knows SMS failed)The tailure emall should be based on whether the SMs was actually delivered by Twillo, not whether the emallprocessing jod succeeded.al .Show me more code around it. What is the trigger. I want to see the whole flow so i can replicate it locallyThought for 1sRead TextRelayService.php and 2 other filesSearched gooale text in confia lAccess to file . env is prohibited by .gitignore. You can enable access to gitignore files by enabling the setting Allow Cascade Accecs to Gitianore FiledSearched GOOGLE_TEXT_RELAY in ~/jiminny/appComplete SMS Email-to-Text Relay Flow1. Trigger PointRoute: POST /api/sms/relay in routes/api.php line 121 trom webhook.php controller: MailboxController::relay(lines 27-38)• phppubLic tunction relay(): Responsetry{sth1s->relayservice->sync;catch (Excention Se) {Sentrv.: cantureException(se);return response('ok'):2. Email Sync (TextRelayService::sync())• Fetches Gmail history since last sync point (cached)Creates TextRelav records with STATUS PROCESSINGDicnatches FmailTeytRelav iohc for esch new email3. Job Processina (EmailTextRelav::handle())Lines 79-159:Ask anvthina (84-D)« Code SWF-1.6W Windsurf Team1-1.UTE.8Po 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
33543
|
1274
|
13
|
2026-05-13T10:32:37.871311+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668357871_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
2
5
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
$router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);
$router->post('speakers', [KioskActivityController::class, 'addSpeakers']);
$router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);
$router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);
});
});
});
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->group(['prefix' => 'events'], static function (Router $router): void {
$router->post('authenticate', [Controllers\PusherController::class, 'auth'])
->name(Routes::WEBHOOK_PUSHER_AUTH);
});
});
$router->group(['middleware' => ['api']], static function (Router $r...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
5277996968146883474
|
2696331441845038283
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
2
5
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
$router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);
$router->post('speakers', [KioskActivityController::class, 'addSpeakers']);
$router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);
$router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);
});
});
});
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->group(['prefix' => 'events'], static function (Router $router): void {
$router->post('authenticate', [Controllers\PusherController::class, 'auth'])
->name(Routes::WEBHOOK_PUSHER_AUTH);
});
});
$router->group(['middleware' => ['api']], static function (Router $r...
|
33541
|
NULL
|
NULL
|
NULL
|
|
33544
|
1275
|
16
|
2026-05-13T10:32:37.885336+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668357885_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
2
5
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
$router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);
$router->post('speakers', [KioskActivityController::class, 'addSpeakers']);
$router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);
$router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);
});
});
});
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->group(['prefix' => 'events'], static function (Router $router): void {
$router->post('authenticate', [Controllers\PusherController::class, 'auth'])
->name(Routes::WEBHOOK_PUSHER_AUTH);
});
});
$router->group(['middleware' => ['api']], static function (Router $r...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.35272607,"top":0.13088587,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.36136967,"top":0.13088587,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.3700133,"top":0.13088587,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.37865692,"top":0.13088587,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.35339096,"top":0.10055866,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"bounds":{"left":0.36336437,"top":0.10055866,"width":0.007978723,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.37333778,"top":0.10055866,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"17","depth":4,"bounds":{"left":0.38264626,"top":0.10055866,"width":0.00930851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.39361703,"top":0.09896249,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.40093085,"top":0.09896249,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","depth":4,"bounds":{"left":0.124667555,"top":0.09736632,"width":0.4581117,"height":0.90263367},"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
5277996968146883474
|
2696331441845038283
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
2
5
1
17
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
$router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);
$router->post('speakers', [KioskActivityController::class, 'addSpeakers']);
$router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);
$router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);
});
});
});
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->group(['prefix' => 'events'], static function (Router $router): void {
$router->post('authenticate', [Controllers\PusherController::class, 'auth'])
->name(Routes::WEBHOOK_PUSHER_AUTH);
});
});
$router->group(['middleware' => ['api']], static function (Router $r...
|
33542
|
NULL
|
NULL
|
NULL
|
|
33545
|
1274
|
14
|
2026-05-13T10:32:44.682309+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668364682_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-1505543482185262446
|
-8924991868539532346
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
Code changed:
Hide
QuickTime PlayerFileEditViewWindowHelp(ahlGalya Dimitrova (Presenting, annotating)SlackFileEditViewGoHistoryWindowHelp÷88JIMg For you• Recent [# Starred°? Apps|& Plans0 SpacesStarredJiminny (New)|u Platform TelIID ProcessingUID SE KanbanIID Capture TeaU Enterprise 9DiscoveryDMs+ActivityFiesLaterMoreProductRecent(9 Service-Desk= More spaces= FiltersB DashboardsOperations& CustomersJiminny Inc~+ More unread messagesE Lukas Kovalik, Nikolay..C. Nikolay IvanovP. Nikolay Yankov. Petko Kashinski. Stefka Stoyanovad Stoyan Tanev. Vasil Vasilev ER. Vilma A(. ZoriAP. Galya Dimitrova...Channels# alertsAppsConfluenceGoogle CalendarGoogle DrivejiminnyJira CloudToastu UserpilotQ Describe what you are looking for# alerts8 22| MessagesAdd canvasO Filesmuyaпa veeseva zuzyhas been added to #alerts by Mira.Monday, 6 April -Thursday, 9 AprilAutomation for Jira APPSRD-6782 Transcription issue has been escalated with Critical priority to" @hereAutomation for Jira APPSRD:6782 Transcription issue has been assigned with Critical priority to Mihail Mihaylov @hereToday ~CircleCl APP 10:122 PRs with vulnerability fixes are ready for review $Please take a look at the code and confirm that everything works properly on your local machine oron a planet environment jPull requests (Gjiminny/app)• $11970 fix/securitvl.composer dependensyundates - 2026-04-15 (secfix/composer-20260415)• $11969 fix/securitvl.nom denendensy_undates - 2026-04-15 (secfix/npm-20260415 )|View workflow.rvn$ 1Message #alertsAa@JY-19967 Upgrade Python and libraries - AprMAINTENANCEBACKLOG v+ Createmeet.9o09e.com is snaring your SorcenStop sharingClick or hold page_up + page_down to start dictating• Support Daily - in 1h 28 m1428• Wed 15 Apr 10:37Campus X|) FirebaseE UM EvalunAsk Rovo4ComponentsMore 9+4.5= 8== 8= &= &= *= *= 8= 8= 8= %= 8=10:37 AM | [Platform] Planning | Session i7100% <8• Wed 13 May 13:32:449000Nikolay NikolovGalya Dimitrova4 othersStefka StoyanovaLukas Kovalik...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
33547
|
1275
|
17
|
2026-05-13T10:32:44.689153+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-13/1778 /Users/lukas/.screenpipe/data/data/2026-05-13/1778668364689_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3013190736094159138
|
-8348536751233201210
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Built-in Preview
Chrome
Firefox
Safari
Sync Changes
Hide This Notification
PhpStormProiectViewNavigateCodeLaravelRefactorloOlWindowHelFV faVsco.js?9 master k© EmailTextRelay.php= custom.log=laravel.logA SF (jiminny@localhost]4 HS_local [jiminny@localhost]& console (PROD] X A console [EU]© ConferenceService.php© InsightSeatService.php© InstantMeetingService.ph©IntercomService.php© IpapiClient.php©IpapiService.php© ParticipantShareService.p@ PlanhatService.php© PlaybackService.phpPlaybackVideoOnlyServic© PlaybookCategoryServicePlaylistGeneratorinterfaceResolveTeamCrmConnec© SimpleThrottleService.ph© SlackService.php@ SocialAccountService.phrphp api.php XC) TeamDeactivatedService@ TeamOwnerService.ohp106C) TeamService.oho© TranscodeParameterRescC) UserService.ohr©Uuid.php> M TraitsOUseCasesmliserD Utils• M Validation108110111|1121171114115116117118php helpers.php1199 InitialFrontendState.php120(G liminny nhn121© Plan.php(e) Corinlizor nhn122123@ TeamScimDetails.php124>O bootstrap> G build152153>O confial>D contrib154> C database> Mdocsi>Mfront-end> Mland> Mnode modules librarv root157158159|>Mohostan> Moublic161|>Mresourcesv Mrouted164phe ani nhnpho console nhnpho customer ani nhnA console [STAGING]12A5 v1V17 A Veclare(scricu-cypes=1)n*API routes_569570* Qsee |Jiminnu Providers RouteServiceProviderk ovar Router Sroutense .578'outer->aroun(['middleware' => ['auth:ani']l, static function (Router Srouter): void {57SSrouter-›get(uri:'/metadata/extension-app', [MetadataController::class,'extension']); /api/v1/metadata/extensio 580Srouter->get( uri:'/', [NumberAllocatorController::class, 'generate']); /api/v1582Srouter->delete( uri: '/key-moment/{activityMoment}', [MomentController::class, 'destroy'));/api/v1/key-moment/ 583Srouter->post( uri: '/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl']) /api/v585->middlewane (rInermiccion.t PermiccionFnum• •RECORn MEFTTNG->valuel)586->namol& name'instant-meeting.start'):// Meeting creation endpoint for Outlook add-inSrouter-›post ( uri: '/meetings'. [MeetingsController::class, 'create']) /api/v1/meetings->middleware(['permission:. PermissionEnum::RECORD_MEETING->valuel)5885891590597?// Number provisioning and search.594Srouter->get( uri: "/phone-numbers'. [NumberAllocatbrController::classgenerate'*api/viphone-numbersSrouter-›get( uri: /ohone-numbers/{number?:. [PhoneNumberController::class.'number' 1):aoivlonone-numbers/kn so/Srouter->aroun(['prefix' => 'deal-insiahts'l. static function (Router Srouter): void {...}):Srouter-›aet( uri:'/team-insiahts/users'. [TeamInsiqhtsController::class. 1fetchUsers'l)lapi/v1/team-insiahts/usczad=601Scouten-saet(luri:/team-insiahts/dashhoard'. [DashboardControllen..class._1fetch'l)lanilv1/team-inciahteldachbos103->name & name:Iteam insiahts. dashhoand")605Team Insiahts - Coachina FeedhackslScouten-sae+(luri:/team-insiahts/coaching-feedhacks-over-time/ [CoachingFeedhacksControllen.rclass.'fetci 607'/team-insights/coaching-feedbacks-over-time/download',[CoachingFeedbacksController::class, 611Itoam inciahte coachina foodhaake ovon timo download!).Srouter->qet(/api/v1/team-insights/coaching-feedbacks-over-time/drill-dowrmacter' hac heon rectored Il Pollback II Confiaure (55 minutes aao)Tx: Auto vSELECT * FROM crm_configurations WHERE id = 555;SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182SELECICONCAT(u.id, CASE WHEN U.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_idu.emailsa.*t.owner_id FROM social_accounts saHOTN usens u on u.id = sa.sociahle idlJOIN teams t 1.n<->1: on t.id = u.team_ioWHERE u.team_id = 581 and sa.provider = 'salesforce';SELECT * FROM automated report results order by id desc:select * from featuresselect * from team features where feature id = 40:select * from teams where id = 556:select * from automated reports›where id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044["pdf" "podcast"]SELECT * FROM automated report results WHERE uuid to bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid:select * from automated_report_results order by id desc;SELECT * FROM automated report results WHERE id = 1919select * from automated_report_results WHERE report id = 54;select * fron onnortunities where id = 7594349:SELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - [EMAIL] * from playbooks where team_id = 711; # event 226147SSlECT * CROM nlavhook cateaoniec WHEPE nlavhook 1d = 55151SELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';SELECT * CP0M eom fiolde WHERE id = 224147-SELECT * FROM crm_field_values WHERE crm_field_ id = 226147:SELECT * FROM crm configurations WHERE id = 692:SELSCTCONCAT(u.id, CASE WHEN u.id = t.owner id THEN ' (owner)' ELSE '• END) AS user id.momosalsa.*t.owner_id FROM social accounts saJOIN users u on u.id = sa.sociable idLIOTM toome +1..n<->1: on t.id = u.team_idWHERE u.team_id = 711 and sa.provider = 'salesforce':SELECT * FROM crm profiles cp JOTN users u 1.n<->1: on u.id = co.user id WHERE u.team_id = 711:select * From leads:So jiminny040 A1 A40 V 64 ^• suppon Dally • In 1h zơm100% L2• Wed 13 May 13:32:44U AskJiminnyReportActivityServiceTest vcascadeTrial Owner Role SeleSMS Failure Email Inve+0 ..The failure email logic is flawed because:• It's sent when the entire job fails, not specifically when the SMS fails to sendIt SMS is sent successtully but activity creation tails, no failure email is sent (but SMS was already sent)• If SMS sending fails but it's not a TextRelayException, no failure email is sent (user never knows SMS failed)The tailure emall should be based on whether the SMs was actually delivered by Twillo, not whether the emallprocessing joo succeeded.al .Show me more code around it. What is the trigger. I want to see the whole flow so i can replicate it locallyThought for 1sRead TextRelayService.php and 2 other filesSearched gooale text in confia lAccess to file . env is prohibited by .gitignore. You can enable access to gitignore files by enabling the setting Allow Cascade Accecs to Gitianore FiledDoad ani nhn #l 1,610lSearched GOOGLE_TEXT_RELAY in ~/jiminny/appComplete SMS Email-to-Text Relay Flow1. Trigger PointRoute: POST /api/sms/relay in routes/api.php line 121 trom webhook.php controller: MailboxController::relay(lines 27-38)phppubLic tunction relay(): Responsetry{sth1s->relayservice->sync;catch (Excention Se) {Sentrv.: cantureException(se);return response('ok'):2. Email Sync (TextRelayService::sync())• Fetches Gmail history since last sync point (cached)Creates TextRelav records with STATUS PROCESSINGDicnatches FmailTeytRelav iohc for esch new email3. Job Processina (EmailTextRelav::handle())Lines 79-159:Ask anvthina (84-D)« Code SWF-1.6WN Windsurf Teams121-501UTE.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49884
|
1771
|
47
|
2026-05-18T07:02:55.056198+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087775056_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_expanded":false}]...
|
8043719072324535154
|
-8628527368849355612
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
FirefoxFileEditViewHistor Project: faVsco.js, menu
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpDaily - Platform • 3 m left100% <28• Mon 18 May 10:02:54meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)AA3+KioskAutomulcd KeoorsMoolle version$*18ОООBISTКF7 ISR83 JmX PrOIhttps://apo.jiminny.com/kiosk/onboard-listC Projects|23 SSHSetup Account|General|[EMAIL] OPPORTUNITIES SYNC PER:COCALENONe *• Office |GoogleOTPHONSmicny VoiceTiers & Add-onsO Tlcrs osolainsdCapture© Selected•Sidekicko ScaleSelectAsk Jiminny on Deal DealInsights DealRisks live CoschingCoxching Framework Topics in Deals Activity Stats• Themes and Topics |Cosching Focus AICRMFillingAl Activity Type Al Call ScoringSelectAwlacaweoAd Jiminny on Amthine Ask Sminay Reoortsl* Add OnsKey Words Scoring Jiminny Voice O SCIM® O Call Translation ©Listener RoleD Explicit Recording Consent ©Atte XI83 мO XCQ Sch x© cu x | * Cu xCos X6 Jm xО мс3 POoc xE Datadog* ClaudeO CircieciSentryL TasksC DevDourceE Preserve log1 Disable cache OfflineY Fiter• Big request rowsE Ovenview300 mн400 msl$00 malFetchpolr DocCssJs• Group by trameO Screenshots1400 mdX HeadersO organizations© iParропка!...* (features: (*SIDEKICK,SETTINGS*], ACCBU,101 "00226469-5517-4a05-aSS6-e$481ceB9t23*, nanei "Coluens",-)• features: (*SIDEKICK_SETTENGS"]_sync beriod: "Зa"tier._10: *eST6068)-6478-4)06-83e5-4500958563c*8• Mon 18 May 10:02Awaare016 A2 m22200 ml2400 mmNikolay YankovLukas Kovalik10:02 AM | Daily - Platform16:29111Lộ3...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49885
|
1771
|
48
|
2026-05-18T07:02:56.401342+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087776401_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsW FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpDaily - Platform • 3 m left100% <28• Mon 18 May 10:02:56meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)AA3+KioskAutomuled KeoorsMoolle version$**18F7 ISR83 JmX PrOIhttps://apo.jiminny.com/kiosk/onboard-listC Projects|2 SSHSetup Account|General|[EMAIL] OPPORTUNITIES SYNC PER:COCALENON *• Office |GoogleOTPHONSmicny VoiceTiers & Add-onsO Tlcrs osolainsdCapture© SelectedSidekicko ScaleSelectAsk Jiminny on Deal DealInsights DealRisks live CoschingCoxching Framework Topics in Deals© Activity StatsThemes and Topics Coaching Focus O AI CRM FillingAl Activity Type Al Call ScoringSelectAwlacaweoAdk Jiminny on Amthine Ask Sminay Reoortsl* Add OnsKey Words Scoring Jiminny Voice O SCIM® O Call Translation ©listener RoleD Explicit Recording Consent ©Atte XI83 MO XCQ Sch xCos Xoum x© cu x | * Ch xQ мс04G03 PO8• Mon 18 May 10:02• caE Datadog* ClaudeO CircieciSentryL TasksC DevAwaareDource016 A2 m2E Preserve log1 Disable cache OfflineY Fiter• Big request rowsE Ovenview300 mн400 msl00 mлFetchpol DocCssJs• Group by trameO Screenshots1400 md2200 ml2400 mmlX HeadersO organizations© iParропка!...* (features: (*SIDEKICK,SETTINGS*], ACCOU,101 "[PHONE]-4905-aSS6-e$481ceB9t23*, nanei "Coluens",-)• features: ("SIDEKICK_SETTINGS")me persodstier._10: *eST6668)-6478-4)06-83e5-45009585863c*Nikolay YankovLukas Kovalik10:02 AM | Daily - Platform...16:30Lộ3...
|
NULL
|
3709486278284775697
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsW FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpDaily - Platform • 3 m left100% <28• Mon 18 May 10:02:56meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)AA3+KioskAutomuled KeoorsMoolle version$**18F7 ISR83 JmX PrOIhttps://apo.jiminny.com/kiosk/onboard-listC Projects|2 SSHSetup Account|General|[EMAIL] OPPORTUNITIES SYNC PER:COCALENON *• Office |GoogleOTPHONSmicny VoiceTiers & Add-onsO Tlcrs osolainsdCapture© SelectedSidekicko ScaleSelectAsk Jiminny on Deal DealInsights DealRisks live CoschingCoxching Framework Topics in Deals© Activity StatsThemes and Topics Coaching Focus O AI CRM FillingAl Activity Type Al Call ScoringSelectAwlacaweoAdk Jiminny on Amthine Ask Sminay Reoortsl* Add OnsKey Words Scoring Jiminny Voice O SCIM® O Call Translation ©listener RoleD Explicit Recording Consent ©Atte XI83 MO XCQ Sch xCos Xoum x© cu x | * Ch xQ мс04G03 PO8• Mon 18 May 10:02• caE Datadog* ClaudeO CircieciSentryL TasksC DevAwaareDource016 A2 m2E Preserve log1 Disable cache OfflineY Fiter• Big request rowsE Ovenview300 mн400 msl00 mлFetchpol DocCssJs• Group by trameO Screenshots1400 md2200 ml2400 mmlX HeadersO organizations© iParропка!...* (features: (*SIDEKICK,SETTINGS*], ACCOU,101 "[PHONE]-4905-aSS6-e$481ceB9t23*, nanei "Coluens",-)• features: ("SIDEKICK_SETTINGS")me persodstier._10: *eST6668)-6478-4)06-83e5-45009585863c*Nikolay YankovLukas Kovalik10:02 AM | Daily - Platform...16:30Lộ3...
|
49884
|
NULL
|
NULL
|
NULL
|
|
49886
|
1772
|
23
|
2026-05-18T07:02:56.406836+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087776406_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormVIewINavicareCodeFV faVsco.js?° pipedrive- PhpStormVIewINavicareCodeFV faVsco.js?° pipedrive-sdk-poc vD ImportCallv D Invitationuserinvitationdro.onp> D RolesO SCIMw scorecara0) Service>D Users@ UserEmail.pho> 0 Emails> D Enumsv D EventsM Activities•lActivitvProviderM AiAutomation•M AudiaD BotsCoachingiM ConferencesM Connections•D Crm©) ActivitvCancelled.pnp© ActivityCancelledAsNoShow.php© ActivityLeadConverted.php© ActivityLinkedToCrm.php© ActivityLogged.php© ActivityScheduled.php© AutoLogActivity.php© EmailWithCRMObjectsProcessed.phpc) Followupscheduled.pho© LeadConverted.phpc) Stagechanged.pho> C Dialers› → Messages> M Participants>_ Provider> _ SessionsSms> SoftohoneVideoC) Activitvereated.onn@ ActivitvCrmProvidedUndated.ohn© ActivityExported.php© ActivityTypeUpdated.php© ActivityUpdated.php@ EynortTokenGenerated.php(C) NoteTaken.nhn© ProspectUpdated.php© SetupintegrationEvent.php© StageUpdated.php(e) StatusUndated.phpconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.phpc createrlaybookcreatedevent.ongpnp api.phpc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.php© AskAnythingPromptService.php(C)AutomatedReportsCommand.ohvphp ao_y2.ohd(C) RequestGenerateReport.Job.oho© AutomatedReport.phpEditTeamModal.vue* @var Router $router// mcp.audit MUST stay outermost so its $next($request) call wraps the auth/ and tier quards. Otherwise 401 (auth:api) and 403 (mcp.tier) reiectionssnorc-clrcult Derore McpAuolthlodleware..nanale everruns and we loseaudit rows for exactly the requests the security log most needs to capture.McpAud1tM1ddLeware: :wr1teAudltkow null-checks srequest->usero, so wr1t1ng/ pre-auth is safeNcp::wed"/mcp'Jiminnyserver::class)->m1ddLewareul'mcp.aud1t'auth.ap1', 'mcp.tler'o"› Srouter->arouod'middleware' => authiaoi". static function Router Srouter):Srouter->aroupd'middLeware' => "auth:aoi", static function Router Srouter):Srouter->aroupdl 'middleware' => 'aoi' static function Router Srouter): voidiSrouter->aroundl'orefix' z> "usen' static function Router srouter): void<..> Srouter->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static functionScouten->aroundr'middlewanel => 'authrani'll static function Routen Scouter)•› Srouter->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static> Srouter->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], stat› Srouter->group(['prefix' => 'activity', 'middleware' => 'api'], static function (118> Srouter->group(['middleware' => ['auth:api']], static function • use (Srouter) {12€> Srouter->group(['middleware' => ['auth:api']], static function (Router Srouter): 122Srouter->group('middleware' => ['api']l.=custom.log4 SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]# console [PKob)© TestPipedriveOfficialSdkCommand.php X © Kernel.phpconsole EUuse Jiminny models redmuse Pipearive verszons vz Ap1 AccIviclesApluse Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave versions vz Ap1 Leaurielasapluse Pipedrive\versions\v2 \Api\DealsApi:use Pipearive versions vz Ap1 PersonrlelClassesFilesSymbolsActionsuse Pipedrive versions vz Ap1 PersonsAD1use Pipeorive verszons vz contzquracion:|1 usagel22 024 026 032 6Tprotected Ssignature = "11minnv:test-p1pedrive-officral-sok teamid-'*protected Sdescnintion = 'Test official Pinednive SDK (oinednive/ninednive) with exiorivate arrav Sresults = 13lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent::_constructo:sthls->cokennanager = Scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}1 usageorivate function testBasicCrudOperations(Social Account SsocialAccount: void$this->info( string: 'Test 2: Basic CRUD Operations');tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilsenToken0•.strlen(SrawDbToken)."")•Trial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderReplace Opportunity Sync Period locationCurrently at lines 71-84Part of Create TeamHandled in SditTeamModalImplementation PlanFrontend ChangesProject Files v b Y0after line 39imGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)• Add role options: Recorder, Recorder & Voice, Analyst• Ado owner role to torm state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder_and_voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT acceoted when editina (validation should reiect it)Key Files to Modify1. /front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php4. /app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc•Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)• Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role option#Daily - Platform - 3 m left100% 5• Mon 18 May 10:02:55AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothAsk anvthina (&4-L)SWF.16Cal aWN Windsurf Teamo106-1UTE.8io 4 spaces...
|
NULL
|
475009543699012436
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormVIewINavicareCodeFV faVsco.js?° pipedrive- PhpStormVIewINavicareCodeFV faVsco.js?° pipedrive-sdk-poc vD ImportCallv D Invitationuserinvitationdro.onp> D RolesO SCIMw scorecara0) Service>D Users@ UserEmail.pho> 0 Emails> D Enumsv D EventsM Activities•lActivitvProviderM AiAutomation•M AudiaD BotsCoachingiM ConferencesM Connections•D Crm©) ActivitvCancelled.pnp© ActivityCancelledAsNoShow.php© ActivityLeadConverted.php© ActivityLinkedToCrm.php© ActivityLogged.php© ActivityScheduled.php© AutoLogActivity.php© EmailWithCRMObjectsProcessed.phpc) Followupscheduled.pho© LeadConverted.phpc) Stagechanged.pho> C Dialers› → Messages> M Participants>_ Provider> _ SessionsSms> SoftohoneVideoC) Activitvereated.onn@ ActivitvCrmProvidedUndated.ohn© ActivityExported.php© ActivityTypeUpdated.php© ActivityUpdated.php@ EynortTokenGenerated.php(C) NoteTaken.nhn© ProspectUpdated.php© SetupintegrationEvent.php© StageUpdated.php(e) StatusUndated.phpconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.phpc createrlaybookcreatedevent.ongpnp api.phpc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.php© AskAnythingPromptService.php(C)AutomatedReportsCommand.ohvphp ao_y2.ohd(C) RequestGenerateReport.Job.oho© AutomatedReport.phpEditTeamModal.vue* @var Router $router// mcp.audit MUST stay outermost so its $next($request) call wraps the auth/ and tier quards. Otherwise 401 (auth:api) and 403 (mcp.tier) reiectionssnorc-clrcult Derore McpAuolthlodleware..nanale everruns and we loseaudit rows for exactly the requests the security log most needs to capture.McpAud1tM1ddLeware: :wr1teAudltkow null-checks srequest->usero, so wr1t1ng/ pre-auth is safeNcp::wed"/mcp'Jiminnyserver::class)->m1ddLewareul'mcp.aud1t'auth.ap1', 'mcp.tler'o"› Srouter->arouod'middleware' => authiaoi". static function Router Srouter):Srouter->aroupd'middLeware' => "auth:aoi", static function Router Srouter):Srouter->aroupdl 'middleware' => 'aoi' static function Router Srouter): voidiSrouter->aroundl'orefix' z> "usen' static function Router srouter): void<..> Srouter->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static functionScouten->aroundr'middlewanel => 'authrani'll static function Routen Scouter)•› Srouter->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static> Srouter->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], stat› Srouter->group(['prefix' => 'activity', 'middleware' => 'api'], static function (118> Srouter->group(['middleware' => ['auth:api']], static function • use (Srouter) {12€> Srouter->group(['middleware' => ['auth:api']], static function (Router Srouter): 122Srouter->group('middleware' => ['api']l.=custom.log4 SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]# console [PKob)© TestPipedriveOfficialSdkCommand.php X © Kernel.phpconsole EUuse Jiminny models redmuse Pipearive verszons vz Ap1 AccIviclesApluse Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave versions vz Ap1 Leaurielasapluse Pipedrive\versions\v2 \Api\DealsApi:use Pipearive versions vz Ap1 PersonrlelClassesFilesSymbolsActionsuse Pipedrive versions vz Ap1 PersonsAD1use Pipeorive verszons vz contzquracion:|1 usagel22 024 026 032 6Tprotected Ssignature = "11minnv:test-p1pedrive-officral-sok teamid-'*protected Sdescnintion = 'Test official Pinednive SDK (oinednive/ninednive) with exiorivate arrav Sresults = 13lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent::_constructo:sthls->cokennanager = Scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}1 usageorivate function testBasicCrudOperations(Social Account SsocialAccount: void$this->info( string: 'Test 2: Basic CRUD Operations');tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilsenToken0•.strlen(SrawDbToken)."")•Trial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderReplace Opportunity Sync Period locationCurrently at lines 71-84Part of Create TeamHandled in SditTeamModalImplementation PlanFrontend ChangesProject Files v b Y0after line 39imGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)• Add role options: Recorder, Recorder & Voice, Analyst• Ado owner role to torm state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder_and_voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT acceoted when editina (validation should reiect it)Key Files to Modify1. /front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php4. /app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc•Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)• Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role option#Daily - Platform - 3 m left100% 5• Mon 18 May 10:02:55AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothAsk anvthina (&4-L)SWF.16Cal aWN Windsurf Teamo106-1UTE.8io 4 spaces...
|
49882
|
NULL
|
NULL
|
NULL
|
|
49887
|
1771
|
49
|
2026-05-18T07:02:58.173218+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087778173_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7266624862028544203
|
577591577001045378
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpDaily - Platform • 3 m left100% <28• Mon 18 May 10:02:57meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)AA3+KioskAutomuled KeoorsMoolle verwon$*18ОООBISTКF7 ISR83 JmX PrOhttps://apo.jiminny.com/kiosk/onboard-listC Projects|23 SSHSetup Account|General|[EMAIL] OPPORTUNITIES SYNC PER:COCALENONe *• Office |GoogleOTPHONSmicny VoiceTiers & Add-onsO Tlcrs osolainsdCapture© Selected•Sidekicko ScaleSelectAsk Jiminny on Deal DealInsights Deal Risks Live CoschingCosching Framework Topics in Deals© Activity Stats• Themes and TopicsCosching Focus AICRMFillingAl Activity Type Al Call ScoringSelectAulomncaweooAd Jiminay on Anthine Ask Sminay Reoorts)* Add OnsKey Words Scoring feminny Voice SCIM® Call Translation ©Listener RoleExplicit Recording Consent ©Atte XI83 мO XCQ Sch x© cu x | * Cu xCos Xo Jm xО мс3 POoc xE Datadog* ClaudeO CircieciSentryL TasksC DevDourceAppcadorE Preserve log1 Disable cache OfflineY Fiter• Big request rowsE Ovenview300 mн400 msl$00 malFetchpol DocCsssFont• Group by trameO Screenshots1400 mdX HeadersO organizations© iParропка!...* (features: (*SIDEKIOK,SETTINGS*], ACCOUn,10 "[PHONE]-4305-a5S6-ed481ceB9t23*, nanes "Celuens",-)("SIDEKICK_SETTENGS")ynt persod:tier18:+518665)-0478-4)a6-83e5-6508958586%c8• Mon 18 May 10:02Awaare016 A2 m22200 ml2400 mmNikolay Yankov10:02 AM | Daily - PlatformLukas Kovalik16:32Lộ3...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49888
|
1772
|
24
|
2026-05-18T07:03:01.288256+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087781288_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormVIewINavigareCodeLaravelKeractorFV faVsco. PhostormVIewINavigareCodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-poc vProiectEditTeamModal vueconverLeadAcuvites.ong© SyncToPlanhat.phpus features.jsFeaturesGroup.vueFeaturesList.vuec createrlaybookcreatedevent.ong> • OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• - shared• • UsersettingsVseuuinas,vue> sharedSoftohonecoachheloersM oluainsM routerI storeD utilsus main.jsTs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cis( indoy htmll@ isconfia.ison# package.isonM+ README.mdstats.htmlusvite.confia.svarn.lockE varn-error.lod> Mlana> E node_modules library rooM ohostan> M oublic>M resourcesv Mroutodohp ani.nhrpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phplatedReportsCommand.ohdphp api_v2.phpC) RequestGenerateReport.Job.ohvAutomatedReport.phpEditTeamModal.vue8928941977X ₽ Cc W220srouter->groupul'pretix ='userstatic function (Router Srouter): void {...}24 6t→ Srouter-›qroupul'middleware' ='aurh.aot').'prefix' => 'sms'], static function26 6t› Srouter->aroup('middleware' => 'auth:aoi'], static function Router Srouter):› Srouter-›aroup(l'prefix' => 'page', "middleware' => 'aoa'.auth:ao" staticSrouter->aroupd'prefix' E"auth:partner-ap1"), stat 30me'D:Scouter->aroundr'orefixt =>zations'], static function ( use (Srout32 6T'arouns'l static function O use (Srouter): vosdSnnuten->anoundrinnpfiyl => lucencil ctatic function Onuce Srouten)• voiai$router->group(['prefix' => 'activities'], static function () use (Srouter):› Srouter->group(['prefix' => 'activity', 'middleware' => 'api'], static function (> Srouter->group(['middleware' => ['auth:api']], static function • use (Srouter)› Srouter->group(['middleware' => ['auth:api']]. static function (Router Srouter):Srouter->qroupd'middleware' => ['api']l.static function Router Srouter: void "...rSrouter->oroun('middleware' => 'auth'aot', static function Router Srouter):Srouter->aroundi'middleware' => "'ani']l static function Router Srouter): voidiScouter->aetd uri: "mobile-settinos'.MobileSettinascontrollen:classlLoetA11'1, 12:=custom.logA SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]A console [PROD]© TestPipedriveOfficialSdkCommand.php X © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave verszons vz Ap1 Leaurielasapluse Pipedrive\versions\v2 \Api\DealsApi:use Pipedrive versions vz Ap1 Personr1elasap1use ipedrive verszons Vz Ap1 Personsap1.use Pipedrive versions vz contzquration.|1 usagelprotected Ssignature = "11m1nnv:test-p1pedrive-officral-sok teamid-'*protected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults =11 usageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: void$this->info( string: 'Test 2: Basic CRUD Operations'):tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilsenToken0•strlen SnawlhTokendTrial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Dart of Greate TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT acceoted when editina (validation should reiect it)Key Files to Modify1. /front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role option#Daily - Platform • 2 m left100% Lz• Mon 18 May 10:03:00U AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothAsk anvthina (&4-L)SWF.16Cal a894-28 (4 charc)Po 4 spaces...
|
NULL
|
-320081820660466009
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhostormVIewINavigareCodeLaravelKeractorFV faVsco. PhostormVIewINavigareCodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-poc vProiectEditTeamModal vueconverLeadAcuvites.ong© SyncToPlanhat.phpus features.jsFeaturesGroup.vueFeaturesList.vuec createrlaybookcreatedevent.ong> • OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• - shared• • UsersettingsVseuuinas,vue> sharedSoftohonecoachheloersM oluainsM routerI storeD utilsus main.jsTs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cis( indoy htmll@ isconfia.ison# package.isonM+ README.mdstats.htmlusvite.confia.svarn.lockE varn-error.lod> Mlana> E node_modules library rooM ohostan> M oublic>M resourcesv Mroutodohp ani.nhrpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phplatedReportsCommand.ohdphp api_v2.phpC) RequestGenerateReport.Job.ohvAutomatedReport.phpEditTeamModal.vue8928941977X ₽ Cc W220srouter->groupul'pretix ='userstatic function (Router Srouter): void {...}24 6t→ Srouter-›qroupul'middleware' ='aurh.aot').'prefix' => 'sms'], static function26 6t› Srouter->aroup('middleware' => 'auth:aoi'], static function Router Srouter):› Srouter-›aroup(l'prefix' => 'page', "middleware' => 'aoa'.auth:ao" staticSrouter->aroupd'prefix' E"auth:partner-ap1"), stat 30me'D:Scouter->aroundr'orefixt =>zations'], static function ( use (Srout32 6T'arouns'l static function O use (Srouter): vosdSnnuten->anoundrinnpfiyl => lucencil ctatic function Onuce Srouten)• voiai$router->group(['prefix' => 'activities'], static function () use (Srouter):› Srouter->group(['prefix' => 'activity', 'middleware' => 'api'], static function (> Srouter->group(['middleware' => ['auth:api']], static function • use (Srouter)› Srouter->group(['middleware' => ['auth:api']]. static function (Router Srouter):Srouter->qroupd'middleware' => ['api']l.static function Router Srouter: void "...rSrouter->oroun('middleware' => 'auth'aot', static function Router Srouter):Srouter->aroundi'middleware' => "'ani']l static function Router Srouter): voidiScouter->aetd uri: "mobile-settinos'.MobileSettinascontrollen:classlLoetA11'1, 12:=custom.logA SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]A console [PROD]© TestPipedriveOfficialSdkCommand.php X © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave verszons vz Ap1 Leaurielasapluse Pipedrive\versions\v2 \Api\DealsApi:use Pipedrive versions vz Ap1 Personr1elasap1use ipedrive verszons Vz Ap1 Personsap1.use Pipedrive versions vz contzquration.|1 usagelprotected Ssignature = "11m1nnv:test-p1pedrive-officral-sok teamid-'*protected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults =11 usageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: void$this->info( string: 'Test 2: Basic CRUD Operations'):tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilsenToken0•strlen SnawlhTokendTrial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Dart of Greate TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT acceoted when editina (validation should reiect it)Key Files to Modify1. /front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role option#Daily - Platform • 2 m left100% Lz• Mon 18 May 10:03:00U AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothAsk anvthina (&4-L)SWF.16Cal a894-28 (4 charc)Po 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49889
|
1771
|
50
|
2026-05-18T07:03:04.232094+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087784232_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
4013489942575271730
|
-7483500116281160310
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
Firefox+18FileEditViewHistory→Nikolay Yankov (Presenting)ОООBUSTКF7 ISRX PrOIhttps://apo.jiminny.com/kiosk/onboard-listC Projects|2 SSHKioskSetup Account|General|[EMAIL] OPPORTUNITIES SINC PCR:COAutomuled KeoortsMoolle versionCALENON *• Office |GoogleOTPHONSmicny VoiceTiers & Add-onsO Tlcrs osolainsdCapture© SelectedSidekicko ScaleSelectAsk Jiminny on Deal DealInsights Deal Risks Live CoschingCoxching Framework Topics in Deals© Activity Stats• Themes and Topics Cosching Focus O AI CRMFilling• Al Activity Type Al Call ScoringSelectAutomated Reoorts Ad Jiminny on Anthine Ask Sminay Reoortsl* Add OnsKey Words Scoring fieminny Voice SCIM® Call Tramslation ©Listener RoleExplicit Recording Consent ©BookmarksProfilesToolsWindowHelpDaily - Platform • 2 m left]100% <28• Mon 18 May 10:03:03|meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comAA3010Atte XI83 MO XCQ Sch xCos X© cu x | * Ch x©sm xO мСI04G03 PO8• Mon 18 May 10:03• caE Datadog* ClaudeO Circieci*xIL TasksC Dev018 A2 12E Preserve log1 Disable cache OfflineY Fiter• Big request rowsE Ovenview2,000 mDoc• Group by trameO Screenshots14.000 mн22,000 mO organizationsRasoonaat.О Патропка!....uceukиX Headers- Request Payload* (features: (*SIDEKIOK,SETTINGS*], ACCOUn,101 "[PHONE]-4305-a5S6-ed481ceB9123*, nanes "Celuens",-)• features: (*SIDEKIOK,SETTINGS")_syne_peried: "3eNikolay YankovLukas Kovalik10:03 AM | Daily - Platform16:38Lộ3...
|
49887
|
NULL
|
NULL
|
NULL
|
|
49890
|
1771
|
51
|
2026-05-18T07:03:09.382153+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087789382_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3740816030388009784
|
-8636489586330588030
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform • 2 m left]100% <28• Mon 18 May 10:03:09meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)EditAA8• Mon 18 May 10:03*2 Practol57 (SRO-1X Jmirhttps://app.jiminny.com/dashboard- JeinyC Projects& SSHMy RecordingsTeam RecordingsEveryone's RecordingsNikolay Yankov at Jimincy (EU)®#12 Feb, 10:19 AMNikolay Yankov at Jiminny (EU) 4UntnownourtomerNotetaker added by Nikolay YankovNotetaker added by Nikolay YankovUnknown CustomerNotetaker added by Nikolay YankovUrtnowncuromerNotetaker added by Nikolay YankovNocetaker added by Nikolay YankovUntnown curomer31 Mar. 2025,4-43 PM3 Altent83 MCP-SchenCursoDataosg• JmineTrending this month0 МСР T.Pioel:*xIL taskLive Feed• Calend© JminC DevDScheduleThis WeckMiguel Hernandez at Cayetano «#Mect.with BccheftomEmiccxD 4Team ScheduleNo ActivityInvite NotetakerNikolay YankovNo MeetingsLukas Kovalik10:03 AM | Daily - Platform16:43...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49891
|
1771
|
52
|
2026-05-18T07:03:12.396687+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087792396_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organi
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
10/10
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
Built-in Preview
Chrome
Firefox
Safari
2
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
use Jiminny\Mcp\Servers\JiminnyServer;
use Laravel\Mcp\Facades\Mcp;
// mcp.audit MUST stay outermost so its $next($request) call wraps the auth
// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections
// short-circuit before McpAuditMiddleware::handle ever runs and we lose
// audit rows for exactly the requests the security log most needs to capture.
// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing
// pre-auth is safe.
Mcp::web('/mcp', JiminnyServer::class)
->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"organi","depth":4,"on_screen":true,"value":"organi","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10/10","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\nuse Jiminny\\Mcp\\Servers\\JiminnyServer;\nuse Laravel\\Mcp\\Facades\\Mcp;\n\n// mcp.audit MUST stay outermost so its $next($request) call wraps the auth\n// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections\n// short-circuit before McpAuditMiddleware::handle ever runs and we lose\n// audit rows for exactly the requests the security log most needs to capture.\n// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing\n// pre-auth is safe.\nMcp::web('/mcp', JiminnyServer::class)\n ->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\nuse Jiminny\\Mcp\\Servers\\JiminnyServer;\nuse Laravel\\Mcp\\Facades\\Mcp;\n\n// mcp.audit MUST stay outermost so its $next($request) call wraps the auth\n// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections\n// short-circuit before McpAuditMiddleware::handle ever runs and we lose\n// audit rows for exactly the requests the security log most needs to capture.\n// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing\n// pre-auth is safe.\nMcp::web('/mcp', JiminnyServer::class)\n ->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.02013889,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // v2 SDK might have different method names\n // Try common v2 method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n $result = $apiInstance->getDealsSummary();\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals Summary', true, \"Retrieved deals summary in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // v2 SDK might have different method names\n // Try common v2 method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n $result = $apiInstance->getDealsSummary();\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals Summary', true, \"Retrieved deals summary in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7960749666670150745
|
2696331441576602827
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organi
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
10/10
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
Built-in Preview
Chrome
Firefox
Safari
2
5
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
use Jiminny\Mcp\Servers\JiminnyServer;
use Laravel\Mcp\Facades\Mcp;
// mcp.audit MUST stay outermost so its $next($request) call wraps the auth
// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections
// short-circuit before McpAuditMiddleware::handle ever runs and we lose
// audit rows for exactly the requests the security log most needs to capture.
// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing
// pre-auth is safe.
Mcp::web('/mcp', JiminnyServer::class)
->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
...
|
49890
|
NULL
|
NULL
|
NULL
|
|
49892
|
1771
|
53
|
2026-05-18T07:03:15.423282+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087795423_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organi
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
10/10
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"organi","depth":4,"on_screen":true,"value":"organi","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10/10","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5726438715110463865
|
-8357196126790488122
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organi
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
10/10
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform • 2 m left100% L28• Mon 18 May 10:03:15meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)AA3Edit57 ISRO-1X Jminhttps://aco.jiminny.com/dashboardC Projects3 Attent83 МCР-e ANS8 SSHHome | SalesforceCursoE Datadog** Create Invitation|[EMAIL] [EMAIL] Roies &.Permissiond0.G0• Jmine•МОРT© Calen* ClaudeO CiecieciSentryC LasasLa Insights & Coachin0 DewE Preserve log1 Disable cache Offine• Big request rows2 Overview20 mл40 г8ltò mmFechpolr Doc• Group by trameO Screenshots$0 ms100 mg120 msNaroSuwaType© i7arponsar%: 2Fpiudon production&r=6-019e39e1-0_ (talled) net. ERR_INTERNET,DISC...xhe8• Mon 18 May 10:03L Al Bookmarks> 013 42 1$2160 mмissotolminisa 00-Nikolay Yankov$• UserManagerDOES THE PERSON HAVE CRM ACCESS CAwhe the toksmyindreahohorchon corsoeresto youSend InviteLukas Kovalik10:03 AM | Daily - Platform16:49::...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49893
|
1771
|
54
|
2026-05-18T07:03:18.452663+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087798452_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organi
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
10/10
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
Built-in Preview
Chrome
Firefox
Safari
2
5
3
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
use Jiminny\Mcp\Servers\JiminnyServer;
use Laravel\Mcp\Facades\Mcp;
// mcp.audit MUST stay outermost so its $next($request) call wraps the auth
// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections
// short-circuit before McpAuditMiddleware::handle ever runs and we lose
// audit rows for exactly the requests the security log most needs to capture.
// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing
// pre-auth is safe.
Mcp::web('/mcp', JiminnyServer::class)
->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"organi","depth":4,"on_screen":true,"value":"organi","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10/10","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\nuse Jiminny\\Mcp\\Servers\\JiminnyServer;\nuse Laravel\\Mcp\\Facades\\Mcp;\n\n// mcp.audit MUST stay outermost so its $next($request) call wraps the auth\n// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections\n// short-circuit before McpAuditMiddleware::handle ever runs and we lose\n// audit rows for exactly the requests the security log most needs to capture.\n// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing\n// pre-auth is safe.\nMcp::web('/mcp', JiminnyServer::class)\n ->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\nuse Jiminny\\Mcp\\Servers\\JiminnyServer;\nuse Laravel\\Mcp\\Facades\\Mcp;\n\n// mcp.audit MUST stay outermost so its $next($request) call wraps the auth\n// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections\n// short-circuit before McpAuditMiddleware::handle ever runs and we lose\n// audit rows for exactly the requests the security log most needs to capture.\n// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing\n// pre-auth is safe.\nMcp::web('/mcp', JiminnyServer::class)\n ->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.02013889,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // v2 SDK might have different method names\n // Try common v2 method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n $result = $apiInstance->getDealsSummary();\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals Summary', true, \"Retrieved deals summary in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // v2 SDK might have different method names\n // Try common v2 method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n $result = $apiInstance->getDealsSummary();\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals Summary', true, \"Retrieved deals summary in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5876300267798946487
|
2696331441845038283
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organi
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
10/10
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
Built-in Preview
Chrome
Firefox
Safari
2
5
3
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
use Jiminny\Mcp\Servers\JiminnyServer;
use Laravel\Mcp\Facades\Mcp;
// mcp.audit MUST stay outermost so its $next($request) call wraps the auth
// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections
// short-circuit before McpAuditMiddleware::handle ever runs and we lose
// audit rows for exactly the requests the security log most needs to capture.
// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing
// pre-auth is safe.
Mcp::web('/mcp', JiminnyServer::class)
->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
...
|
49892
|
NULL
|
NULL
|
NULL
|
|
49894
|
1771
|
55
|
2026-05-18T07:03:26.967657+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087806967_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform • 2 m left]100% <28• Mon 18 May 10:03:26meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)+KioskAutomalco Keportsmobile verscon18$2 Prattol57 ISRO-83 Jmier83 Promo3 Altent83 МСР-© Cursohttps://app.jiminny.com/kiosk/onboard-listD somEal DatadooSetup Account|General|LoumntynahorotcomIMPORT OPPORTUNITIES SYNC, PER:COCALINONE *• OfficeGoogleSminny VoiceTiers & Add-onsO Tlers crolainedCaptureO Selected2 Sidekicko ScaleAsk Jiminny on Deal DealInsights DeslRisks Live CoschingCosching Framework Topics in Deals © Activity StatsThemes and TopicsD Cosching Focus AICRMFiling• Al Activity Type Al Call ScoringatownSelectAulomncaweodAsk Jiminny on Anything Ask Jiminny Reports* Add OnsKey Words Scoring Jeminny Voice scIM® Call Translation ©listener RoleExplicit Recording Consent ©0 MOP TJ croec4 Preserve lop2Disable cache | Oftinel• Big request rowsE Overview10,000 mllPayloadPreviewO crgarizations - GeneralO Parponxat.О Патропка!....ReQen URRefecrer PolicyO metrics© iParponxat.. • Response headers (0)* Request Headers (12)© Smine© CalencAppocador• Group by trameO Screenshots20,000 mмhttp:://w0ojiminny.com/apiV1/settings/organizationsL Al Bookmarxs019 A2 12Nikolay YankovLukas Kovalik10:03 AM | Daily - Platform• 17:01|Lộ3...
|
NULL
|
-8024547856731353021
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform • 2 m left]100% <28• Mon 18 May 10:03:26meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)+KioskAutomalco Keportsmobile verscon18$2 Prattol57 ISRO-83 Jmier83 Promo3 Altent83 МСР-© Cursohttps://app.jiminny.com/kiosk/onboard-listD somEal DatadooSetup Account|General|LoumntynahorotcomIMPORT OPPORTUNITIES SYNC, PER:COCALINONE *• OfficeGoogleSminny VoiceTiers & Add-onsO Tlers crolainedCaptureO Selected2 Sidekicko ScaleAsk Jiminny on Deal DealInsights DeslRisks Live CoschingCosching Framework Topics in Deals © Activity StatsThemes and TopicsD Cosching Focus AICRMFiling• Al Activity Type Al Call ScoringatownSelectAulomncaweodAsk Jiminny on Anything Ask Jiminny Reports* Add OnsKey Words Scoring Jeminny Voice scIM® Call Translation ©listener RoleExplicit Recording Consent ©0 MOP TJ croec4 Preserve lop2Disable cache | Oftinel• Big request rowsE Overview10,000 mllPayloadPreviewO crgarizations - GeneralO Parponxat.О Патропка!....ReQen URRefecrer PolicyO metrics© iParponxat.. • Response headers (0)* Request Headers (12)© Smine© CalencAppocador• Group by trameO Screenshots20,000 mмhttp:://w0ojiminny.com/apiV1/settings/organizationsL Al Bookmarxs019 A2 12Nikolay YankovLukas Kovalik10:03 AM | Daily - Platform• 17:01|Lộ3...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49895
|
1772
|
25
|
2026-05-18T07:03:26.966473+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087806966_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormVIewINavicareCodeLaravelKeractorFV faVsco. PhostormVIewINavicareCodeLaravelKeractorFV faVsco.js~%9 pipedrive-sdk-poc vProjectEditTeamModal vueIS features.jsFeaturesGroup.vueV FeaturesList.vue>• OrganizationSearch> D SetupDemo> D shared> D UsersSearchy Kiosk.vueconvertLeadActivitles.ong© SyncToPlanhat.phpcreaterlaybookcreatedevent.phg• - orgsettings• _ shared• • Usersettingsseuinas.vue> sharedSoftohonecoachheloers• pluginsrouterIM storeDutilsI main.jsis types.d.tsIs types.jsD vitehrowcerclistreE .env.defaultO gitignoreC .yarnrc.yml©eslint.config.cjs<> index.htmlO jsconfig.json# package.isonML README.mdusvite.confia.svarn.lockE varn-error.lod> D langMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodphp api.phpphp api_.v2.phppho console nhnphp api.phpxc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phpnatedReoortsCommand.ohd(C) RequestGenerateReport.Job.ohvphp apL_v2.phpAutomatedReport.phpV EditTeamModal.vueX P Cc W .*22 Douter->group(['prefix' => 'user'], static function (Routeraute vod t.t)24 đ"pretix ="sms', staric tunction'outer->aroup('middleware' =>'auth:aoi" static function Router Srouter):outer->qroupd'prefix =>"nage'.'middleware' => l'api'."auth:aon" static f892'outer->group(['prefix' = 'partners','middleware' => 'auth:partner-api'], statitscouter-›oet(uri''.Partnercontrollen..class. "me']): aolvlnartnersSrouter->group(['prefix' => 'organizations'], static function ( use (Srouter)Srouter-›get ( uri: "/{team}', [PartnerController::class,'fetchOrganization"createlroanization')l$router->group(['prefix' => 'groups'], static function () use ($router): void$router->group(['prefix' => 'users'], static function () use ($router): void$router->group(['prefix' => 'activities'], static function () use (Srouter):outer->group(['prefix' => 'activity', 'middleware' => 'api'], static function1037'outer->group([ 'middleware' => ['auth:api']], static function () use ($router) {.!1042outer->group(l'middLeware' => ['auth:api']], static function (Router Srouter): Vº118'prefix)=opportunity/opportunitvstatic function (Router Srouter): void f...}.'middleware' => 'aot)i'outer->aroundi'middlewarel => "'auth.ani"l static function Router Srouter): vcE custom.logA HS_local (jiminny@localhost]A SF [jiminny@localhost]# console [PKob)A console [STAGING]TestPipedriveOfficialSdkCommand.php x © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api\ActivityFieldsApi;use Pipedrave verszons vz Ap1 Ueaurielasap1use Pipearive versions vz Ap1 PersonrielasApluse Pipedrive versions vz contzquration.1 usageprotected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with exisorivate arrav Sresults =1lusageprivate EncryptedTokenManager $tokenManager;no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent::__construct();sthls->cokennanager = scokenmanager;public function handle(): intf...,private function runTests(int $teamId): voidf...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...?1 usageorivate function testBasicCrudOperations(Social Account SsocialAccount: voidSthis->infod strina: 'Test 2• Basic CRUD Oberations'):try{// Get the raw token from databaseSnawhhToken = ScocialAccount->ae+ProvidenllserToken0•strlen(SrawDbToken).Trial Owner Role SeledNot Shown when editingOwner gets selected role + AdminKeplace Uppontuniy sync Perlod locatlolPart of Create TeamModal used for botn create/editAlways gets Admin + RecorderCurrently at lines 71-84Handled in EditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Only show when creating team ( Iflags. teamCreated)• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.php• Add validation rule for owner_role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT accented when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tteamModal/Ed1tTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs added• Ensure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role optionf Daily - Platform • 2m leftU AskJiminnyReportActivityServiceTest~100% Lz&• Mon 18 May 10:03:26+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0: : forOwner () to use selected role + AdminMove Opportunity Sync Period, add role field in its placeSame component handles bothAsk anvthina (&4-L)SWF.16Cal aWN Windsurf Teams804-01LITF.Rf?4 spaces...
|
NULL
|
-8945733411296892867
|
NULL
|
click
|
ocr
|
NULL
|
PhostormVIewINavicareCodeLaravelKeractorFV faVsco. PhostormVIewINavicareCodeLaravelKeractorFV faVsco.js~%9 pipedrive-sdk-poc vProjectEditTeamModal vueIS features.jsFeaturesGroup.vueV FeaturesList.vue>• OrganizationSearch> D SetupDemo> D shared> D UsersSearchy Kiosk.vueconvertLeadActivitles.ong© SyncToPlanhat.phpcreaterlaybookcreatedevent.phg• - orgsettings• _ shared• • Usersettingsseuinas.vue> sharedSoftohonecoachheloers• pluginsrouterIM storeDutilsI main.jsis types.d.tsIs types.jsD vitehrowcerclistreE .env.defaultO gitignoreC .yarnrc.yml©eslint.config.cjs<> index.htmlO jsconfig.json# package.isonML README.mdusvite.confia.svarn.lockE varn-error.lod> D langMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodphp api.phpphp api_.v2.phppho console nhnphp api.phpxc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phpnatedReoortsCommand.ohd(C) RequestGenerateReport.Job.ohvphp apL_v2.phpAutomatedReport.phpV EditTeamModal.vueX P Cc W .*22 Douter->group(['prefix' => 'user'], static function (Routeraute vod t.t)24 đ"pretix ="sms', staric tunction'outer->aroup('middleware' =>'auth:aoi" static function Router Srouter):outer->qroupd'prefix =>"nage'.'middleware' => l'api'."auth:aon" static f892'outer->group(['prefix' = 'partners','middleware' => 'auth:partner-api'], statitscouter-›oet(uri''.Partnercontrollen..class. "me']): aolvlnartnersSrouter->group(['prefix' => 'organizations'], static function ( use (Srouter)Srouter-›get ( uri: "/{team}', [PartnerController::class,'fetchOrganization"createlroanization')l$router->group(['prefix' => 'groups'], static function () use ($router): void$router->group(['prefix' => 'users'], static function () use ($router): void$router->group(['prefix' => 'activities'], static function () use (Srouter):outer->group(['prefix' => 'activity', 'middleware' => 'api'], static function1037'outer->group([ 'middleware' => ['auth:api']], static function () use ($router) {.!1042outer->group(l'middLeware' => ['auth:api']], static function (Router Srouter): Vº118'prefix)=opportunity/opportunitvstatic function (Router Srouter): void f...}.'middleware' => 'aot)i'outer->aroundi'middlewarel => "'auth.ani"l static function Router Srouter): vcE custom.logA HS_local (jiminny@localhost]A SF [jiminny@localhost]# console [PKob)A console [STAGING]TestPipedriveOfficialSdkCommand.php x © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api\ActivityFieldsApi;use Pipedrave verszons vz Ap1 Ueaurielasap1use Pipearive versions vz Ap1 PersonrielasApluse Pipedrive versions vz contzquration.1 usageprotected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with exisorivate arrav Sresults =1lusageprivate EncryptedTokenManager $tokenManager;no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent::__construct();sthls->cokennanager = scokenmanager;public function handle(): intf...,private function runTests(int $teamId): voidf...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...?1 usageorivate function testBasicCrudOperations(Social Account SsocialAccount: voidSthis->infod strina: 'Test 2• Basic CRUD Oberations'):try{// Get the raw token from databaseSnawhhToken = ScocialAccount->ae+ProvidenllserToken0•strlen(SrawDbToken).Trial Owner Role SeledNot Shown when editingOwner gets selected role + AdminKeplace Uppontuniy sync Perlod locatlolPart of Create TeamModal used for botn create/editAlways gets Admin + RecorderCurrently at lines 71-84Handled in EditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Only show when creating team ( Iflags. teamCreated)• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.php• Add validation rule for owner_role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT accented when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tteamModal/Ed1tTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs added• Ensure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role optionf Daily - Platform • 2m leftU AskJiminnyReportActivityServiceTest~100% Lz&• Mon 18 May 10:03:26+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0: : forOwner () to use selected role + AdminMove Opportunity Sync Period, add role field in its placeSame component handles bothAsk anvthina (&4-L)SWF.16Cal aWN Windsurf Teams804-01LITF.Rf?4 spaces...
|
49888
|
NULL
|
NULL
|
NULL
|
|
49896
|
1771
|
56
|
2026-05-18T07:03:28.203291+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087808203_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comDaily - Platform • 2 m left]100% <28 • Mon 18 May 10:03:27Nikolay Yankov (Presenting)AA+KioskAulomaled KeportsMobile ver sconS$1822 Pratto57 ISRO-83 JimierE3 Promo3 Altent83 МСР-© Cursohttps://app.jiminny.com/kiosk/onboard-lst0 Jот43 354Eal DatadogSetup Account|General|oumntynahorotcomIMPORT OPPORTUNITIES SYNC, PER:COCALINONE *• OfficeGoogleSminny VoiceTiers & Add-onsO Tlscs erolainedCaptureO SelectedSidekicko ScaleAsk Jiminny on Deal DealInsights DeslRisks live CoschingCosching Framework Topics in Deals• Activity Stats• Themes and TopicsCosching Focus O AICRMFilingAl Activity Type Al Call ScoringatownSelectAwlomcaweooAsk Jiminny on Anything Ask Jiminny Reports* Add Ons|Key Words Scoring Jieminny Voice SCIM® Call Translation ©listener RoleD Explicit Recording Consent ©0 MOР TJ croect4 Preserve loc2Disable cache | Oftinel• Big request rowsE Overview10,000 mllPayloadPreview© SmineCalencAppocador• Group by trameO Screenshots20,000 mмO organizations + GeneralO Parponxat.О Патропка!....Reget URRefecrer PolicyO metrics© itarponxat.. • Response headers (0)• Request Headers (12)http:://woojiminny.com/api/Vf/settings/organizationsL Al Bookmarxs019 A2 1230 b00 mmNikolay YankovLukas Kovalik10:03 AM | Daily - Platform...• 17:02|Lộ3...
|
NULL
|
-7111916342161174163
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comDaily - Platform • 2 m left]100% <28 • Mon 18 May 10:03:27Nikolay Yankov (Presenting)AA+KioskAulomaled KeportsMobile ver sconS$1822 Pratto57 ISRO-83 JimierE3 Promo3 Altent83 МСР-© Cursohttps://app.jiminny.com/kiosk/onboard-lst0 Jот43 354Eal DatadogSetup Account|General|oumntynahorotcomIMPORT OPPORTUNITIES SYNC, PER:COCALINONE *• OfficeGoogleSminny VoiceTiers & Add-onsO Tlscs erolainedCaptureO SelectedSidekicko ScaleAsk Jiminny on Deal DealInsights DeslRisks live CoschingCosching Framework Topics in Deals• Activity Stats• Themes and TopicsCosching Focus O AICRMFilingAl Activity Type Al Call ScoringatownSelectAwlomcaweooAsk Jiminny on Anything Ask Jiminny Reports* Add Ons|Key Words Scoring Jieminny Voice SCIM® Call Translation ©listener RoleD Explicit Recording Consent ©0 MOР TJ croect4 Preserve loc2Disable cache | Oftinel• Big request rowsE Overview10,000 mllPayloadPreview© SmineCalencAppocador• Group by trameO Screenshots20,000 mмO organizations + GeneralO Parponxat.О Патропка!....Reget URRefecrer PolicyO metrics© itarponxat.. • Response headers (0)• Request Headers (12)http:://woojiminny.com/api/Vf/settings/organizationsL Al Bookmarxs019 A2 1230 b00 mmNikolay YankovLukas Kovalik10:03 AM | Daily - Platform...• 17:02|Lộ3...
|
49894
|
NULL
|
NULL
|
NULL
|
|
49897
|
1771
|
57
|
2026-05-18T07:03:31.565125+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087811565_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
settings
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
13/15
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
Built-in Preview
Chrome
Firefox
Safari
2
5
3
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
use Jiminny\Mcp\Servers\JiminnyServer;
use Laravel\Mcp\Facades\Mcp;
// mcp.audit MUST stay outermost so its $next($request) call wraps the auth
// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections
// short-circuit before McpAuditMiddleware::handle ever runs and we lose
// audit rows for exactly the requests the security log most needs to capture.
// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing
// pre-auth is safe.
Mcp::web('/mcp', JiminnyServer::class)
->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"settings","depth":4,"on_screen":true,"value":"settings","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"13/15","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Built-in Preview","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chrome","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Firefox","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Safari","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\nuse Jiminny\\Mcp\\Servers\\JiminnyServer;\nuse Laravel\\Mcp\\Facades\\Mcp;\n\n// mcp.audit MUST stay outermost so its $next($request) call wraps the auth\n// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections\n// short-circuit before McpAuditMiddleware::handle ever runs and we lose\n// audit rows for exactly the requests the security log most needs to capture.\n// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing\n// pre-auth is safe.\nMcp::web('/mcp', JiminnyServer::class)\n ->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\n/**\n * API routes.\n *\n * @see \\Jiminny\\Providers\\RouteServiceProvider\n *\n * @var Router $router\n */\n\nuse Illuminate\\Routing\\Router;\nuse Illuminate\\Support\\Collection;\nuse Jiminny\\Component\\DealInsights\\Forecast\\Forecast;\nuse Jiminny\\Component\\Router\\Routes;\nuse Jiminny\\Contracts\\Acl\\PermissionEnum;\nuse Jiminny\\Http\\Controllers;\nuse Jiminny\\Http\\Controllers\\API\\ActivityController;\nuse Jiminny\\Http\\Controllers\\API\\AiCrmNotesController;\nuse Jiminny\\Http\\Controllers\\API\\ClientTokenController;\nuse Jiminny\\Http\\Controllers\\API\\CrmController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAiCallScoringController;\nuse Jiminny\\Http\\Controllers\\ConferencesOptInOutController;\nuse Jiminny\\Http\\Controllers\\API\\DealRiskController;\nuse Jiminny\\Http\\Controllers\\API\\InstantMeetingController;\nuse Jiminny\\Http\\Controllers\\API\\LanguageController;\nuse Jiminny\\Http\\Controllers\\API\\LiveFeedController;\nuse Jiminny\\Http\\Controllers\\API\\MeetingsController;\nuse Jiminny\\Http\\Controllers\\API\\MessageController;\nuse Jiminny\\Http\\Controllers\\API\\MetadataController;\nuse Jiminny\\Http\\Controllers\\API\\MobileSettingsController;\nuse Jiminny\\Http\\Controllers\\API\\MomentController;\nuse Jiminny\\Http\\Controllers\\API\\NudgeController;\nuse Jiminny\\Http\\Controllers\\API\\NumberAllocatorController;\nuse Jiminny\\Http\\Controllers\\API\\Opportunity\\CommentsController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationLicensesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationMembersController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRetentionPolicyController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationRolesController;\nuse Jiminny\\Http\\Controllers\\API\\OrganizationSyncController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\OnDemandController;\nuse Jiminny\\Http\\Controllers\\API\\Page\\PlaybackController;\nuse Jiminny\\Http\\Controllers\\API\\PartnerController;\nuse Jiminny\\Http\\Controllers\\API\\PhoneNumberController;\nuse Jiminny\\Http\\Controllers\\API\\PlaylistController;\nuse Jiminny\\Http\\Controllers\\API\\Settings\\EmailSyncController;\nuse Jiminny\\Http\\Controllers\\API\\SidekickController;\nuse Jiminny\\Http\\Controllers\\API\\SoftphoneController;\nuse Jiminny\\Http\\Controllers\\API\\SubscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiAutomationController;\nuse Jiminny\\Http\\Controllers\\API\\TeamAiContextController;\nuse Jiminny\\Http\\Controllers\\API\\TeamController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ActivityStatsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\CoachingFeedbacksController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\DashboardController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\EngagementController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TeamInsightsAutomatedCallScoresController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\ThemeTopicsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsights\\TopicsInDealsController;\nuse Jiminny\\Http\\Controllers\\API\\TeamInsightsController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\ThemeController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicController;\nuse Jiminny\\Http\\Controllers\\API\\Themes\\TopicTriggerController;\nuse Jiminny\\Http\\Controllers\\API\\TranscriptionController;\nuse Jiminny\\Http\\Controllers\\API\\TranslationController;\nuse Jiminny\\Http\\Controllers\\API\\UserAutomatedReports\\UserAutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\API\\UserController;\nuse Jiminny\\Http\\Controllers\\API\\VocabularyController;\nuse Jiminny\\Http\\Controllers\\Auth\\ExtensionController;\nuse Jiminny\\Http\\Controllers\\Auth\\SocialController;\nuse Jiminny\\Http\\Controllers\\ExportController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\ActivityController as KioskActivityController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\AutomatedReportsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\MediaPipelineController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\OrganizationsController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\PartnersController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\SearchController;\nuse Jiminny\\Http\\Controllers\\Kiosk\\Teams\\OnboardController;\nuse Jiminny\\Http\\Controllers\\NotificationController;\nuse Jiminny\\Http\\Controllers\\Settings\\GroupController;\nuse Jiminny\\Http\\Controllers\\Settings\\JobTitleController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookCategoryController;\nuse Jiminny\\Http\\Controllers\\Settings\\PlaybookController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\IntegrationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\InvitationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamActivityController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamCoachingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamConferenceSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamController as OrganizationController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamDealInsightsSettingController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamMemberController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamPhotoController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamRecordingSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSettingsController;\nuse Jiminny\\Http\\Controllers\\Settings\\Teams\\TeamSoftphoneSettingsController;\nuse Jiminny\\Http\\Controllers\\TeamSetupController;\nuse Jiminny\\Models;\nuse Jiminny\\Models\\PlaybackTheme;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models\\Vocabulary;\nuse Jiminny\\Repositories;\nuse Jiminny\\Mcp\\Servers\\JiminnyServer;\nuse Laravel\\Mcp\\Facades\\Mcp;\n\n// mcp.audit MUST stay outermost so its $next($request) call wraps the auth\n// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections\n// short-circuit before McpAuditMiddleware::handle ever runs and we lose\n// audit rows for exactly the requests the security log most needs to capture.\n// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing\n// pre-auth is safe.\nMcp::web('/mcp', JiminnyServer::class)\n ->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/metadata/extension-app', [MetadataController::class, 'extension']);\n\n $router->get('/', [NumberAllocatorController::class, 'generate']);\n $router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);\n\n $router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('instant-meeting.start');\n\n // Meeting creation endpoint for Outlook add-in\n $router->post('/meetings', [MeetingsController::class, 'create'])\n ->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])\n ->name('meetings.create');\n\n // Number provisioning and search.\n $router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);\n $router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);\n\n $router->group(['prefix' => 'deal-insights'], static function (Router $router): void {\n $router->get('/forecast', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'getForecast',\n ])->defaults('period', Forecast::PERIOD_QUARTER);\n\n $router->get('/deals/{stage?}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'list',\n ])->defaults('stage', \\Jiminny\\Component\\DealInsights\\CriteriaInterface::STAGE_ALL);\n\n $router->get('/details/details-daily/{opportunityId}/{date}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'detailsDaily',\n ]);\n\n $router->put('/deals/{opportunity}/edit-fields', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'updateFields',\n ]);\n\n $router->get('/externalId/{dealId}', [\n Controllers\\API\\DealInsights\\DealsController::class,\n 'externalDealId',\n ]);\n\n $router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);\n });\n\n $router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])\n ->name('team_insights.users');\n\n $router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])\n ->name('team_insights.dashboard');\n\n // Team Insights - Coaching Feedbacks\n $router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])\n ->name('team_insights.coaching_feedbacks_over_time');\n\n $router\n ->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])\n ->name('team_insights.coaching_feedbacks_over_time.download');\n\n $router->get(\n '/team-insights/coaching-feedbacks-over-time/drill-down',\n [CoachingFeedbacksController::class, 'drillDown'],\n )->name('team_insights.coaching_feedbacks_over_time.drill_down');\n\n // Team Insights - Automated Call Scores\n $router->get(\n '/team-insights/automated-call-scores-over-time',\n [TeamInsightsAutomatedCallScoresController::class, 'index'],\n )->name('team_insights.automated_call_scores_over_time.index');\n\n $router->get(\n '/team-insights/automated-call-scores-over-time/drill-down',\n [TeamInsightsAutomatedCallScoresController::class, 'show'],\n )->name('team_insights.automated_call_scores_over_time.show');\n\n // Team Insights - AI Call Scoring\n $router->get(\n '/team-insights/ai-call-scoring-over-time',\n [TeamInsightsAiCallScoringController::class, 'index'],\n )->name('team_insights.ai_call_scoring_over_time.index');\n\n $router->get(\n '/team-insights/ai-call-scoring-over-time/drill-down',\n [TeamInsightsAiCallScoringController::class, 'show'],\n )->name('team_insights.ai_call_scoring_over_time.show');\n\n $router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])\n ->name('team_insights.engagement');\n\n $router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])\n ->name('team_insights.engagement.drill_down');\n\n $router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])\n ->name('team_insights.topics.index');\n\n $router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])\n ->name('team_insights.topics.show');\n\n $router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])\n ->name('team_insights.topics.drill_down');\n\n $router->group(['prefix' => 'team-insights'], static function (Router $router): void {\n $router->group(['prefix' => 'conversations'], static function (Router $router): void {\n $router->get('/', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'fetch',\n ]);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{activityChannel}/{drillDownType}', [\n Controllers\\API\\TeamInsights\\ConversationsController::class,\n 'drillDown',\n ])\n ->where(\n 'activityChannel',\n Collection::make(Models\\Activity::CHANNELS)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(Repositories\\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)\n ->join('|'),\n );\n });\n });\n\n $router->group(['prefix' => 'coaching'], static function (Router $router): void {\n $router->get('/', [EngagementController::class, 'fetch']);\n\n $router->group(['prefix' => 'drill-down'], static function (Router $router): void {\n $router\n ->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])\n ->where(\n 'coachingType',\n Collection::make(EngagementController::COACHING_TYPES)->join('|'),\n )\n ->where(\n 'drillDownType',\n Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),\n );\n });\n });\n });\n\n $router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])\n ->name('topics_in_deals.topics');\n $router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])\n ->name('topics_in_deals.topic_triggers');\n $router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])\n ->name('topics_in_deals.comparison');\n\n // CRM actions.\n $router->group(['prefix' => 'crm'], static function (Router $router): void {\n $router->get('/search', [CrmController::class, 'search']);\n $router->get('/opportunity', [CrmController::class, 'opportunities']);\n $router->get('/customers', [CrmController::class, 'customers']);\n $router->get('/accounts', [CrmController::class, 'accounts']);\n $router->get('/contacts', [CrmController::class, 'contacts']);\n $router->get('/leads', [CrmController::class, 'leads']);\n $router->get('/tasks', [CrmController::class, 'activities']);\n $router->get('/layouts', [CrmController::class, 'layouts']);\n });\n\n // AI CRM notes.\n $router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {\n $router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);\n $router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);\n $router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);\n\n $router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);\n $router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);\n $router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);\n });\n\n // Automated Reports\n $router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);\n\n $router->group(\n [\n 'prefix' => 'automated-reports',\n 'middleware' => 'can:canAccessAiReports,' . User::class,\n ],\n static function (Router $router): void {\n $router->get('/', [UserAutomatedReportsController::class, 'list']);\n $router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);\n }\n );\n\n // Setup New Team / Trial\n $router->get('/features', [TeamSetupController::class, 'features']);\n $router->get('/tiers', [TeamSetupController::class, 'tiers']);\n $router->get('/calendars', [TeamSetupController::class, 'calendars']);\n $router->get('/crm-services', [TeamSetupController::class, 'crmServices']);\n $router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);\n $router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);\n $router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);\n\n // Notifications\n $router->get('/notifications/recent', [NotificationController::class, 'notifications']);\n $router->put('/notifications/read', [NotificationController::class, 'markAsRead']);\n $router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);\n $router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);\n\n // Live feed\n $router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);\n\n // Languages\n $router->get('/languages', [LanguageController::class, 'list']);\n\n // The whole settings section will be moved out in a separate file\n $router->group(['prefix' => '/settings'], static function (Router $router): void {\n $router->group(['prefix' => '/organizations'], static function (Router $router): void {\n $router\n ->middleware(['can:kiosk,' . User::class])\n ->post('/', [OrganizationController::class, 'store'])\n ->name('kiosk.organizations.store');\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {\n // Sync fields and team metadata\n $router->post('/fields/sync', [OrganizationSyncController::class, 'index'])\n ->name('api.sync.fields');\n\n // Conference Preferences.\n $router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])\n ->name('update.bot.avatar');\n\n // Roles.\n $router->get('/roles', [OrganizationRolesController::class, 'index'])\n ->name('api.roles.index');\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],\n static function (Router $router): void {\n $router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])\n ->name('api.retention_policy.index');\n\n $router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])\n ->name('api.retention_policy.update');\n }\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],\n static function (Router $router): void {\n // Invitations.\n $router->get('/invitations', [InvitationController::class, 'index'])\n ->name('api.invitations.index');\n $router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])\n ->name('api.invitations.resend');\n $router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])\n ->name('api.invitations.delete');\n $router->post('/invitations', [InvitationController::class, 'store'])\n ->name('api.invitations.store');\n },\n );\n\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],\n static function (Router $router): void {\n // Groups.\n $router->post('/groups', [GroupController::class, 'store']);\n $router->get('/groups/{group}', [GroupController::class, 'show']);\n $router->put('/groups/{group}', [GroupController::class, 'update']);\n\n $router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);\n\n $router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);\n\n // Sidekick settings\n $router->group(\n ['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],\n static function (Router $router): void {\n $router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);\n $router\n ->post(\n '/group/{group}/sidekick',\n [SidekickController::class, 'setSidekickSettings'],\n )\n ->middleware(['can:updateSidekickSettings,group'])\n ->name('api.sidekick_settings.update');\n $router\n ->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])\n ->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])\n ->name('api.sidekick_settings.update_all');\n },\n );\n\n $router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);\n $router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);\n\n // CRM Layout Management\n $router->group(['prefix' => 'layouts'], static function (Router $router): void {\n $router->get(\n '/{type}',\n [Controllers\\API\\LayoutManagementController::class, 'list'],\n )->name('layouts.list');\n\n $router->put(\n '/{layout}',\n [Controllers\\API\\LayoutManagementController::class, 'update'],\n )->name('layouts.update');\n });\n\n // Users.\n $router->put('/users/{user}', [TeamMemberController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.update');\n $router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])\n ->name('api.users.deactivate');\n\n $router->group(\n [\n 'prefix' => 'vocabulary',\n 'middleware' => 'can:manage,' . Vocabulary::class,\n ],\n static function (Router $router): void {\n $router\n ->get('/', [VocabularyController::class, 'list'])\n ->name('api.vocabulary.index');\n $router\n ->post('/', [VocabularyController::class, 'update'])\n ->name('api.vocabulary.create');\n\n $router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {\n $router\n ->put('/', [VocabularyController::class, 'update'])\n ->middleware('can:update,vocabulary')\n ->name('api.vocabulary.update');\n $router\n ->delete('/', [VocabularyController::class, 'delete'])\n ->middleware('can:delete,vocabulary')\n ->name('api.vocabulary.delete');\n });\n },\n );\n\n $router->group(['prefix' => 'ai-context'], static function (Router $router): void {\n $router->get('/', [TeamAiContextController::class, 'index'])\n ->name('api.ai_context.get');\n $router->post('/', [TeamAiContextController::class, 'store'])\n ->name('api.ai_context.store');\n });\n\n $router->group(['prefix' => 'ai-automation'], static function (Router $router): void {\n $router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])\n ->name('api.automation.templates.fields.test-prompt');\n // List CRM fields per object type\n $router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])\n ->name('api.automation.fields');\n\n // List DealStages fields per object type\n $router->get('/stages', [TeamAiAutomationController::class, 'stages'])\n ->name('api.automation.stages');\n // Create CRM AI template\n $router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])\n ->name('api.automation.templates.create');\n\n // Export CRM updates\n $router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])\n ->name('api.automation.templates.export-crm-updates');\n\n // Update CRM AI template\n $router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])\n ->name('api.automation.templates.update');\n // Delete CRM AI template\n $router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])\n ->name('api.automation.templates.delete');\n // List all CRM AI templates\n $router->get('/templates', [TeamAiAutomationController::class, 'templates'])\n ->name('api.automation.templates.list');\n // Create CRM AI template field\n $router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])\n ->name('api.automation.templates.fields.create');\n // Update CRM AI template field\n $router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])\n ->name('api.automation.templates.fields.update');\n // Delete CRM AI template field\n $router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])\n ->name('api.automation.templates.fields.delete');\n });\n\n $router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {\n // Create AI scorecard\n $router->post('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'createAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.create');\n // Update AI scorecard\n $router->put('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'updateAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.update');\n // Delete AI scorecard\n $router->delete('/ai-scorecards/{aiScorecard}', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'deleteAiScorecard'])\n ->name('api.ai-call-scoring.ai-scorecards.delete');\n // List all AI scorecards\n $router->get('/ai-scorecards', [Controllers\\API\\AiCallScoring\\AiScorecardController::class, 'aiScorecards'])\n ->name('api.ai-call-scoring.ai-scorecards.list');\n // Test AI scorecard prompt\n $router->post(\n '/ai-scorecards/{aiScorecard}/test-prompt',\n [\n Controllers\\API\\AiCallScoring\\AiScorecardController::class,\n 'testAiScorecardPrompt',\n ]\n )\n ->name('api.ai-call-scoring.ai-scorecards.test-prompt');\n\n // Create AI Scorecard rule\n $router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'createRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');\n // Update AI Scorecard rule\n $router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'updateAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');\n // Delete AI Scorecard rule\n $router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\\API\\AiCallScoring\\AiScorecardRuleController::class, 'deleteAiScorecardRule'])\n ->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');\n });\n\n // Theme, topics, triggers\n $router->get('/themes', [ThemeController::class, 'list']);\n $router\n ->post('/themes', [ThemeController::class, 'updateTheme'])\n ->middleware('can:manage,' . PlaybackTheme::class)\n ->name('api.theme.create');\n\n $router->group(\n [\n 'prefix' => 'theme/{theme}',\n 'middleware' => 'can:update,theme',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [ThemeController::class, 'updateTheme'])\n ->name('api.theme.update');\n $router\n ->delete('/', [ThemeController::class, 'deleteTheme'])\n ->middleware('can:delete,theme')\n ->name('api.theme.delete');\n\n $router\n ->post('/topics', [TopicController::class, 'updateTopic'])\n ->middleware('can:createTopic,theme')\n ->name('api.topic.create');\n\n $router->group(\n [\n 'prefix' => 'topic/{topic}',\n 'middleware' => 'can:update,topic',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicController::class, 'updateTopic'])\n ->name('api.topic.update');\n $router\n ->delete('/', [TopicController::class, 'deleteTopic'])\n ->middleware('can:delete,topic')\n ->name('api.topic.delete');\n\n $router\n ->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])\n ->middleware('can:createTrigger,topic')\n ->name('api.topic_trigger.create');\n\n $router->group(\n [\n 'prefix' => 'trigger/{topicTrigger}',\n 'middleware' => 'can:update,topicTrigger',\n ],\n static function (Router $router): void {\n $router\n ->put('/', [TopicTriggerController::class, 'updateTrigger'])\n ->name('api.topic_trigger.update');\n $router\n ->delete('/', [TopicTriggerController::class, 'deleteTrigger'])\n ->middleware('can:delete,topicTrigger')\n ->name('api.topic_trigger.delete');\n },\n );\n },\n );\n },\n );\n\n $router->post('/themes/import', [Controllers\\API\\Themes\\ImportTopicTriggerController::class, 'importThemes']);\n $router->get('/themes/export', [Controllers\\API\\Themes\\ExportTopicTriggerController::class, 'exportThemes']);\n\n // Auto-scoring\n $router->group(['prefix' => '/scorecards'], static function (Router $router) {\n $router->get('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'list']);\n $router->post('/', [Controllers\\API\\Scorecards\\ScorecardController::class, 'create']);\n $router->delete('/{scorecard}', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n $router->post('/validate-name', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'validateNameExists',\n ]);\n\n $router->get('/enabled-scorecard', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getEnabledScorecard',\n ]);\n\n $router->get('/affected-scorecards', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'getAffectedScorecards',\n ]);\n\n $router->group(['prefix' => '/{scorecard}'], static function (Router $router) {\n $router->put('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'update',\n ]);\n $router->delete('/', [\n Controllers\\API\\Scorecards\\ScorecardController::class,\n 'delete',\n ]);\n\n $router->post('/rules', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'create',\n ]);\n\n $router->post('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'update',\n ]);\n\n $router->delete('/rules/{scorecardRule}', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'delete',\n ]);\n\n $router->post('/rules/{scorecardRule}/update-order', [\n Controllers\\API\\Scorecards\\ScorecardRuleController::class,\n 'updateOrder',\n ]);\n });\n });\n\n // Coaching Playbook.\n Route::get('/playbooks', [PlaybookController::class, 'all']);\n Route::get('/playbooksTree', [PlaybookController::class, 'tree']);\n Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);\n Route::post('/playbooks', [PlaybookController::class, 'store']);\n Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);\n\n Route::prefix('/playbooks/{playbook}')->group(static function () {\n // Playbook Categories.\n Route::get('/categories', [PlaybookCategoryController::class, 'all']);\n Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.\n Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);\n Route::post('/categories', [PlaybookCategoryController::class, 'store']);\n Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);\n Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);\n Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);\n\n Route::prefix('/categories/{category}')->group(static function () {\n // Coaching Sections\n Route::get('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'all']);\n Route::put('/coaching-section/sequence', [Controllers\\Settings\\Coaching\\SectionsController::class, 'sequence']);\n Route::put('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'update']);\n Route::post('/coaching-section', [Controllers\\Settings\\Coaching\\SectionsController::class, 'store']);\n Route::delete('/coaching-section/{coachingSection}', [Controllers\\Settings\\Coaching\\SectionsController::class, 'destroy']);\n\n Route::prefix('coaching-section/{coachingSection}')->group(static function () {\n // Coaching Section Criteria\n Route::get('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'all']);\n Route::put('/coaching-section-criterion/sequence', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'sequence']);\n Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'update']);\n Route::post('/coaching-section-criterion', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'store']);\n Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\\Settings\\Coaching\\SectionCriteriaController::class, 'destroy']);\n });\n });\n });\n },\n );\n\n $router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])\n ->group(static function (Router $router): void {\n // Job Titles.\n $router->get('/job-titles', [JobTitleController::class, 'all']);\n $router->put('/job-titles/{job}', [JobTitleController::class, 'update']);\n $router->post('/job-titles', [JobTitleController::class, 'store']);\n $router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);\n\n // Team Settings.\n $router->put('/', [TeamSettingsController::class, 'update']);\n $router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);\n $router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);\n $router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);\n $router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);\n $router->put('/owner', [Controllers\\Settings\\Teams\\OrganizationSettingsController::class, 'updateOwner']);\n\n $router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);\n\n // Key Moments.\n $router->get('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'show']);\n $router->put('/moments/{moment}', [Controllers\\Settings\\MomentController::class, 'update']);\n $router->post('/moments', [Controllers\\Settings\\MomentController::class, 'store']);\n $router->put('/activity', [TeamActivityController::class, 'store']);\n\n // Team Domains.\n $router->get('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'all']);\n $router->post('/domains', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'create']);\n $router->delete('/domains/{teamDomain}', [Controllers\\Settings\\Teams\\TeamDomainsController::class, 'destroy']);\n });\n });\n });\n });\n\n // Integrations\n $router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {\n $router->post('/integrations', [IntegrationController::class, 'internal'])\n ->name('api.integrations.internal');\n $router->put('/integrations', [IntegrationController::class, 'toggleStatus'])\n ->name('api.integrations.toggle_status');\n $router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])\n ->name('api.integrations.delete');\n });\n\n $router->get('/integrations', [IntegrationController::class, 'all'])\n ->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)\n ->name('api.integrations.index');\n\n // Slack API for getting slack channels list\n $router->get('{notificationProvider}/channels', [Controllers\\NotificationProviderController::class, 'channels']);\n\n\n // Team actions. XXX: These all need moving out to their own controllers.\n $router->group(['prefix' => 'organizations'], static function (Router $router): void {\n $router->get('current', [TeamController::class, 'current']);\n\n $router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {\n $router->get('/', [TeamController::class, 'show']);\n\n $router->get('/categories', [TeamController::class, 'categories']);\n $router->get('/stages', [TeamController::class, 'stages']);\n $router->get('/users', [OrganizationMembersController::class, 'index'])\n ->name('organization.members.index');\n $router\n ->get('/users/download', [OrganizationMembersController::class, 'download'])\n ->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)\n ->name('organization.members.download');\n $router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])\n ->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)\n ->name('organization.licensed-roles.index');\n $router->get('/invitations', [TeamController::class, 'invitations']);\n $router->get('/groups', [TeamController::class, 'groups']);\n $router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])\n ->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])\n ->name('api.groups.delete');\n $router->get('/job-titles', [TeamController::class, 'jobTitles']);\n $router->get('/slugs', [TeamController::class, 'slugs']);\n $router->put('/api-token', [TeamController::class, 'generateApiToken'])\n ->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);\n $router->get('/key-moments', [MomentController::class, 'all']);\n });\n });\n\n // Internal Kiosk. This whole section will be moved out to a separate file\n $router\n ->prefix('kiosk')\n ->middleware('can:kiosk,' . User::class)\n ->group(static function (Router $router): void {\n // Partner actions.\n $router->get('/partners', [PartnersController::class, 'index']);\n\n // User actions.\n $router->post('/users/search', [SearchController::class, 'performBasicSearch']);\n\n // Team actions.\n $router->prefix('organizations')->group(static function (Router $router): void {\n $router->get('/', [OrganizationsController::class, 'show']);\n $router->put('/{team}', [OrganizationController::class, 'edit'])\n ->name('kiosk.organizations.edit');\n $router->get('/{team}/users', [OrganizationMembersController::class, 'index'])\n ->name('kiosk.organization.members.index');\n $router->get('onboardable', [OnboardController::class, 'available']);\n $router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);\n });\n\n // Automated reports\n // api/v1/kiosk/automated-reports\n $router->prefix('automated-reports')->group(static function (Router $router): void {\n $router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);\n $router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);\n $router->post('/filters', [AutomatedReportsController::class, 'getFilters']);\n $router->post('/', [AutomatedReportsController::class, 'create']);\n $router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);\n $router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);\n $router->get('/', [AutomatedReportsController::class, 'list']);\n $router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);\n $router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);\n $router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);\n $router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);\n });\n\n // Activity actions.\n $router->post('/activity/search', [SearchController::class, 'performActivitySearch']);\n $router->prefix('activity/{activity}')->group(static function (Router $router): void {\n $router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);\n $router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);\n $router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);\n $router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);\n $router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);\n $router->post('language', [KioskActivityController::class, 'updateLanguage']);\n $router->post('trim', [KioskActivityController::class, 'trimActivity']);\n $router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);\n $router->get('transcription', [KioskActivityController::class, 'getTranscriptions']);\n $router->post('speakers', [KioskActivityController::class, 'addSpeakers']);\n $router->post('crm-fields-fill', [KioskActivityController::class, 'crmFieldsFill']);\n $router->post('summary-highlights', [KioskActivityController::class, 'summaryHighlights']);\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->group(['prefix' => 'events'], static function (Router $router): void {\n $router->post('authenticate', [Controllers\\PusherController::class, 'auth'])\n ->name(Routes::WEBHOOK_PUSHER_AUTH);\n });\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n $router->get('/extensions/auth', [ExtensionController::class, 'authenticate']);\n $router->get('/call-token/{team}/{participant?}', [ClientTokenController::class, 'generateToken']);\n});\n\n$router->group(['prefix' => 'user'], static function (Router $router): void {\n $router->get('chrome-extension-authentication', [ExtensionController::class, 'authenticate']);\n});\n\n$router->group(['middleware' => ['auth:api'], 'prefix' => 'sms'], static function (Router $router): void {\n $router->get('/{phoneNumber}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messages']);\n $router->get('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'messagesList']);\n $router->post('/', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'send']);\n $router->delete('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'redact']);\n $router->put('/{activity}', [Controllers\\Telephony\\TextMessaging\\MessageController::class, 'resend']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/users/current', [UserController::class, 'current']);\n\n $router->get('/users/slug/{slug?}', [UserController::class, 'validateSlug']);\n\n // Profile Contact Information.\n $router->put(\n '/users/{user}/settings/profile',\n [Controllers\\Settings\\Profile\\ContactInformationController::class, 'update'],\n );\n\n $router->get('/users/{user}/email-sync-settings', [EmailSyncController::class, 'index']);\n $router->put('/users/{user}/email-sync-settings', [EmailSyncController::class, 'update']);\n\n // SMS Settings.\n $router->put('/users/{user}/settings/sms', [Controllers\\Settings\\Profile\\SmsController::class, 'update']);\n\n $router->get('/settings/timezones', [Controllers\\API\\Settings\\TimeZoneController::class, 'index'])\n ->name('settings.timezones.index');\n\n $router->put('/settings/user/deal-insights', [Controllers\\Settings\\Users\\UserSettingsController::class, 'update']);\n});\n\n$router->group(['prefix' => 'page', 'middleware' => ['api', 'auth:api']], static function () use ($router): void {\n $router->get('/playback/{activity}', [PlaybackController::class, 'show'])\n ->name('api.playback');\n $router->get('/on-demand', [OnDemandController::class, 'show'])\n ->name('api.activity.search');\n});\n\n$router->group(['prefix' => 'partners', 'middleware' => 'auth:partner-api'], static function () use ($router): void {\n $router->get('/', [PartnerController::class, 'me']);\n\n $router->group(['prefix' => 'organizations'], static function () use ($router): void {\n $router->get('/{team}', [PartnerController::class, 'fetchOrganization']);\n $router->post('/', [PartnerController::class, 'createOrganization']);\n });\n\n $router->group(['prefix' => 'groups'], static function () use ($router): void {\n $router->get('/{group}', [PartnerController::class, 'fetchGroup']);\n $router->post('/', [PartnerController::class, 'createGroup']);\n });\n\n $router->group(['prefix' => 'users'], static function () use ($router): void {\n $router->get('/{user}', [PartnerController::class, 'fetchUser']);\n $router->post('/', [PartnerController::class, 'createUser']);\n $router->delete('/{user}', [PartnerController::class, 'deactivateUser']);\n });\n\n $router->group(['prefix' => 'activities'], static function () use ($router): void {\n $router->get('/{activity}', [PartnerController::class, 'fetchActivity']);\n $router->get('/', [PartnerController::class, 'searchActivity']);\n });\n});\n\n$router->group(['prefix' => 'activity', 'middleware' => 'api'], static function () use ($router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function () use ($router): void {\n // Bulk delete\n $router->delete('/', [ActivityController::class, 'delete']);\n\n // Search.\n $router->get('/search', [ActivityController::class, 'search']);\n\n // All comments.\n $router->get('/comments', [ActivityController::class, 'fetchComments']);\n\n // Transcription AI\n $router->get('/{activity}/action-items', [Controllers\\API\\ActionItemsController::class, 'index']);\n $router->get('/{activity}/ai-call-scoring', [Controllers\\API\\AiCallScoring\\AiCallScoringController::class, 'index']);\n\n $router->get('/saved-search', [ActivityController::class, 'listActivitySearch'])->name('api.saved_search.index');\n $router->get('/saved-search/{search}', [ActivityController::class, 'fetchActivitySearch'])->name('api.saved_search.show');\n $router->post('/saved-search', [ActivityController::class, 'createActivitySearch'])->name('api.saved_search.create');\n $router->put('/saved-search/{search}', [ActivityController::class, 'updateActivitySearch'])->name('api.saved_search.update');\n $router->delete('/saved-search/{search}', [ActivityController::class, 'deleteActivitySearch'])->name('api.saved_search.delete');\n\n $router->post('/saved-search/{search}/nudges', [NudgeController::class, 'createAction'])->name('api.nudges.create');\n $router->put('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'updateAction'])->name('api.nudges.update');\n $router->delete('/saved-search/{search}/nudges/{nudge}', [NudgeController::class, 'deleteAction'])->name('api.nudges.delete');\n\n // Live (coaching).\n $router->get('/live', [ActivityController::class, 'live']);\n $router->get('/{activity}/cloudfront-s3-media-keys', [ActivityController::class, 'fetchCloudFrontS3MediaKeys']);\n\n $router->post('/softphone', [SoftphoneController::class, 'create']);\n $router->put('/softphone', [SoftphoneController::class, 'createCoachParticipant']);\n $router->post('/softphone/dial', [SoftphoneController::class, 'dial']);\n $router->get('/softphone/{activity}', [SoftphoneController::class, 'fetch']);\n $router->delete('/softphone/{activity}', [SoftphoneController::class, 'endCall']);\n\n $router->post('softphone/{activity}/message', [SoftphoneController::class, 'message']);\n });\n\n // Activity actions.\n $router->group(['prefix' => '{activity}', 'middleware' => ['auth:api']], static function (Router $router): void {\n // User only.\n $router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n // Messages endpoint.\n $router->post('/message', [MessageController::class, 'message']);\n\n // Organizer actions.\n $router->put('/', [ActivityController::class, 'update']);\n $router->get('/', [ActivityController::class, 'show']);\n $router->delete('/', [ActivityController::class, 'destroy']);\n\n $router->post('/recording', [ActivityController::class, 'createRecording']);\n $router->put('/recording', [ActivityController::class, 'updateRecording']);\n $router->delete('/recording', [ActivityController::class, 'stopRecording']);\n\n $router->post('/summarize', [ActivityController::class, 'summarize']);\n\n // Sales Activity Playback action.\n $router->put('/favorite', [ActivityController::class, 'favorite']);\n $router->delete('/favorite', [ActivityController::class, 'unfavorite']);\n\n $router->put('/private', [ActivityController::class, 'markAsPrivate']);\n $router->delete('/private', [ActivityController::class, 'markAsPublic']);\n\n $router->put('/notification', [ActivityController::class, 'notify']);\n $router->delete('/notification/{notification}', [ActivityController::class, 'unnotify']);\n\n // Activity comments\n $router->put('/comment/{comment}', [ActivityController::class, 'updateComment']);\n $router->post('/comment/{comment}', [ActivityController::class, 'replyComment']);\n $router->post('/comment', [ActivityController::class, 'comment']);\n $router->delete('/comment/{comment}', [ActivityController::class, 'deleteComment']);\n $router->put('/comment/{comment}/visibility', [ActivityController::class, 'updateCommentVisibility']);\n\n $router->get('/coaching-sections', [ActivityController::class, 'coachingSections']);\n\n $router->put('/coach', [ActivityController::class, 'putCoachingFeedback']);\n $router->delete('/coach/{coachingFeedback}', [ActivityController::class, 'deleteCoachingFeedback']);\n\n $router->post('/coach-request', [ActivityController::class, 'coachRequest']);\n $router->post('/share', [ActivityController::class, 'share']);\n\n $router->post('/playlists', [ActivityController::class, 'addToPlaylist'])\n ->name('playlists.add.activity');\n\n $router->post('/key-moment', [MomentController::class, 'store']);\n\n $router->put('/play', [ActivityController::class, 'play']);\n\n $router->get('/stats', [ActivityController::class, 'stats']);\n\n $router->get('/topic-triggers', [ActivityController::class, 'fetchActivityTopicTriggers']);\n\n $router->post('/topic-triggers', [ActivityController::class, 'createActivityTopicTriggers']);\n\n $router->get('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'getAutoScore']);\n $router->post('/auto-score', [Controllers\\API\\Scorecards\\AutoScoreController::class, 'updateAutoScore']);\n\n // Get Download link for an activity\n $router->get('/download', [Controllers\\PlaybackController::class, 'getDownloadUrl'])->name('getDownloadUrl');\n\n $router->post('/note', [ActivityController::class, 'note']);\n\n $router->post('/export', [ExportController::class, 'share'])\n ->middleware(['throttle:activity-export']);\n\n $router->post('/shareable-link', [ExportController::class, 'getShareableLink'])\n ->middleware(['throttle:activity-export-shareable-link']);\n\n $router->group(['prefix' => 'transcription'], static function (Router $router): void {\n $router->get('/', [TranscriptionController::class, 'getTranscriptionByActivity']);\n $router->get('/search', [TranscriptionController::class, 'searchAction']);\n $router->get('/download', [TranscriptionController::class, 'downloadTranscriptionByActivity'])\n ->middleware(['throttle:transcription-download']);\n $router->put('/attribution-flip/{participantA}/{participantB}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionFlip']);\n $router->put('/attribution-change/{participant}', [Controllers\\API\\TranscriptionController::class, 'speakerAttributionChange']);\n $router->get('/translation', [TranslationController::class, 'getTranslation']);\n });\n });\n });\n});\n\n$router->group(['middleware' => ['auth:api']], static function () use ($router) {\n $router->put('/subscription/{morphType}', [SubscriptionController::class, 'subscribe']);\n $router->delete('/subscription/{morphType}', [SubscriptionController::class, 'unsubscribe']);\n});\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlists', [PlaylistController::class, 'all'])->name('api.playlists.all');\n $router->get('/playlists/user', [PlaylistController::class, 'userPlaylists'])\n ->name('api.playlists.userPlaylists');\n $router->post('/playlists', [PlaylistController::class, 'store'])->name('api.playlists.store');\n\n $router->post('/playlists/{playlist}/share', [PlaylistController::class, 'share'])\n ->name('api.playlist.create.share');\n $router->get('/playlists/{playlist}/activities', [PlaylistController::class, 'activities'])\n ->name('api.playlist.activities');\n $router->delete('/playlists/{playlist}/shares/{playlistShare}', [PlaylistController::class, 'unshare'])\n ->name('api.playlist.unshare');\n $router->get('/playlists/{playlist}/shares', [PlaylistController::class, 'shares'])\n ->name('api.playlist.get.shares');\n $router->post('/playlists/{playlist}/lock', [PlaylistController::class, 'lock'])->name('api.playlist.lock');\n $router->post('/playlists/{playlist}/unlock', [PlaylistController::class, 'unlock'])\n ->name('api.playlist.unlock');\n $router->get(\n '/playlists/{playlist}/available-playlists',\n [PlaylistController::class, 'availablePlaylistsToMoveTo'],\n )->name('api.playlist.available');\n $router->put('/playlists/{playlist}', [PlaylistController::class, 'update'])->name('api.playlist.update');\n $router->delete('/playlists/{playlist}', [PlaylistController::class, 'destroy'])\n ->name('api.playlist.destroy');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'updatePlaylistTrack'],\n )->name('api.playlist.updatePlaylistTrack');\n $router->put(\n '/playlists/{playlist}/tracks/{playlistActivity}/move',\n [PlaylistController::class, 'moveToPlaylist'],\n )->name('api.playlist.moveToPlaylist');\n $router->delete(\n '/playlists/{playlist}/tracks/{playlistActivity}',\n [PlaylistController::class, 'removeFromPlaylist'],\n )->name('api.playlist.removeFromPlaylist');\n});\n\n$router->group(\n ['prefix' => '/opportunity/{opportunity}', 'middleware' => ['api']],\n static function (Router $router): void {\n // Opportunity comments\n $router->group(['prefix' => '/comment', 'middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/', [CommentsController::class, 'fetchComments']);\n $router->post('/', [CommentsController::class, 'comment']);\n\n $router->group(['prefix' => '{comment}'], static function (Router $router): void {\n $router->put('/', [CommentsController::class, 'updateComment']);\n $router->post('/', [CommentsController::class, 'replyComment']);\n $router->delete('/', [CommentsController::class, 'deleteComment']);\n $router->put('/visibility', [CommentsController::class, 'updateCommentVisibility']);\n });\n });\n },\n);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->get('/playlist/{activity}.m3u8', [Controllers\\API\\PlaybackController::class, 'playlist']);\n $router->get('/media/{track}.m3u8', [Controllers\\API\\PlaybackController::class, 'media']);\n});\n\n$router->group(['middleware' => ['api']], static function (Router $router): void {\n // SSO email query.\n $router->get('/auth/sso/login', [Controllers\\API\\SsoController::class, 'ssoLogin'])->name('ssoLogin');\n});\n\n$router->get('/mobile-settings', [MobileSettingsController::class, 'getAll']);\n\n$router->put('/mobile-settings', [MobileSettingsController::class, 'updateSettings'])\n ->middleware(['auth:api', 'can:kiosk,' . User::class])\n ->name('api.kiosk.mobile_settings.update');\n\n// Ask Jiminny on deal level\n$router->get('deals/{opportunity}/ask-jiminny', [Controllers\\API\\DealLevelPromptsController::class, 'index'])\n ->middleware(['api', 'auth:api'])\n ->name('api.deals.ask-jiminny');\n\n$router->get('get-access-token/{provider?}', [SocialController::class, 'getAccessToken'])\n ->name('api.get_access_token')\n ->whereIn('provider', [SocialAccount::PROVIDER_HUBSPOT]);\n\n$router->group(['middleware' => ['auth:api']], static function (Router $router): void {\n $router->post('single-claim-token/{provider?}', [SocialController::class, 'getSingleUseClaim'])\n ->name('api.singe-claim-token');\n});\n\n$router->post('deauthorize-zoom-app', [SocialController::class, 'deauthorizeZoomApp'])\n ->name('api.deauthorize-zoom-app.recall-ai');\n\n$router->put('/conferences/{activity}/consent', [ConferencesOptInOutController::class, 'storeConsent'])\n ->middleware(['throttle:conference-consent'])\n ->name('api.conferences.store-consent');","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"51","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.02013889,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.014583333,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // v2 SDK might have different method names\n // Try common v2 method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n $result = $apiInstance->getDealsSummary();\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals Summary', true, \"Retrieved deals summary in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands\\Crm;\n\nuse Carbon\\Carbon;\nuse Exception;\nuse Illuminate\\Console\\Command;\nuse Jiminny\\Component\\Encryption\\EncryptedTokenManager;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Pipedrive\\versions\\v2\\Api\\ActivitiesApi;\nuse Pipedrive\\versions\\v2\\Api\\ActivityFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\DealsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonFieldsApi;\nuse Pipedrive\\versions\\v2\\Api\\PersonsApi;\nuse Pipedrive\\versions\\v2\\Configuration;\n\nclass TestPipedriveOfficialSdkCommand extends Command\n{\n protected $signature = 'jiminny:test-pipedrive-official-sdk {teamId}';\n\n protected $description = 'Test official Pipedrive SDK (pipedrive/pipedrive) with existing OAuth tokens';\n\n private array $results = [];\n\n private EncryptedTokenManager $tokenManager;\n\n public function __construct(EncryptedTokenManager $tokenManager)\n {\n parent::__construct();\n $this->tokenManager = $tokenManager;\n }\n\n public function handle(): int\n {\n $teamId = (int) $this->argument('teamId');\n\n $this->info(\"Starting Pipedrive Official SDK POC for Team ID: {$teamId}\");\n $this->newLine();\n\n try {\n $this->runTests($teamId);\n } catch (Exception $e) {\n $this->error(\"POC failed with error: {$e->getMessage()}\");\n $this->error($e->getTraceAsString());\n\n return 1;\n }\n\n $this->displayResults();\n\n return 0;\n }\n\n private function runTests(int $teamId): void\n {\n $team = Team::find($teamId);\n if (! $team) {\n throw new Exception(\"Team with ID {$teamId} not found\");\n }\n\n $socialAccount = SocialAccount::where('provider', SocialAccount::PROVIDER_PIPEDRIVE)\n ->whereHas('sociable', function ($query) use ($team) {\n $query->where('team_id', $team->id);\n })\n ->orderByDesc('expires') // Get the most recently expiring token\n ->first();\n\n if (! $socialAccount) {\n throw new Exception(\"No Pipedrive social account found for team {$teamId}\");\n }\n\n $this->info(\"Found Pipedrive account for team: {$team->name}\");\n $this->newLine();\n\n // Test 1: OAuth Initialization\n $this->testOAuthInitialization($socialAccount);\n\n // Test 2: Basic CRUD Operations\n $this->testBasicCrudOperations($socialAccount);\n\n // Test 3: Field Metadata\n $this->testFieldMetadata($socialAccount);\n\n // Test 4: v2 API Support\n $this->testV2ApiSupport($socialAccount);\n\n // Test 5: Error Handling\n $this->testErrorHandling($socialAccount);\n }\n\n private function testOAuthInitialization(SocialAccount $socialAccount): void\n {\n $this->info('Test 1: OAuth Initialization');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $client = new DealsApi(null, $config);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', true, \"Client initialized successfully in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('OAuth Initialization', false, $e->getMessage(), $elapsed);\n }\n\n $this->newLine();\n }\n\n private function testBasicCrudOperations(SocialAccount $socialAccount): void\n {\n $this->info('Test 2: Basic CRUD Operations');\n\n try {\n // Get the raw token from database\n $rawDbToken = $socialAccount->getProviderUserToken();\n $this->info(\"DB token (length: \" . strlen($rawDbToken) . \")\");\n $this->info(\"DB token preview: \" . substr($rawDbToken, 0, 20) . \"...\");\n\n // Check token expiry\n $expires = $socialAccount->expires;\n $this->info(\"Token expires at: \" . ($expires ? Carbon::createFromTimestamp($expires)->toDateTimeString() : 'null'));\n $this->info(\"Token is expired: \" . ($expires && $expires < time() ? 'YES' : 'NO'));\n\n // Test with the DB token directly\n $this->info(\"\\n--- Testing with DB token ---\");\n $config = new Configuration();\n $config->setAccessToken($rawDbToken);\n\n // Test 2a: Get Deals Summary\n $this->testGetDeals($config);\n\n // Test 2b: Get Persons\n $this->testGetPersons($config);\n\n // Test 2c: Get Activities\n $this->testGetActivities($config);\n } catch (Exception $e) {\n $this->recordResult('Basic CRUD Operations', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testCurrentSystemApproach(SocialAccount $socialAccount): void\n {\n $startTime = microtime(true);\n\n try {\n // Simulate how current system makes requests\n $token = $socialAccount->getProviderUserToken();\n $url = 'https://api.pipedrive.com/api/v2/deals';\n\n $headers = [\n 'Authorization' => 'Bearer ' . $token,\n 'Accept' => 'application/json',\n ];\n\n $client = new \\GuzzleHttp\\Client();\n $response = $client->get($url, [\n 'headers' => $headers,\n 'timeout' => 30,\n ]);\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $statusCode = $response->getStatusCode();\n $this->recordResult('Current System v2 API', $statusCode === 200, \"Status: {$statusCode} in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Current System v2 API', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetDeals(Configuration $config): void\n {\n $this->info('Test 2a: Get Deals');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealsApi(null, $config);\n // v2 SDK might have different method names\n // Try common v2 method names\n try {\n $result = $apiInstance->getDeals(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', true, \"Retrieved deals in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method\n $result = $apiInstance->getDealsSummary();\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals Summary', true, \"Retrieved deals summary in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deals', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersons(Configuration $config): void\n {\n $this->info('Test 2b: Get Persons');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonsApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllPersons(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', true, \"Retrieved persons in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Persons', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivities(Configuration $config): void\n {\n $this->info('Test 2c: Get Activities');\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivitiesApi(null, $config);\n // v2 SDK might have different method names\n try {\n $result = $apiInstance->getActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n // Try alternative method names\n try {\n $result = $apiInstance->getAllActivities(['limit' => 10]);\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', true, \"Retrieved activities in {$elapsed}ms\", $elapsed);\n } catch (Exception $e2) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, \"Method not found: {$e->getMessage()}\", $elapsed);\n }\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activities', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testFieldMetadata(SocialAccount $socialAccount): void\n {\n $this->info('Test 3: Field Metadata');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n // Test 3a: Get Deal Fields\n $this->testGetDealFields($config);\n\n // Test 3b: Get Person Fields\n $this->testGetPersonFields($config);\n\n // Test 3c: Get Activity Fields\n $this->testGetActivityFields($config);\n } catch (Exception $e) {\n $this->recordResult('Field Metadata', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testGetDealFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new DealFieldsApi(null, $config);\n $result = $apiInstance->getDealFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Deal Fields', true, \"Retrieved {$count} deal fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Deal Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetPersonFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new PersonFieldsApi(null, $config);\n $result = $apiInstance->getPersonFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Person Fields', true, \"Retrieved {$count} person fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Person Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testGetActivityFields(Configuration $config): void\n {\n $startTime = microtime(true);\n\n try {\n $apiInstance = new ActivityFieldsApi(null, $config);\n $result = $apiInstance->getActivityFields();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $count = $result->getData() ? count($result->getData()) : 0;\n $this->recordResult('Get Activity Fields', true, \"Retrieved {$count} activity fields in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Get Activity Fields', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function testV2ApiSupport(SocialAccount $socialAccount): void\n {\n $this->info('Test 4: v2 API Support (Cursor-based Pagination)');\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n\n $startTime = microtime(true);\n\n // Test v2 deals endpoint with cursor pagination\n // Note: The official SDK may or may not have v2 API support\n // This test will determine if v2 is available\n try {\n $apiInstance = new DealsApi(null, $config);\n $updatedSince = Carbon::now()->subDays(30)->toRfc3339String();\n $result = $apiInstance->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n\n // Check if response has cursor information (v2 indicator)\n // The response object doesn't have getAdditionalData method\n // Just test if the call works - v2 API support is limited in official SDK v1\n $this->recordResult('v2 API Support', false, \"v1 API works but v2 cursor pagination not available in official SDK v1. Retrieved summary in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('v2 API Support', false, $e->getMessage(), $elapsed);\n }\n } catch (Exception $e) {\n $this->recordResult('v2 API Support', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testErrorHandling(SocialAccount $socialAccount): void\n {\n $this->info('Test 5: Error Handling');\n\n try {\n // Test 5a: Invalid Token\n $this->testInvalidToken();\n\n // Test 5b: Non-existent Resource\n $this->testNonExistentResource($socialAccount);\n } catch (Exception $e) {\n $this->recordResult('Error Handling', false, $e->getMessage(), 0);\n }\n\n $this->newLine();\n }\n\n private function testInvalidToken(): void\n {\n $this->info('Test 5a: Invalid Token');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken('invalid_token');\n $client = new DealsApi(null, $config);\n\n $client->getDealsSummary();\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Invalid Token Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n }\n\n private function testNonExistentResource(SocialAccount $socialAccount): void\n {\n $this->info('Test 5b: Non-existent Resource');\n $startTime = microtime(true);\n\n try {\n $config = new Configuration();\n $config->setAccessToken($socialAccount->provider_user_token);\n $client = new DealsApi(null, $config);\n\n // Try to get a deal with a very high ID that likely doesn't exist\n // Official SDK has getDealsSummary which works without specific ID\n // Instead, let's test with an invalid field ID\n try {\n $fieldClient = new DealFieldsApi(null, $config);\n $fieldClient->getDealField(999999999); // Very high ID that likely doesn't exist\n\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, \"Expected error but request succeeded in {$elapsed}ms\", $elapsed);\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', true, \"Correctly threw exception: {$e->getMessage()} in {$elapsed}ms\", $elapsed);\n }\n } catch (Exception $e) {\n $elapsed = round((microtime(true) - $startTime) * 1000, 2);\n $this->recordResult('Non-existent Resource Error', false, $e->getMessage(), $elapsed);\n }\n }\n\n private function recordResult(string $testName, bool $success, string $message, float $elapsed): void\n {\n $this->results[] = [\n 'test' => $testName,\n 'success' => $success,\n 'message' => $message,\n 'elapsed' => $elapsed,\n ];\n\n $status = $success ? '✅ PASS' : '❌ FAIL';\n $this->line(\" {$status} - {$testName}: {$message}\");\n }\n\n private function displayResults(): void\n {\n $this->newLine();\n $this->info('=== POC Test Results Summary ===');\n $this->newLine();\n\n $total = count($this->results);\n $passed = count(array_filter($this->results, fn ($r) => $r['success']));\n $failed = $total - $passed;\n\n $this->line(\"Total Tests: {$total}\");\n $this->line(\"Passed: {$passed}\");\n $this->line(\"Failed: {$failed}\");\n $this->newLine();\n\n $totalTime = array_sum(array_column($this->results, 'elapsed'));\n $this->line(\"Total Execution Time: {$totalTime}ms\");\n $this->newLine();\n\n if ($failed > 0) {\n $this->warn('Failed Tests:');\n foreach ($this->results as $result) {\n if (! $result['success']) {\n $this->line(\" - {$result['test']}: {$result['message']}\");\n }\n }\n $this->newLine();\n }\n\n $this->info('=== Detailed Results ===');\n foreach ($this->results as $result) {\n $status = $result['success'] ? '✅' : '❌';\n $this->line(\"{$status} {$result['test']} ({$result['elapsed']}ms): {$result['message']}\");\n }\n\n $this->newLine();\n $this->info('=== Recommendations ===');\n\n if ($passed === $total) {\n $this->info('✅ All tests passed! The official SDK is viable for migration.');\n $this->info('Next steps: Proceed with full migration planning.');\n } else {\n $this->warn('⚠️ Some tests failed. Review the failures above before proceeding.');\n $this->warn('Consider hybrid approach or investigate alternatives if critical operations fail.');\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6696394565951309690
|
2696331441845038283
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
settings
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
13/15
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
Built-in Preview
Chrome
Firefox
Safari
2
5
3
16
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
/**
* API routes.
*
* @see \Jiminny\Providers\RouteServiceProvider
*
* @var Router $router
*/
use Illuminate\Routing\Router;
use Illuminate\Support\Collection;
use Jiminny\Component\DealInsights\Forecast\Forecast;
use Jiminny\Component\Router\Routes;
use Jiminny\Contracts\Acl\PermissionEnum;
use Jiminny\Http\Controllers;
use Jiminny\Http\Controllers\API\ActivityController;
use Jiminny\Http\Controllers\API\AiCrmNotesController;
use Jiminny\Http\Controllers\API\ClientTokenController;
use Jiminny\Http\Controllers\API\CrmController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAiCallScoringController;
use Jiminny\Http\Controllers\ConferencesOptInOutController;
use Jiminny\Http\Controllers\API\DealRiskController;
use Jiminny\Http\Controllers\API\InstantMeetingController;
use Jiminny\Http\Controllers\API\LanguageController;
use Jiminny\Http\Controllers\API\LiveFeedController;
use Jiminny\Http\Controllers\API\MeetingsController;
use Jiminny\Http\Controllers\API\MessageController;
use Jiminny\Http\Controllers\API\MetadataController;
use Jiminny\Http\Controllers\API\MobileSettingsController;
use Jiminny\Http\Controllers\API\MomentController;
use Jiminny\Http\Controllers\API\NudgeController;
use Jiminny\Http\Controllers\API\NumberAllocatorController;
use Jiminny\Http\Controllers\API\Opportunity\CommentsController;
use Jiminny\Http\Controllers\API\OrganizationLicensesController;
use Jiminny\Http\Controllers\API\OrganizationMembersController;
use Jiminny\Http\Controllers\API\OrganizationRetentionPolicyController;
use Jiminny\Http\Controllers\API\OrganizationRolesController;
use Jiminny\Http\Controllers\API\OrganizationSyncController;
use Jiminny\Http\Controllers\API\Page\OnDemandController;
use Jiminny\Http\Controllers\API\Page\PlaybackController;
use Jiminny\Http\Controllers\API\PartnerController;
use Jiminny\Http\Controllers\API\PhoneNumberController;
use Jiminny\Http\Controllers\API\PlaylistController;
use Jiminny\Http\Controllers\API\Settings\EmailSyncController;
use Jiminny\Http\Controllers\API\SidekickController;
use Jiminny\Http\Controllers\API\SoftphoneController;
use Jiminny\Http\Controllers\API\SubscriptionController;
use Jiminny\Http\Controllers\API\TeamAiAutomationController;
use Jiminny\Http\Controllers\API\TeamAiContextController;
use Jiminny\Http\Controllers\API\TeamController;
use Jiminny\Http\Controllers\API\TeamInsights\ActivityStatsController;
use Jiminny\Http\Controllers\API\TeamInsights\CoachingFeedbacksController;
use Jiminny\Http\Controllers\API\TeamInsights\DashboardController;
use Jiminny\Http\Controllers\API\TeamInsights\EngagementController;
use Jiminny\Http\Controllers\API\TeamInsights\TeamInsightsAutomatedCallScoresController;
use Jiminny\Http\Controllers\API\TeamInsights\ThemeTopicsController;
use Jiminny\Http\Controllers\API\TeamInsights\TopicsInDealsController;
use Jiminny\Http\Controllers\API\TeamInsightsController;
use Jiminny\Http\Controllers\API\Themes\ThemeController;
use Jiminny\Http\Controllers\API\Themes\TopicController;
use Jiminny\Http\Controllers\API\Themes\TopicTriggerController;
use Jiminny\Http\Controllers\API\TranscriptionController;
use Jiminny\Http\Controllers\API\TranslationController;
use Jiminny\Http\Controllers\API\UserAutomatedReports\UserAutomatedReportsController;
use Jiminny\Http\Controllers\API\UserController;
use Jiminny\Http\Controllers\API\VocabularyController;
use Jiminny\Http\Controllers\Auth\ExtensionController;
use Jiminny\Http\Controllers\Auth\SocialController;
use Jiminny\Http\Controllers\ExportController;
use Jiminny\Http\Controllers\Kiosk\ActivityController as KioskActivityController;
use Jiminny\Http\Controllers\Kiosk\AutomatedReportsController;
use Jiminny\Http\Controllers\Kiosk\MediaPipelineController;
use Jiminny\Http\Controllers\Kiosk\OrganizationsController;
use Jiminny\Http\Controllers\Kiosk\PartnersController;
use Jiminny\Http\Controllers\Kiosk\SearchController;
use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController;
use Jiminny\Http\Controllers\NotificationController;
use Jiminny\Http\Controllers\Settings\GroupController;
use Jiminny\Http\Controllers\Settings\JobTitleController;
use Jiminny\Http\Controllers\Settings\PlaybookCategoryController;
use Jiminny\Http\Controllers\Settings\PlaybookController;
use Jiminny\Http\Controllers\Settings\Teams\IntegrationController;
use Jiminny\Http\Controllers\Settings\Teams\InvitationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamActivityController;
use Jiminny\Http\Controllers\Settings\Teams\TeamCoachingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamConferenceSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationController;
use Jiminny\Http\Controllers\Settings\Teams\TeamDealInsightsSettingController;
use Jiminny\Http\Controllers\Settings\Teams\TeamMemberController;
use Jiminny\Http\Controllers\Settings\Teams\TeamPhotoController;
use Jiminny\Http\Controllers\Settings\Teams\TeamRecordingSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSettingsController;
use Jiminny\Http\Controllers\Settings\Teams\TeamSoftphoneSettingsController;
use Jiminny\Http\Controllers\TeamSetupController;
use Jiminny\Models;
use Jiminny\Models\PlaybackTheme;
use Jiminny\Models\SocialAccount;
use Jiminny\Models\User;
use Jiminny\Models\Vocabulary;
use Jiminny\Repositories;
use Jiminny\Mcp\Servers\JiminnyServer;
use Laravel\Mcp\Facades\Mcp;
// mcp.audit MUST stay outermost so its $next($request) call wraps the auth
// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections
// short-circuit before McpAuditMiddleware::handle ever runs and we lose
// audit rows for exactly the requests the security log most needs to capture.
// McpAuditMiddleware::writeAuditRow null-checks $request->user(), so writing
// pre-auth is safe.
Mcp::web('/mcp', JiminnyServer::class)
->middleware(['mcp.audit', 'auth:api', 'mcp.tier']);
$router->group(['middleware' => ['auth:api']], static function (Router $router): void {
$router->get('/metadata/extension-app', [MetadataController::class, 'extension']);
$router->get('/', [NumberAllocatorController::class, 'generate']);
$router->delete('/key-moment/{activityMoment}', [MomentController::class, 'destroy']);
$router->post('/instant-meeting/start', [InstantMeetingController::class, 'postRequestBotAtUrl'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('instant-meeting.start');
// Meeting creation endpoint for Outlook add-in
$router->post('/meetings', [MeetingsController::class, 'create'])
->middleware(['permission:' . PermissionEnum::RECORD_MEETING->value])
->name('meetings.create');
// Number provisioning and search.
$router->get('/phone-numbers', [NumberAllocatorController::class, 'generate']);
$router->get('/phone-numbers/{number}', [PhoneNumberController::class, 'number']);
$router->group(['prefix' => 'deal-insights'], static function (Router $router): void {
$router->get('/forecast', [
Controllers\API\DealInsights\DealsController::class,
'getForecast',
])->defaults('period', Forecast::PERIOD_QUARTER);
$router->get('/deals/{stage?}', [
Controllers\API\DealInsights\DealsController::class,
'list',
])->defaults('stage', \Jiminny\Component\DealInsights\CriteriaInterface::STAGE_ALL);
$router->get('/details/details-daily/{opportunityId}/{date}', [
Controllers\API\DealInsights\DealsController::class,
'detailsDaily',
]);
$router->put('/deals/{opportunity}/edit-fields', [
Controllers\API\DealInsights\DealsController::class,
'updateFields',
]);
$router->get('/externalId/{dealId}', [
Controllers\API\DealInsights\DealsController::class,
'externalDealId',
]);
$router->put('/dealRisk/{dealRisk}', [DealRiskController::class, 'toggleActivity']);
});
$router->get('/team-insights/users', [TeamInsightsController::class, 'fetchUsers'])
->name('team_insights.users');
$router->get('/team-insights/dashboard', [DashboardController::class, 'fetch'])
->name('team_insights.dashboard');
// Team Insights - Coaching Feedbacks
$router->get('/team-insights/coaching-feedbacks-over-time', [CoachingFeedbacksController::class, 'fetch'])
->name('team_insights.coaching_feedbacks_over_time');
$router
->get('/team-insights/coaching-feedbacks-over-time/download', [CoachingFeedbacksController::class, 'download'])
->name('team_insights.coaching_feedbacks_over_time.download');
$router->get(
'/team-insights/coaching-feedbacks-over-time/drill-down',
[CoachingFeedbacksController::class, 'drillDown'],
)->name('team_insights.coaching_feedbacks_over_time.drill_down');
// Team Insights - Automated Call Scores
$router->get(
'/team-insights/automated-call-scores-over-time',
[TeamInsightsAutomatedCallScoresController::class, 'index'],
)->name('team_insights.automated_call_scores_over_time.index');
$router->get(
'/team-insights/automated-call-scores-over-time/drill-down',
[TeamInsightsAutomatedCallScoresController::class, 'show'],
)->name('team_insights.automated_call_scores_over_time.show');
// Team Insights - AI Call Scoring
$router->get(
'/team-insights/ai-call-scoring-over-time',
[TeamInsightsAiCallScoringController::class, 'index'],
)->name('team_insights.ai_call_scoring_over_time.index');
$router->get(
'/team-insights/ai-call-scoring-over-time/drill-down',
[TeamInsightsAiCallScoringController::class, 'show'],
)->name('team_insights.ai_call_scoring_over_time.show');
$router->get('/team-insights/engagement', [ActivityStatsController::class, 'fetch'])
->name('team_insights.engagement');
$router->get('/team-insights/engagement/drill-down/{engagementType}', [ActivityStatsController::class, 'drillDown'])
->name('team_insights.engagement.drill_down');
$router->get('/team-insights/topics', [ThemeTopicsController::class, 'getTopics'])
->name('team_insights.topics.index');
$router->get('/team-insights/topics/{topic}', [ThemeTopicsController::class, 'fetch'])
->name('team_insights.topics.show');
$router->get('/team-insights/topics/{topic}/drill-down', [ThemeTopicsController::class, 'drillDown'])
->name('team_insights.topics.drill_down');
$router->group(['prefix' => 'team-insights'], static function (Router $router): void {
$router->group(['prefix' => 'conversations'], static function (Router $router): void {
$router->get('/', [
Controllers\API\TeamInsights\ConversationsController::class,
'fetch',
]);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{activityChannel}/{drillDownType}', [
Controllers\API\TeamInsights\ConversationsController::class,
'drillDown',
])
->where(
'activityChannel',
Collection::make(Models\Activity::CHANNELS)->join('|'),
)
->where(
'drillDownType',
Collection::make(Repositories\TeamInsightsRepository::CONVERSATION_DRILLDOWNS)
->join('|'),
);
});
});
$router->group(['prefix' => 'coaching'], static function (Router $router): void {
$router->get('/', [EngagementController::class, 'fetch']);
$router->group(['prefix' => 'drill-down'], static function (Router $router): void {
$router
->get('/{coachingType}/{drillDownType?}', [EngagementController::class, 'drillDown'])
->where(
'coachingType',
Collection::make(EngagementController::COACHING_TYPES)->join('|'),
)
->where(
'drillDownType',
Collection::make(EngagementController::COACHING_DRILLDOWNS)->join('|'),
);
});
});
});
$router->get('/topics-in-deals', [TopicsInDealsController::class, 'topics'])
->name('topics_in_deals.topics');
$router->get('/topics-in-deals/topic-triggers', [TopicsInDealsController::class, 'topicTriggers'])
->name('topics_in_deals.topic_triggers');
$router->get('/compare-topics-in-deals', [TopicsInDealsController::class, 'comparison'])
->name('topics_in_deals.comparison');
// CRM actions.
$router->group(['prefix' => 'crm'], static function (Router $router): void {
$router->get('/search', [CrmController::class, 'search']);
$router->get('/opportunity', [CrmController::class, 'opportunities']);
$router->get('/customers', [CrmController::class, 'customers']);
$router->get('/accounts', [CrmController::class, 'accounts']);
$router->get('/contacts', [CrmController::class, 'contacts']);
$router->get('/leads', [CrmController::class, 'leads']);
$router->get('/tasks', [CrmController::class, 'activities']);
$router->get('/layouts', [CrmController::class, 'layouts']);
});
// AI CRM notes.
$router->group(['prefix' => 'ai-crm-notes'], static function (Router $router): void {
$router->get('/activity/{activity}', [AiCrmNotesController::class, 'getByActivity']);
$router->post('/activity/{activity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByActivity']);
$router->post('/activity/{activity}/discard', [AiCrmNotesController::class, 'discardByActivity']);
$router->get('/deal/{opportunity}', [AiCrmNotesController::class, 'getByOpportunity']);
$router->post('/deal/{opportunity}/log-to-crm', [AiCrmNotesController::class, 'logToCrmByOpportunity']);
$router->post('/deal/{opportunity}/discard', [AiCrmNotesController::class, 'discardByOpportunity']);
});
// Automated Reports
$router->post('/automated-reports/interest', [UserAutomatedReportsController::class, 'trackInterest']);
$router->group(
[
'prefix' => 'automated-reports',
'middleware' => 'can:canAccessAiReports,' . User::class,
],
static function (Router $router): void {
$router->get('/', [UserAutomatedReportsController::class, 'list']);
$router->delete('/{uuid}', [UserAutomatedReportsController::class, 'delete']);
}
);
// Setup New Team / Trial
$router->get('/features', [TeamSetupController::class, 'features']);
$router->get('/tiers', [TeamSetupController::class, 'tiers']);
$router->get('/calendars', [TeamSetupController::class, 'calendars']);
$router->get('/crm-services', [TeamSetupController::class, 'crmServices']);
$router->get('/connect-providers', [TeamSetupController::class, 'connectProviders']);
$router->get('/integration-app-token', [TeamSetupController::class, 'integrationAppToken']);
$router->post('/integration-app-connect', [TeamSetupController::class, 'integrationAppConnect']);
// Notifications
$router->get('/notifications/recent', [NotificationController::class, 'notifications']);
$router->put('/notifications/read', [NotificationController::class, 'markAsRead']);
$router->put('/notifications/read-multiple', [NotificationController::class, 'markMultipleAsRead']);
$router->put('/notifications/read-all', [NotificationController::class, 'markAllAsRead']);
// Live feed
$router->get('/live-feed', [LiveFeedController::class, 'liveFeedItems']);
// Languages
$router->get('/languages', [LanguageController::class, 'list']);
// The whole settings section will be moved out in a separate file
$router->group(['prefix' => '/settings'], static function (Router $router): void {
$router->group(['prefix' => '/organizations'], static function (Router $router): void {
$router
->middleware(['can:kiosk,' . User::class])
->post('/', [OrganizationController::class, 'store'])
->name('kiosk.organizations.store');
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router) {
// Sync fields and team metadata
$router->post('/fields/sync', [OrganizationSyncController::class, 'index'])
->name('api.sync.fields');
// Conference Preferences.
$router->post('/bot-avatar', [TeamPhotoController::class, 'updateBotAvatar'])
->name('update.bot.avatar');
// Roles.
$router->get('/roles', [OrganizationRolesController::class, 'index'])
->name('api.roles.index');
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_RETENTION_POLICY->value],
static function (Router $router): void {
$router->get('/retention-policy', [OrganizationRetentionPolicyController::class, 'index'])
->name('api.retention_policy.index');
$router->post('/retention-policy', [OrganizationRetentionPolicyController::class, 'store'])
->name('api.retention_policy.update');
}
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_USERS->value],
static function (Router $router): void {
// Invitations.
$router->get('/invitations', [InvitationController::class, 'index'])
->name('api.invitations.index');
$router->post('/invitations/{invitation}', [InvitationController::class, 'resend'])
->name('api.invitations.resend');
$router->delete('/invitations/{invitation}', [InvitationController::class, 'destroy'])
->name('api.invitations.delete');
$router->post('/invitations', [InvitationController::class, 'store'])
->name('api.invitations.store');
},
);
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_TEAM->value],
static function (Router $router): void {
// Groups.
$router->post('/groups', [GroupController::class, 'store']);
$router->get('/groups/{group}', [GroupController::class, 'show']);
$router->put('/groups/{group}', [GroupController::class, 'update']);
$router->put('/group/{group}/scope', [GroupController::class, 'updateGroupScope']);
$router->post('/group/{group}/dealRisks', [DealRiskController::class, 'updateSettings']);
// Sidekick settings
$router->group(
['middleware' => 'permission:' . PermissionEnum::MANAGE_SIDEKICK->value],
static function (Router $router): void {
$router->get('/sidekick', [SidekickController::class, 'getSidekickSettings']);
$router
->post(
'/group/{group}/sidekick',
[SidekickController::class, 'setSidekickSettings'],
)
->middleware(['can:updateSidekickSettings,group'])
->name('api.sidekick_settings.update');
$router
->post('/sidekick', [SidekickController::class, 'setSidekickSettings'])
->middleware(['permission:' . PermissionEnum::UPDATE_ALL_SIDEKICK_SETTINGS->value])
->name('api.sidekick_settings.update_all');
},
);
$router->get('/deal-insights', [TeamDealInsightsSettingController::class, 'index']);
$router->patch('/deal-insights', [TeamDealInsightsSettingController::class, 'update']);
// CRM Layout Management
$router->group(['prefix' => 'layouts'], static function (Router $router): void {
$router->get(
'/{type}',
[Controllers\API\LayoutManagementController::class, 'list'],
)->name('layouts.list');
$router->put(
'/{layout}',
[Controllers\API\LayoutManagementController::class, 'update'],
)->name('layouts.update');
});
// Users.
$router->put('/users/{user}', [TeamMemberController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.update');
$router->delete('/users/{user}', [TeamMemberController::class, 'deactivate'])
->middleware(['permission:' . PermissionEnum::MANAGE_USERS->value])
->name('api.users.deactivate');
$router->group(
[
'prefix' => 'vocabulary',
'middleware' => 'can:manage,' . Vocabulary::class,
],
static function (Router $router): void {
$router
->get('/', [VocabularyController::class, 'list'])
->name('api.vocabulary.index');
$router
->post('/', [VocabularyController::class, 'update'])
->name('api.vocabulary.create');
$router->group(['prefix' => '{vocabulary}'], static function (Router $router): void {
$router
->put('/', [VocabularyController::class, 'update'])
->middleware('can:update,vocabulary')
->name('api.vocabulary.update');
$router
->delete('/', [VocabularyController::class, 'delete'])
->middleware('can:delete,vocabulary')
->name('api.vocabulary.delete');
});
},
);
$router->group(['prefix' => 'ai-context'], static function (Router $router): void {
$router->get('/', [TeamAiContextController::class, 'index'])
->name('api.ai_context.get');
$router->post('/', [TeamAiContextController::class, 'store'])
->name('api.ai_context.store');
});
$router->group(['prefix' => 'ai-automation'], static function (Router $router): void {
$router->post('/fields/test-prompt', [TeamAiAutomationController::class, 'testCrmAiPrompt'])
->name('api.automation.templates.fields.test-prompt');
// List CRM fields per object type
$router->get('/fields/{objectType}', [TeamAiAutomationController::class, 'fields'])
->name('api.automation.fields');
// List DealStages fields per object type
$router->get('/stages', [TeamAiAutomationController::class, 'stages'])
->name('api.automation.stages');
// Create CRM AI template
$router->post('/templates', [TeamAiAutomationController::class, 'createTemplate'])
->name('api.automation.templates.create');
// Export CRM updates
$router->post('/templates/export-crm-updates', [TeamAiAutomationController::class, 'exportTemplateCrmUpdates'])
->name('api.automation.templates.export-crm-updates');
// Update CRM AI template
$router->put('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'updateTemplate'])
->name('api.automation.templates.update');
// Delete CRM AI template
$router->delete('/templates/{crmTemplate}', [TeamAiAutomationController::class, 'deleteTemplate'])
->name('api.automation.templates.delete');
// List all CRM AI templates
$router->get('/templates', [TeamAiAutomationController::class, 'templates'])
->name('api.automation.templates.list');
// Create CRM AI template field
$router->post('/templates/{crmTemplate}/fields', [TeamAiAutomationController::class, 'createField'])
->name('api.automation.templates.fields.create');
// Update CRM AI template field
$router->put('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'updateField'])
->name('api.automation.templates.fields.update');
// Delete CRM AI template field
$router->delete('/templates/{crmTemplate}/fields/{crmTemplateField}', [TeamAiAutomationController::class, 'deleteField'])
->name('api.automation.templates.fields.delete');
});
$router->group(['prefix' => 'ai-call-scoring'], static function (Router $router): void {
// Create AI scorecard
$router->post('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'createAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.create');
// Update AI scorecard
$router->put('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'updateAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.update');
// Delete AI scorecard
$router->delete('/ai-scorecards/{aiScorecard}', [Controllers\API\AiCallScoring\AiScorecardController::class, 'deleteAiScorecard'])
->name('api.ai-call-scoring.ai-scorecards.delete');
// List all AI scorecards
$router->get('/ai-scorecards', [Controllers\API\AiCallScoring\AiScorecardController::class, 'aiScorecards'])
->name('api.ai-call-scoring.ai-scorecards.list');
// Test AI scorecard prompt
$router->post(
'/ai-scorecards/{aiScorecard}/test-prompt',
[
Controllers\API\AiCallScoring\AiScorecardController::class,
'testAiScorecardPrompt',
]
)
->name('api.ai-call-scoring.ai-scorecards.test-prompt');
// Create AI Scorecard rule
$router->post('/ai-scorecards/{aiScorecard}/ai-scorecard-rules', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'createRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.create');
// Update AI Scorecard rule
$router->put('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'updateAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.update');
// Delete AI Scorecard rule
$router->delete('/ai-scorecards/{aiScorecard}/ai-scorecard-rules/{aiScorecardRule}', [Controllers\API\AiCallScoring\AiScorecardRuleController::class, 'deleteAiScorecardRule'])
->name('api.ai-call-scoring.ai-scorecards.ai-scorecard-rules.delete');
});
// Theme, topics, triggers
$router->get('/themes', [ThemeController::class, 'list']);
$router
->post('/themes', [ThemeController::class, 'updateTheme'])
->middleware('can:manage,' . PlaybackTheme::class)
->name('api.theme.create');
$router->group(
[
'prefix' => 'theme/{theme}',
'middleware' => 'can:update,theme',
],
static function (Router $router): void {
$router
->put('/', [ThemeController::class, 'updateTheme'])
->name('api.theme.update');
$router
->delete('/', [ThemeController::class, 'deleteTheme'])
->middleware('can:delete,theme')
->name('api.theme.delete');
$router
->post('/topics', [TopicController::class, 'updateTopic'])
->middleware('can:createTopic,theme')
->name('api.topic.create');
$router->group(
[
'prefix' => 'topic/{topic}',
'middleware' => 'can:update,topic',
],
static function (Router $router): void {
$router
->put('/', [TopicController::class, 'updateTopic'])
->name('api.topic.update');
$router
->delete('/', [TopicController::class, 'deleteTopic'])
->middleware('can:delete,topic')
->name('api.topic.delete');
$router
->post('/triggers', [TopicTriggerController::class, 'updateTrigger'])
->middleware('can:createTrigger,topic')
->name('api.topic_trigger.create');
$router->group(
[
'prefix' => 'trigger/{topicTrigger}',
'middleware' => 'can:update,topicTrigger',
],
static function (Router $router): void {
$router
->put('/', [TopicTriggerController::class, 'updateTrigger'])
->name('api.topic_trigger.update');
$router
->delete('/', [TopicTriggerController::class, 'deleteTrigger'])
->middleware('can:delete,topicTrigger')
->name('api.topic_trigger.delete');
},
);
},
);
},
);
$router->post('/themes/import', [Controllers\API\Themes\ImportTopicTriggerController::class, 'importThemes']);
$router->get('/themes/export', [Controllers\API\Themes\ExportTopicTriggerController::class, 'exportThemes']);
// Auto-scoring
$router->group(['prefix' => '/scorecards'], static function (Router $router) {
$router->get('/', [Controllers\API\Scorecards\ScorecardController::class, 'list']);
$router->post('/', [Controllers\API\Scorecards\ScorecardController::class, 'create']);
$router->delete('/{scorecard}', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/validate-name', [
Controllers\API\Scorecards\ScorecardController::class,
'validateNameExists',
]);
$router->get('/enabled-scorecard', [
Controllers\API\Scorecards\ScorecardController::class,
'getEnabledScorecard',
]);
$router->get('/affected-scorecards', [
Controllers\API\Scorecards\ScorecardController::class,
'getAffectedScorecards',
]);
$router->group(['prefix' => '/{scorecard}'], static function (Router $router) {
$router->put('/', [
Controllers\API\Scorecards\ScorecardController::class,
'update',
]);
$router->delete('/', [
Controllers\API\Scorecards\ScorecardController::class,
'delete',
]);
$router->post('/rules', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'create',
]);
$router->post('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'update',
]);
$router->delete('/rules/{scorecardRule}', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'delete',
]);
$router->post('/rules/{scorecardRule}/update-order', [
Controllers\API\Scorecards\ScorecardRuleController::class,
'updateOrder',
]);
});
});
// Coaching Playbook.
Route::get('/playbooks', [PlaybookController::class, 'all']);
Route::get('/playbooksTree', [PlaybookController::class, 'tree']);
Route::put('/playbooks/{playbook}', [PlaybookController::class, 'update']);
Route::post('/playbooks', [PlaybookController::class, 'store']);
Route::delete('/playbooks/{playbook}', [PlaybookController::class, 'destroy']);
Route::prefix('/playbooks/{playbook}')->group(static function () {
// Playbook Categories.
Route::get('/categories', [PlaybookCategoryController::class, 'all']);
Route::put('/categories/sequence', [PlaybookCategoryController::class, 'sequence']); // Respect order.
Route::put('/categories/{category}', [PlaybookCategoryController::class, 'update']);
Route::post('/categories', [PlaybookCategoryController::class, 'store']);
Route::post('/test-prompt', [PlaybookController::class, 'testAiActivityTypePrompt']);
Route::post('/prompt-suggestion', [PlaybookController::class, 'getPromptSuggestion']);
Route::delete('/categories/{category}', [PlaybookCategoryController::class, 'destroy']);
Route::prefix('/categories/{category}')->group(static function () {
// Coaching Sections
Route::get('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'all']);
Route::put('/coaching-section/sequence', [Controllers\Settings\Coaching\SectionsController::class, 'sequence']);
Route::put('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'update']);
Route::post('/coaching-section', [Controllers\Settings\Coaching\SectionsController::class, 'store']);
Route::delete('/coaching-section/{coachingSection}', [Controllers\Settings\Coaching\SectionsController::class, 'destroy']);
Route::prefix('coaching-section/{coachingSection}')->group(static function () {
// Coaching Section Criteria
Route::get('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'all']);
Route::put('/coaching-section-criterion/sequence', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'sequence']);
Route::put('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'update']);
Route::post('/coaching-section-criterion', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'store']);
Route::delete('/coaching-section-criterion/{coachingSectionCriterion}', [Controllers\Settings\Coaching\SectionCriteriaController::class, 'destroy']);
});
});
});
},
);
$router->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value])
->group(static function (Router $router): void {
// Job Titles.
$router->get('/job-titles', [JobTitleController::class, 'all']);
$router->put('/job-titles/{job}', [JobTitleController::class, 'update']);
$router->post('/job-titles', [JobTitleController::class, 'store']);
$router->delete('/job-titles/{job}', [JobTitleController::class, 'destroy']);
// Team Settings.
$router->put('/', [TeamSettingsController::class, 'update']);
$router->put('/notifications', [TeamSettingsController::class, 'updateNotifications']);
$router->put('/team-conference', [TeamConferenceSettingsController::class, 'update']);
$router->put('/team-coaching', [TeamCoachingSettingsController::class, 'update']);
$router->put('/team-softphone', [TeamSoftphoneSettingsController::class, 'update']);
$router->put('/owner', [Controllers\Settings\Teams\OrganizationSettingsController::class, 'updateOwner']);
$router->put('/team-recording', [TeamRecordingSettingsController::class, 'update'])
->middleware(['permission:' . PermissionEnum::MANAGE_RECORDING->value]);
// Key Moments.
$router->get('/moments/{moment}', [Controllers\Settings\MomentController::class, 'show']);
$router->put('/moments/{moment}', [Controllers\Settings\MomentController::class, 'update']);
$router->post('/moments', [Controllers\Settings\MomentController::class, 'store']);
$router->put('/activity', [TeamActivityController::class, 'store']);
// Team Domains.
$router->get('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'all']);
$router->post('/domains', [Controllers\Settings\Teams\TeamDomainsController::class, 'create']);
$router->delete('/domains/{teamDomain}', [Controllers\Settings\Teams\TeamDomainsController::class, 'destroy']);
});
});
});
});
// Integrations
$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRATIONS->value], static function (Router $router): void {
$router->post('/integrations', [IntegrationController::class, 'internal'])
->name('api.integrations.internal');
$router->put('/integrations', [IntegrationController::class, 'toggleStatus'])
->name('api.integrations.toggle_status');
$router->delete('/integrations/{provider}', [IntegrationController::class, 'delete'])
->name('api.integrations.delete');
});
$router->get('/integrations', [IntegrationController::class, 'all'])
->middleware('permission:' . PermissionEnum::READ_INTEGRATIONS->value)
->name('api.integrations.index');
// Slack API for getting slack channels list
$router->get('{notificationProvider}/channels', [Controllers\NotificationProviderController::class, 'channels']);
// Team actions. XXX: These all need moving out to their own controllers.
$router->group(['prefix' => 'organizations'], static function (Router $router): void {
$router->get('current', [TeamController::class, 'current']);
$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']], static function (Router $router): void {
$router->get('/', [TeamController::class, 'show']);
$router->get('/categories', [TeamController::class, 'categories']);
$router->get('/stages', [TeamController::class, 'stages']);
$router->get('/users', [OrganizationMembersController::class, 'index'])
->name('organization.members.index');
$router
->get('/users/download', [OrganizationMembersController::class, 'download'])
->middleware('permission:' . PermissionEnum::MANAGE_USERS->value)
->name('organization.members.download');
$router->get('/licensed-roles', [OrganizationLicensesController::class, 'index'])
->middleware('permission:' . PermissionEnum::MANAGE_BILLING->value)
->name('organization.licensed-roles.index');
$router->get('/invitations', [TeamController::class, 'invitations']);
$router->get('/groups', [TeamController::class, 'groups']);
$router->delete('/groups/{group}', [TeamController::class, 'deleteGroup'])
->middleware(['permission:' . PermissionEnum::DELETE_TEAM->value])
->name('api.groups.delete');
$router->get('/job-titles', [TeamController::class, 'jobTitles']);
$router->get('/slugs', [TeamController::class, 'slugs']);
$router->put('/api-token', [TeamController::class, 'generateApiToken'])
->middleware(['permission:' . PermissionEnum::MANAGE_ORGANIZATION_SETTINGS->value]);
$router->get('/key-moments', [MomentController::class, 'all']);
});
});
// Internal Kiosk. This whole section will be moved out to a separate file
$router
->prefix('kiosk')
->middleware('can:kiosk,' . User::class)
->group(static function (Router $router): void {
// Partner actions.
$router->get('/partners', [PartnersController::class, 'index']);
// User actions.
$router->post('/users/search', [SearchController::class, 'performBasicSearch']);
// Team actions.
$router->prefix('organizations')->group(static function (Router $router): void {
$router->get('/', [OrganizationsController::class, 'show']);
$router->put('/{team}', [OrganizationController::class, 'edit'])
->name('kiosk.organizations.edit');
$router->get('/{team}/users', [OrganizationMembersController::class, 'index'])
->name('kiosk.organization.members.index');
$router->get('onboardable', [OnboardController::class, 'available']);
$router->delete('/{team}', [OrganizationsController::class, 'deactivateAccounts']);
});
// Automated reports
// api/v1/kiosk/automated-reports
$router->prefix('automated-reports')->group(static function (Router $router): void {
$router->get('/form-data', [AutomatedReportsController::class, 'getCreateForm']);
$router->get('/form-data/{reportUuid}', [AutomatedReportsController::class, 'getEditForm']);
$router->post('/filters', [AutomatedReportsController::class, 'getFilters']);
$router->post('/', [AutomatedReportsController::class, 'create']);
$router->put('/{reportUuid}', [AutomatedReportsController::class, 'update']);
$router->patch('/{reportUuid}', [AutomatedReportsController::class, 'partialUpdate']);
$router->get('/', [AutomatedReportsController::class, 'list']);
$router->get('/{reportUuid}', [AutomatedReportsController::class, 'get']);
$router->delete('/{reportUuid}', [AutomatedReportsController::class, 'delete']);
$router->post('/activities-count', [AutomatedReportsController::class, 'getActivitiesCount']);
$router->get('/{reportUuid}/reports-count', [AutomatedReportsController::class, 'getReportsCount']);
});
// Activity actions.
$router->post('/activity/search', [SearchController::class, 'performActivitySearch']);
$router->prefix('activity/{activity}')->group(static function (Router $router): void {
$router->post('check-playable', [SearchController::class, 'performActivityCheckPlayable']);
$router->post('reset-crm-log', [SearchController::class, 'performResetCrmLogActivity']);
$router->get('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->post('diarize-via-transcript', [KioskActivityController::class, 'diarizeViaTranscript']);
$router->get('media-pipeline', [MediaPipelineController::class, 'getPipes']);
$router->post('media-pipeline', [MediaPipelineController::class, 'updatePipe']);
$router->post('language', [KioskActivityController::class, 'updateLanguage']);
$router->post('trim', [KioskActivityController::class, 'trimActivity']);
$router->get('troubleshoot', [KioskActivityController::class, 'troubleshootActivity']);
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49898
|
1772
|
26
|
2026-05-18T07:03:32.718899+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087812718_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
settings
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
13/15
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.14228724,"top":0.30327216,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.1549202,"top":0.30247405,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"settings","depth":4,"bounds":{"left":0.16589096,"top":0.30247405,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"settings","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.21875,"top":0.30247405,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.2287234,"top":0.30247405,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.23736702,"top":0.30247405,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.24601063,"top":0.30247405,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"on_screen":false,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"on_screen":false,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"13/15","depth":4,"bounds":{"left":0.25964096,"top":0.30167598,"width":0.025598405,"height":0.017557861},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.28523937,"top":0.3008779,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.29388297,"top":0.3008779,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.3025266,"top":0.3008779,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.31117022,"top":0.3008779,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.35904256,"top":0.3008779,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7739195260723331924
|
-8222369887460134966
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
settings
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
13/15
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
PhostormVIewINavicareCodeLaravelRefactorFV faVsco.js?° pipedrive-sdk-poc vProiect vC ActivityController.ongEditTeamModal vueconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.phpus features.jsFeaturesGroup.vueCoaturecl.ict vuec createrlaybookcreatedevent.ong©) salestorce/service.php>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• _ shared• • UsersettingsVseuuinas,vue> sharedSoftohoneCoachheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD [EMAIL]© eslint.config.cis( indovy htmll@ isconfia.ison@ package.isonM+ README.mdStats htmilusvite.confia.svarn.lockE varn-error.loa> Mlana> node_modules library rooM ohostan> M oublic>M resourcesv Mroutodhp ani nhnpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php© CreateSelfCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phplatedReportsCommand.ohdphp api_v2.php(C) RequestGenerateReport.Job.ohv© AutomatedReport.phpEditTeamModal.vue"C) CreateTeamPequest.ohr X ₽ Cc Wouter->group(['middleware' => ['auth:api']].aPoutes so'outer->qrouDoretix'="opportunztvopportunlrv,','middleware' => ['api']l.static function (Router Srouter): void {...?>'outer->qroup(l'middleware' =>auth:aoi", static function Router Srouter): vo, routen-saroub(['middLeware' →> ['api'11, static function (Router Srouter) : void 1 3outer->aetdtings', [MobileSettingsController::class, 'getAll']);outer->out duri'/mobile-settings', [MobileSettingsController::class, 'updateSett:->middleware(['auth:api', 'can:kiosk,' • User::class])Iand Winck mohile sottncundate!)•/ Ack liminnv on deal levellouter->get( uri:'deals/{opportunity}/ask-jiminny', [Controllers\API\DealLevelProm->middleware(['api'.lauth.andrl'api.deals.ask-jiminny'):outer->get( uri: 'get-access-token/{provider?}', [SocialController::class,getaceeremtetilelhat'ap1.get access token')->whereIn( parameters:'provider'. [SocialAccount::PROVIDER_HUBSP0T]):> 'outer->group(['middleware' => ['auth:api']l. static function (Router Srouter):'outer->poste uri: "deauthorize-zoom-aop'. Socralcontroller::class. 'deauthorizezcuter->out ( uri: conferences activitve/consent'conferences0otnoutcontroule->middlewarethrottle:conference-consent'10=custom.log4 SF [jiminny@localhost]A console [STAGING]A HS_local [jiminny@localhost]# console [PKob)© TestPipedriveOfficialSdkCommand.php X © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave verszons vz Ap1 Ueaurielasap1use Pipedrive\versions\v2 \Api\DealsApi:use Pipedrive versions vz Ap1 Personrlelasap1use Pipedrive versions vz contzquration.11 usage220240protected Ssignature = "11minnv:test-p1pedrive-official-sok teamidr'*26 @protected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults = 13lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = scokenmanager;public function handled: intf...}1 usageprivate function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...?1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: void$this->info( string: 'Test 2: Basic CRUD Operations'):tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilsenToken0•strlen SnawlhToken)Trial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Dart of Greate TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)• Add role options: Recorder, Recorder & Voice, Analyst• Ado owner role to torm state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT accented when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tteamModal/Ed1tTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role option#Daily - Platform • 2m left100% Lz• Mon 18 May 10:03:32AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothAsk anvthina (&4-L)SWF.16Cal a1109-21 (8 chars)Po 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49899
|
1771
|
58
|
2026-05-18T07:03:34.035871+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087814035_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comDaily - Platform • 2 m left100% <28• Mon 18 May 10:03:33Nikolay Yankov (Presenting)AA+M Inbox -KioskAutomuted KeoortsMobile ver son$1822 Practo57 ISRO-183 JminrE3 Promo3 Altent83 МCР-Cursohttps://app.jiminny.com/kiosk/onboard-lst0 Jоти43 354DatadogSetup Account|General|LOUTnlyinahothotcomIMPORT OPPORTUNITIES SYNC, PER:COCALINONE *• OfficeGoogleOTrHONSmicny VoiceTiers & Add-onsO Tlscs erolainedCaptureO SelectedSidekicko ScaleAsk Jiminny on Deal DealInsights DeslRisks Live CoschingCoxching Framework Topics in Deals• Activity Stats• Themes and Topics Cosching Focus O AI CRMFilling• Al Activity Type Al Call ScoringatownSelectAwlamceweoAsk Jiminny on Anything Ask Jiminny Reports* Add Ons|Key Words Scoring Jeminny Voice SCIM® Call Translation ©) Uistener RoleExplicit Recording Consent ©0 MOР TJ croec4 Preserve lop |2Disable cache Oftinel• Big request rowsE Overview10,000 m15.000 ms49.000 m0PayloadPreviewO orgarizations • CereralO Parponxat.О Патропка!....ReQest URRefecrer Policy@ metricslO tasponuat• Response headers (0)© metrics• Request Headers (12)SmineCalencC DeC uxAppocaborFetchpolr Doc• Group by trameO Screenshots30.000 m35.000 mнl42,000 ms020 A2 m250.000 mdhttps://wppjjminny.com/api/Vfsettings/organizationsNikolay YankovLukas Kovalik10:03 AM | Daily - Platform...• 17:08.Lộ3...
|
NULL
|
-972428837442552352
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comDaily - Platform • 2 m left100% <28• Mon 18 May 10:03:33Nikolay Yankov (Presenting)AA+M Inbox -KioskAutomuted KeoortsMobile ver son$1822 Practo57 ISRO-183 JminrE3 Promo3 Altent83 МCР-Cursohttps://app.jiminny.com/kiosk/onboard-lst0 Jоти43 354DatadogSetup Account|General|LOUTnlyinahothotcomIMPORT OPPORTUNITIES SYNC, PER:COCALINONE *• OfficeGoogleOTrHONSmicny VoiceTiers & Add-onsO Tlscs erolainedCaptureO SelectedSidekicko ScaleAsk Jiminny on Deal DealInsights DeslRisks Live CoschingCoxching Framework Topics in Deals• Activity Stats• Themes and Topics Cosching Focus O AI CRMFilling• Al Activity Type Al Call ScoringatownSelectAwlamceweoAsk Jiminny on Anything Ask Jiminny Reports* Add Ons|Key Words Scoring Jeminny Voice SCIM® Call Translation ©) Uistener RoleExplicit Recording Consent ©0 MOР TJ croec4 Preserve lop |2Disable cache Oftinel• Big request rowsE Overview10,000 m15.000 ms49.000 m0PayloadPreviewO orgarizations • CereralO Parponxat.О Патропка!....ReQest URRefecrer Policy@ metricslO tasponuat• Response headers (0)© metrics• Request Headers (12)SmineCalencC DeC uxAppocaborFetchpolr Doc• Group by trameO Screenshots30.000 m35.000 mнl42,000 ms020 A2 m250.000 mdhttps://wppjjminny.com/api/Vfsettings/organizationsNikolay YankovLukas Kovalik10:03 AM | Daily - Platform...• 17:08.Lộ3...
|
49897
|
NULL
|
NULL
|
NULL
|
|
49900
|
1772
|
27
|
2026-05-18T07:03:35.918086+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087815918_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
159902063232581519
|
-8204417045388611642
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
PhostormVIewINavicarecodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-pocProiect vC ActivityController.ongEditTeamModal vueconvertLeadActivitles.ongPurgelookupcache.onp© SyncToPlanhat.phpus features.jsFeaturesGroup.vueFeaturesList.vuec createrlaybookcreatedevent.ong©) salestorce/service.php>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• • shared• • UsersettingsVseuuinas,vuesharedSoftohoneCoachheloersM oluainsM routerM storelD utilsus main.jsIs types.d.tsis types.jsD [EMAIL]© eslint.config.cis( indovy htmllisconfig.ison@ package.isonM+ README.mdctate htmlis vite.confia.isvarn.lockE varn-error.loa> MlanaMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodohp ani.nhrpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php© CreateSelfCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phpatedReportsCommand.ohvphp api_v2.php(C) RequestGenerateReport.Job.ohvAutomatedReport.phpEditTeamModal.vuela) CreateTeamPeauest.nhdC) UserinvitationDTO.nhnl settingspretix = opportunityopporcunity,'middlewa42 45 X3 Y16 M V221static function (Router Srouter): void {.24 0'outer-›qroupu'middleware' ='aurhiaot", static tunction Crouter srouter: vi>'outer->qroupd'middleware' => 'ao1').static function Router Srouter: vo1d <.'outer->qet uri"mobile-se, LMobileSettingsController::class, 'getAll'J):'/mobile-settings, LMobileSettingscontroller::cLass, 'updatesett: ?1Usen::cilassiDoslundate!):Ask Jiminnv on deal levelouter->get( uri:"deals/Sonnortunitv-/ask-iiminnv'ControllersAPTDealLevelPromi->middleware(['api', 'auth:api'])'api.deals.ask-jiminny'):outer->get(uri: 'get-access-token/{provider?}', [SocialController::class, 'getAcc-sname( nameapl.get access token')->whereIn( parameters: 'provider', [SocialAccount::PROVIDER_HUBSPOT]):> 'outer->group(['middleware' => ['auth:api']], static function (Router Srouter):'outer->post ( uri: 'deauthorize-zoom-app', [SocialController: :class, 'deauthorizeZorndap1.deauchorize-zoom-apo.recall-al')"outer->outc uri:conferences/activity/consent'[Conferences0ptInOutControlle->m1ddLeware@l'throttle:conference-consent'10=custom.log4 SF [jiminny@localhost]A console [STAGING]A HS_local [jiminny@localhost]# console [PKob)© TestPipedriveOfficialSdkCommand.php X © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave verszons vz Ap1 Ueaurielasap1use Pipearive versions vz Ap1 Personrlelasapluse Pipedrive11 usageprotected Ssignature = "11minnv:test-p1pedrive-officral-sok teamid-'*protected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults = 111 usageprivate EncryptedTokenManager $tokenManager:public function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...?1 usageorivate function testBasicCrudOperations(Social Account SsocialAccount: voidSthis->infod strina: 'Test 2• Basic CRUD Oberations'):tny-Il Get the naw token from datahasestrlen SnawlhToken)Trial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Dart of Greate TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )I• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.oho• Ensure ouner role is NOT accented when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tteamModal/Ed1tTeamModal.vue/app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role option#Daily - Platform • 2 m left100% L2• Mon 18 May 10:03:35AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothCal aAsk anvthina (&4-L)SWF.161112-28 (8 chars)Po 4 spaces...
|
49898
|
NULL
|
NULL
|
NULL
|
|
49901
|
1771
|
59
|
2026-05-18T07:03:37.246724+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087817246_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3036442092684777152
|
-5740307667640416884
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
+ Project: faVsco.js, menu
pipedrive-sdk-poc, menu
+FirefoxDaily - Platform • 2 m left100% <2• Mon 18 May 10:03:36FileEditViewHistoryBookmarksProfilesToolsWindowHelp→meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)AA3$**18Edit57 ISRO-1X JminX Prоhttps://app.jiminny.com/kiosk/onboard-list- JоуC Projects|KioskSetup Account|General|UsersCOUTnAutomated Keoortsiobile ver saotCALINONE *• OfficeGoogleTiers & Add-onsCapture)Sidekicko ScaleE SSH•.G 08• Mon 18 May 10:033 Altent83 МСР-Curso0 MOР T• CalenDatadog• сrокс021 A2 m24 Preserve lociDisable cacheOftint• Big request rowsE Ovenview10,000 m15,000 mл49.000 mglDoc• Group by trameO Screenshots30.b00 m35.000 mнl42,000 mл41.000 m50.000 [EMAIL] OPPORTUNITIES SYNC, PER:COXOTRHONSminny VoiceO Tlccs crolainedO orgarizations(taled) net ERR_INTERNET_DISC..O 7arponxaf%2Fplactorm-productionBru6-019e39e1-Cg (tales) net .ERR_OAERNET_DISC.© П7атропкаГ%2Fplattorm-production&r=6-019e39e1-0.(talled) net.ERR_INTERNET_DISC...© metricsl(taled) net.ERR_INTERNET_DISC...© П7asponкa1%2Fpladorm-productionßr=6-019e39e1-b(talled) net.ERR,INTERNET_DISC.2 metrics(talled) net-ERR_INTERNET_DISC.© ifarponxal'%2Fplardorm-production&r=6-019+39e1-0(talled) net:ERR,INTERNET_DISC.TypexhrMntO-271P31N2 0.0 -m-lmo/a1 00-xhrtetchxhefetch10 mml152 mm153 mml1 malNikolay Yankovtrame-modern.9$ 0.0 -ioooec-1.min/a:1 00-150 mll© SelectedClectAsk Jiminny on Deal DealInsights DeslRisks live CoschingCoxching Framework Topics in Deals• Activity Stats• Themes and Topics Cosching Focus O AI CRMFilling• Al Activity Type ® Al Call ScoringatownSelectAwlamcaweoAsk Jiminny on Anything Ask Jiminny Reports* Add Ons|Key Words Scoring Jeminny Voice SCIM® Call Translation ©listener RoleD Explicit Recording Consent ©Lukas Kovalik10:03 AM | Daily - Platform• 17:11.Lộ3...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49902
|
1771
|
60
|
2026-05-18T07:03:42.588373+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087822588_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxDaily - Platform • 2 m left]100% L28• Mon +FirefoxDaily - Platform • 2 m left]100% L28• Mon 18 May 10:03:42FileEditViewHistoryBookmarks→Nikolay Yankov (Presenting)CrousEditProfies57 ISRO-1X JminX Prоhttps://app.jiminny.com/kiosk/onboard-lstC Projects|KioskSetup Account|General|COUTnAutomuted KeoortsMobile ver sonCALINONE *• Office |GoogleTiers & Add-onsCapture)Sidekicko ScaleProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comAA38• Mon 18 May 10:033 Altent83 МСР-Curso• мCPт• Home | Salestorce |Datadog• сrоkс@ ux021 A2 124 Preserve loci1 Disable cache Offline• Big request rowsE Ovenview10,000 m• Group by trameO Screenshots49.000 m0l30.b00 m35.000 mнl42,000 ms|50.000 [EMAIL] OPPORTUNITIES SYNC, PER:COXOTRHONSminny VoiceO crganizations© Ратропка!.О Патропка!....ceukи* (features: (*SIDEKIOK,SETTINGS*], ACCOVn,101 "[PHONE]-4205-a5S6-ed481ceB9123*, nanei "Coluens",-)O Tlers osolainsd@ metrics© ifaтрonка!...• features: (*SIDEKIOK,SETTENGS")© Selectedme perdodstier._10: *eST6048)-6478-4306-83e5-45009585063c*SelectAsk Jiminny on Deal DealInsights Deal Risks live CoschingCoxching Framework Topics in Deals Activity StatsThemes and Topics Cosching Focus O AJ CRM Filling• Al Activity Type Al Call ScoringatownSelectAwlamcaweoAd Jiminay on Anthine Ask Sminay Reoorts)18* Add OnsKey Words Scoring fimminny Voice O SCIM® O Call Translation ©) Uistener RoleD Explicit Recording Consent ©Nikolay YankovLukas Kovalik10:03 AM | Daily - Platform• 17:16Lộ3...
|
NULL
|
176446908707064597
|
NULL
|
click
|
ocr
|
NULL
|
+FirefoxDaily - Platform • 2 m left]100% L28• Mon +FirefoxDaily - Platform • 2 m left]100% L28• Mon 18 May 10:03:42FileEditViewHistoryBookmarks→Nikolay Yankov (Presenting)CrousEditProfies57 ISRO-1X JminX Prоhttps://app.jiminny.com/kiosk/onboard-lstC Projects|KioskSetup Account|General|COUTnAutomuted KeoortsMobile ver sonCALINONE *• Office |GoogleTiers & Add-onsCapture)Sidekicko ScaleProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comAA38• Mon 18 May 10:033 Altent83 МСР-Curso• мCPт• Home | Salestorce |Datadog• сrоkс@ ux021 A2 124 Preserve loci1 Disable cache Offline• Big request rowsE Ovenview10,000 m• Group by trameO Screenshots49.000 m0l30.b00 m35.000 mнl42,000 ms|50.000 [EMAIL] OPPORTUNITIES SYNC, PER:COXOTRHONSminny VoiceO crganizations© Ратропка!.О Патропка!....ceukи* (features: (*SIDEKIOK,SETTINGS*], ACCOVn,101 "[PHONE]-4205-a5S6-ed481ceB9123*, nanei "Coluens",-)O Tlers osolainsd@ metrics© ifaтрonка!...• features: (*SIDEKIOK,SETTENGS")© Selectedme perdodstier._10: *eST6048)-6478-4306-83e5-45009585063c*SelectAsk Jiminny on Deal DealInsights Deal Risks live CoschingCoxching Framework Topics in Deals Activity StatsThemes and Topics Cosching Focus O AJ CRM Filling• Al Activity Type Al Call ScoringatownSelectAwlamcaweoAd Jiminay on Anthine Ask Sminay Reoorts)18* Add OnsKey Words Scoring fimminny Voice O SCIM® O Call Translation ©) Uistener RoleD Explicit Recording Consent ©Nikolay YankovLukas Kovalik10:03 AM | Daily - Platform• 17:16Lộ3...
|
49901
|
NULL
|
NULL
|
NULL
|
|
49903
|
1772
|
28
|
2026-05-18T07:03:42.565356+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087822565_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormVIewINavicareCodeLaravelRefactorFV faVsco. PhostormVIewINavicareCodeLaravelRefactorFV faVsco.js?° pipedrive-sdk-poc vProiect vC ActivityController.ongEditTeamModal vueconverLeadAcuvites.ongPurgelookupcache.onp© SyncToPlanhat.phpus features.jsFeaturesGroup.vueCoaturecl.ict vuec createrlaybookcreatedevent.ong©) salestorce/service.php>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchV Kiosk.vue• - orgsettings• • shared• • UsersettingsV Settings.vue> sharedSoftohoneCoach> SvalconsdirectivesheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cisindoy htmisconfig.ison• package.isonM+ README.mdctate htmlis vite.confia.isvarn.lockE varn-error.loa> MlanaMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodohp ani.nhrpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php© CreateSelfCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phplatedReportsCommand.ohdphp api_v2.php(C) RequestGenerateReport.Job.ohv© AutomatedReport.phpEditTeamModal.vuela) CreateTeamPeauest.nhdC) UserinvitationDTO.nhnlorganizaCcWSrouter->group(L'middleware' => L'auth:api']], static •m42 A5 X3 X16 ^Srouter->put( uri: '/notifications/read-multiple'. [NotificationCosrouter->put ur: notitications/read-all',lnoweswlneeatLive teedSrouter->get(uri: 'Uive-feed'. Livereedcontroller::class)// LanguagesSrouter->get( uri: '/Languages', lLanguageController::class,List'D:The whole settinas section will he moved out in a senarate file336$router->group(['prefix' => '/settings'], static function (Router $router): vo:$router->group(['prefix' =>zations'1. staticfunction (Router SrouIntearationsSrouter->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRA]$router->get( uri: '/integrations', [IntegrationController::class, 'all']) /api/v1->middleware( middleware: 'permission:' . PermissionEnum::READ_INTEGRATIONS->->name(& name: lani inteanatione indey!)•// Slack API for getting slack channels listSrouter->get( uri:'{notificationProvider}/channels', [Controllers NotificationP// Team actions. XXX: These all need moving out to their own controllersSrouter-›aroup(['prefix' => 'organizations'], static function (Router Srouter))Internal Krosk. This whole section will be moved out to a separate file->orefix( uri: 'kaosk")Usen::class)->aroun(static function (Router Srouter): void {...}):outer->aroundi'middlewarel => "'auth.ani"l static function Router Srouter): vo=custom.logA SF [jiminny@localhost]A console [STAGING]A HS_local [jiminny@localhost]A console [PROD]TestPipedriveOfficialSdkCommand.php X © Kernel.phpTrial Owner Role Selecuse Jiminny models redmuse Pipearive verszons vz Ap1 AccIviclesApluse Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave versions vz Ap1 Leaurielasapluse Pipedrive\versions\v2 \Api\DealsApi:use Pipearive versions vz Ap1 Personrlelasapluse Pipedrive verszons vc Ap1 PersonsAD1.use Pipedrive versions vz contzquration.11 usage221protected Ssignature = "11m1nnv:test-p1pedrive-officral-sok teamidr'*orotected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults =1lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = Scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}l1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: voidSthis->infod strina: 'Test 2• Basic CRUD Oberations'):tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilserToken0•strlen SnawlhTokendNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Part of Create TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection field below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT acceoted when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tTeamModal/Ed1tTeamModal.vue/app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1ondT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role optionAsk anvthina (&4-L)SWF.16#Daily - Platform • 2 m left100% Lz• Mon 18 May 10:03:42U AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothCal aWN Windsurf Teamo220-17 (8 charc)Po 4 spaces...
|
NULL
|
4884028085849524831
|
NULL
|
click
|
ocr
|
NULL
|
PhostormVIewINavicareCodeLaravelRefactorFV faVsco. PhostormVIewINavicareCodeLaravelRefactorFV faVsco.js?° pipedrive-sdk-poc vProiect vC ActivityController.ongEditTeamModal vueconverLeadAcuvites.ongPurgelookupcache.onp© SyncToPlanhat.phpus features.jsFeaturesGroup.vueCoaturecl.ict vuec createrlaybookcreatedevent.ong©) salestorce/service.php>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchV Kiosk.vue• - orgsettings• • shared• • UsersettingsV Settings.vue> sharedSoftohoneCoach> SvalconsdirectivesheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cisindoy htmisconfig.ison• package.isonM+ README.mdctate htmlis vite.confia.isvarn.lockE varn-error.loa> MlanaMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodohp ani.nhrpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php© CreateSelfCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.phplatedReportsCommand.ohdphp api_v2.php(C) RequestGenerateReport.Job.ohv© AutomatedReport.phpEditTeamModal.vuela) CreateTeamPeauest.nhdC) UserinvitationDTO.nhnlorganizaCcWSrouter->group(L'middleware' => L'auth:api']], static •m42 A5 X3 X16 ^Srouter->put( uri: '/notifications/read-multiple'. [NotificationCosrouter->put ur: notitications/read-all',lnoweswlneeatLive teedSrouter->get(uri: 'Uive-feed'. Livereedcontroller::class)// LanguagesSrouter->get( uri: '/Languages', lLanguageController::class,List'D:The whole settinas section will he moved out in a senarate file336$router->group(['prefix' => '/settings'], static function (Router $router): vo:$router->group(['prefix' =>zations'1. staticfunction (Router SrouIntearationsSrouter->group(['middleware' => 'permission:' . PermissionEnum::MANAGE_INTEGRA]$router->get( uri: '/integrations', [IntegrationController::class, 'all']) /api/v1->middleware( middleware: 'permission:' . PermissionEnum::READ_INTEGRATIONS->->name(& name: lani inteanatione indey!)•// Slack API for getting slack channels listSrouter->get( uri:'{notificationProvider}/channels', [Controllers NotificationP// Team actions. XXX: These all need moving out to their own controllersSrouter-›aroup(['prefix' => 'organizations'], static function (Router Srouter))Internal Krosk. This whole section will be moved out to a separate file->orefix( uri: 'kaosk")Usen::class)->aroun(static function (Router Srouter): void {...}):outer->aroundi'middlewarel => "'auth.ani"l static function Router Srouter): vo=custom.logA SF [jiminny@localhost]A console [STAGING]A HS_local [jiminny@localhost]A console [PROD]TestPipedriveOfficialSdkCommand.php X © Kernel.phpTrial Owner Role Selecuse Jiminny models redmuse Pipearive verszons vz Ap1 AccIviclesApluse Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave versions vz Ap1 Leaurielasapluse Pipedrive\versions\v2 \Api\DealsApi:use Pipearive versions vz Ap1 Personrlelasapluse Pipedrive verszons vc Ap1 PersonsAD1.use Pipedrive versions vz contzquration.11 usage221protected Ssignature = "11m1nnv:test-p1pedrive-officral-sok teamidr'*orotected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults =1lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = Scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}l1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: voidSthis->infod strina: 'Test 2• Basic CRUD Oberations'):tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilserToken0•strlen SnawlhTokendNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Part of Create TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection field below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT acceoted when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tTeamModal/Ed1tTeamModal.vue/app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1ondT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role optionAsk anvthina (&4-L)SWF.16#Daily - Platform • 2 m left100% Lz• Mon 18 May 10:03:42U AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothCal aWN Windsurf Teamo220-17 (8 charc)Po 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49904
|
1771
|
61
|
2026-05-18T07:03:46.457883+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087826457_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform • 2 m leftmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com100% C8• Mon 18 May 10:03:46Nikolay Yankov (Presenting)AAFleEditJapiwi/settings/organizationdfiles to includeTies to excludeo expiorechtmi41 desl-exampie.json0*0990$@₽5Q 8• Mon 18May 10:03+ o eO MQФN20° 102944E XIPrsortn18a New upoate arasocontent"widthedevice wsdth, snitsal-scale-1.ovnbox-s1zing: border-box:padding: B:tont-tantlyz -apple-systen, @liniMacSystesroat, Segpe Ul, sans-serit.nd: Cetetsta;|Waeeaasheaderfberder-botton: 1px solid (reSeteb:pasding: 14px 24px:display: Tlex;auyPireoe contereeader h1 {Beot oiars 42p%color: B/311:fent-gize: 12px;GALensP-t0-)1-Lamy eel•tools-list-desige-2(ackevs-MacBook-Pro-)iaieny explerer N gat posh3. 1.0 квued2 (oeita b)packerevie : firen04 (8/8), COPpCATEd ME ° tocal °oe jects.-postesNikolay Yankoval- epioe+Lukas Kovalik10:03 AM | Daily - Platform...• 17:20....
|
NULL
|
-2796991749825972472
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpDaily - Platform • 2 m leftmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com100% C8• Mon 18 May 10:03:46Nikolay Yankov (Presenting)AAFleEditJapiwi/settings/organizationdfiles to includeTies to excludeo expiorechtmi41 desl-exampie.json0*0990$@₽5Q 8• Mon 18May 10:03+ o eO MQФN20° 102944E XIPrsortn18a New upoate arasocontent"widthedevice wsdth, snitsal-scale-1.ovnbox-s1zing: border-box:padding: B:tont-tantlyz -apple-systen, @liniMacSystesroat, Segpe Ul, sans-serit.nd: Cetetsta;|Waeeaasheaderfberder-botton: 1px solid (reSeteb:pasding: 14px 24px:display: Tlex;auyPireoe contereeader h1 {Beot oiars 42p%color: B/311:fent-gize: 12px;GALensP-t0-)1-Lamy eel•tools-list-desige-2(ackevs-MacBook-Pro-)iaieny explerer N gat posh3. 1.0 квued2 (oeita b)packerevie : firen04 (8/8), COPpCATEd ME ° tocal °oe jects.-postesNikolay Yankoval- epioe+Lukas Kovalik10:03 AM | Daily - Platform...• 17:20....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49905
|
1771
|
62
|
2026-05-18T07:03:50.628908+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087830628_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3740816030388009784
|
-8636489586330588030
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp, 0.Daily - Platform • 2 m leftmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com100% C8• Mon 18 May 10:03:50|=Nikolay Yankov (Presenting)AA3EditSelectionSANChlapi/Mf/settings/organizationsfiles to includefies to exclude5 results in 2 files - exclude settings and ignocerequestHandlers.js frent-endhucicompone./apwwsettings/organizations/.orgUuid/layouts/d# Dealinsights spec,js froet.-engpvrc/compon... g"lapilvt/settings/organizarions/*fayouts/deat-insi.*/aowvt/settings/organizaticns/*/ayouts/deal-insl.*/apifvi/settings/organizations/*/iayouts/deal-insi(1 tools-list.jsonO explorer.htmlX (1 deal-example.jsonU deal-insights-filters.json@*0940$@959 8 Mon 18Мay 10:03+ о •9 t ФШBevien Next FIoAo 2.° 201 29**Proo u18te New upoate ararao«neta nanew"vievport" content«widthedevice-width, initial-scale-1.0° />box-s1zing: border-box;padding: 0:font-fanity: -apple-systen, BlinkMacSystenfont, "Segoe UI", sans-serif;background: Crf8r9ta;Wwe Baa8sokr roog.DTborder-botton: 1px solid (reSe7eb:padding: 14px 24px;display: flex;SuyParess conter1оtDAC: 420ANWIR EPARASfent-size: 12px;Gtlens SonarQubecocP-To-1t-liny depterad = 3%- 9935-cP-100 15-Lst-Sesip-2Tankavs-MacBook-Pro-)jaieny explacer N git push3. 2.a 0кved2 (oeil o).postee-Mactook-Pro-Jininay explorer.&.ПNikolay YankovCursor TabLn 1, Col 1 Spaces: 2 UTF-8 LF 12 HTMLukas Kovalik10:03 AM | Daily - Platform• 17:24...
|
49904
|
NULL
|
NULL
|
NULL
|
|
49906
|
1771
|
63
|
2026-05-18T07:03:53.671245+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087833671_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3036442092684777152
|
-5740307667640416884
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
F Project: faVsco.js, menu
pipedrive-sdk-poc, menu
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)Ede0 +B QOWtEOhapiMsettings/organizationsfiles to includefles to exclude119 results in 56 files - exclude settings and ignore Iães aco dicabied (erable) - Open is/ap//wisettingt/oegecizysons/*/ayouts/dewivnsigntsV EdtTeanModatvon honeДодиkoнl,/nodaisiкamMoВIОRGФ:0ScallScoring-b.tent-andheciconsvownts/Seting4/0/gSeulog/A/Automratice/CalsodLal-autceationytemplates/#(hes.ret.S/id/fieldsi-actematlor/tomplates/3000C. New update waliscie+1.100/s-1s:250n /Working Theetсо ве туве плто тRetenmurwnineteetwtatncautte uioth tentthietuietinte Jiatery MC - Toels Explorer eittepasaing: ofost-tarilyt -apole-systes, BlinkacSystéerout, Seoe il, sass-serir)eackgrsuns: OPTsrSTs:color B/ILL/nesder {backgreund: Oertr)border-botton: 1px solid OhSelcbiрзвозлд: 34ак 24ркdisplay: flexiauoneacess ooterebeoser mttont-size: L5px;colors Bns!PertanhantLECLRIDecp-tos1s-LIst-des1go-2-Pro-)inimey explorer y node generate.isMacBook-Pro-Jintny explorer git push3. 10 кіnT11.43 MiB/S.MB 10-1- 17 -C81872 7 36= 3945 2C. 108 1s- L4t-t31gn-2MecBook-Pro-Jimirey explorer 5.Пl10:03 AM | Daily - PlatformDaily - Platform - 2 m left100% <8• Mon 18 May 10:03:53AAQ 8- Mon 18 May 10:03+ •eAo 28.° 201 29Nikolay YankovGat-Lukas Kovalik• 17:27....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49907
|
1771
|
64
|
2026-05-18T07:03:56.334408+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087836334_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organiza...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"organiza","depth":4,"on_screen":true,"value":"organiza","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
5071500552290652761
|
-8348254866154213426
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organiza
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)FleEdit0 €OstF6IapiMf/settings/organizationsfiles to includefles to exclude119 results in 56 files - exclude settings and ignore files are disabled (enable) - Open is/apwty)/settngs/omgarczabor.a.team.value.io//playbookswDealRisksModalvue from-endnecfcompohents/Settings/OrgSettings/Thanspww/Vsettings/orgsnizations/S/leam.value.lo/group/S(props.is/desiPiska/apivN/sottingsicrg anizanans/S/team.vatoe30//proup/S(args.jojfscope"pojwi/settings/orgacizationst.compacyid/themes/mooit$(this./companifid)/themesfimportconst eedcoint e Tapioа*ОRФФ:011 deal-example.json{1 deal-insights-tilters.jsonff tools-list.json17 tools-lstison (Working Tree)docs mop ) explorer ) 0 exploreehanoAnces«title- Jisjny MCP - Tools Explorer«/title>box-s1zing: border-box;padding: 0:body 4font-fanily? -apple-system, BlinkMacSystenFont,, "Segoe Ul", sans-serif;backgrouns: Detstste;color: B/113/nesder {border-botton: 1px solid ONSelcbiрзваіла: 34рк 24рк.display: flex;contersзар: 12рм:header Mi €font-size: 15pk;color: 8/111:header span (toat-gize: 12pa-tosts-11st-desigo-218"Owy00o4sir9edi New upoate draseMacBook-Pro-Jininny explorer git pushTc-reueTa, coneteto vith o locnl o es.Macbook-Pro-Jiminy, explorer. s.Пl10:03 AM | Daily - PlatformDaily - Platform • 2 m left100% <78• Mon 18 May 10:03:55An 3Q 8- Mon 18 May 10:03O t ФWAo 2.° 101 29Nikolay Yankov325h - eкpiorerLukas Kovalik• 17:30|...
|
49906
|
NULL
|
NULL
|
NULL
|
|
49908
|
1772
|
29
|
2026-05-18T07:03:56.335329+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087836335_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organiza...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.14228724,"top":0.30327216,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.1549202,"top":0.30247405,"width":0.00731383,"height":0.017557861},"on_screen":true,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"organiza","depth":4,"bounds":{"left":0.16589096,"top":0.30247405,"width":0.043882977,"height":0.015961692},"on_screen":true,"value":"organiza","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
5071500552290652761
|
-8348254866154213426
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
organiza
PhostormVIewINavicarecodeLaravelKeractorFV faVsco.js?° pipedrive-sdk-pocProiectC ActivityController.ongEditTeamModal vueconvertLeadActivitles.ongPurgeLookupcacne.gnp© SyncToPlanhat.phpus features.jsFeaturesGroup.vueFeaturesList.vuec createrlaybookcreatedevent.ong©) salestorce/service.php>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• _ shared• • UsersettingsVseuuinas,vue> sharedSoftohoneCoachdirectivesheloersM oluainsM routerIM storeD utilsus main.jsIs types.d.tsis types.jsD vitehrowcerclistre= env [EMAIL]© eslint.config.cis( indovy htmll@ isconfia.ison• package.isonM+ README.mdStats htmilis vite.confia.isvarn.lockE varn-error.loa> Mlana> E node_modules library rooM ohostan> M oublic>M resourcesv Mroutodohp ani nhrpho ani v2 nhopnp api.onoxc) IntearationApp/Service.php© CreateSelfCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpC) PlanhatActivityListener.phpAskAnythingPromptService.php(C)AutomatedReportsCommand.ohvphp api_v2.php(C) RequestGenerateReport.Job.ohvAutomatedReport.phpEditTeamModal.vue© CreateTeamRequest.phpC) UserinvitationDTO.nhnlorganizaCc WSrouter->group(L'middleware' => L'auth:api']], stat m01 42 45 У3 X16 ^notifications/read-multinlel (Motifiantiandsrouter->put ur: notitications/read-alt',0 9.0.class.Live teediSrouter->qet( uri: '/Live-feed'. [LiveFeedController::class. 'LiveFeedTtems'1):// LanguagesSrouter-›qet( uri: '/lanquages'. [LanquageController::class. 'list'l):The whole settinos section will he moved out in a senarate file336Scouter->around"orefix"'/settings'], static function (Router $router): vScouter->aroundr'orefix' => "/tions'] static function Router Srouter)-->middlewaredi'can:kjosk. * , Usen:•classi)l•/' OraanizationController:class. "store'])lzations stanpl).$router->group(['prefix' => '{team}', 'middleware' => ['teamMember']]}:br/1 Integrations$router->group(['middleware' => 'permission:' . PermissionEnum::MANAGE INTESrouter-›get( uri: "/integrations'. [IntegrationController::class. 'all']) lan->middleware( middleware: 'permission:' . PermissionEnum::READ_INTEGRATIONS>name nameapi.inteqrations.1ndex')I/ Slack APT for getting slack channels listIControllens|NotificationTeam actions. XXX: These all need movind out to their own controllens.Srouter->aroun(f'prefix' = 'ordizations'], static function (Router Srouter 124pho console nhnnole section will be moved out to a separate fileition rules in this file. Error details: Vite package is required for analysis and should be installed. (4 minutes ago)=custom.logA SF [jiminny@localhost]A console [STAGING]A HS_local [jiminny@localhost]A console [PROD]TestPipedriveOfficialSdkCommand.php X © Kernel.phpTrial Owner Role Selecuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave verszons vz Ap1 Ueaurielasap1use Pipedrive\versions\v2 \Api\DealsApi:use Pipedrive versions vz Ap1 Personrlelasap1use Pipedrive verszons Vz Ap1 Personsap1.use Pipedrive11 usage22124 O,protected Ssignature = "11minnv:test-p1pedrive-official-sok teamidr'*orotected Sdescrintion = 'Test official Pinedrive SDK (ninedrive/ninedrive) with exiorivate arrav Sresults =1lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent:: construct?).sthls->cokennanager = scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...}1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: voidSthis->infod strina: 'Test 2• Basic CRUD Oberations'):tny-Il Get the naw token from datahasestrlen SnawlhTokendNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderReplace Opportunity Sync Period locationCurrently at lines 71-84Dart of Greate TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT accented when editina (validation should reiect it)Key Files to Modify1. /tront-end/src/components/Settings/K1osk/modals/Ed1tteamModal/Ed1tTeamModal.vue/app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1onDT0.php/app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role optionAsk anvthina (&4-L)SWF.16#Daily - Platform • 2m left100% Lz• Mon 18 May 10:03:55U AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothCal aWN Windsurf Toams 220-88 UTF.8Po 4 spaces...
|
49903
|
NULL
|
NULL
|
NULL
|
|
49909
|
1771
|
65
|
2026-05-18T07:03:58.021690+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087838021_m1.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7266624862028544203
|
577591577001045378
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting)18EditD €SelectionGo8 Q/apiMf/settings/organizationsfiies to includefiles to excludenode_modules, coverage, *html, storage, *snap, storage/fogs, vendor119 results in 56 files - exclude settings and ignore files are disabled (enable) - Open inetor.oapw/v/Jsettings/orgarizabons/fteam.value.jo//playbooksV DeaiRisksModal.vue froet-end/yrc/components/Settiegs/OrgSettings/Tears"Tapiv//settings/organizations/3(beam.value.id)/group/S(props.id/deaiRisksV PermissionsModalvue frgne-end/ycicomoonents/Settinos/OroSettings/Tearm*/api/v1/settings/organizations/5(beam.value.ia)/group/S(args.id)/scopeconst endpoint = "/apilvisettings/organizations"D Oo ToeewcooWeettenWlooemocasa*Japi/v1/settings/organizations/.companyid/themes/import",/3(this.company.id)/themes,fmport"n dous Worrerorure coconst endpoint = "fapiviheyselnpncenonteemrevedowoy booetequestsHandiers.stm"[EMAIL]. trort-end.arc/componecis/eingushared*Iapi/v1/settings/orga)n aous Tront end srchVDes nsensseterrsirue ton endritvalue.id)/deal-insights""api/wN/settings/organizations/9(team.value.ic)/deal-insightsoleybookslree@ New update avalabieа*ОRGФ:0(1 deal-example.json(1 deal-insights-filters.jsonB0NAS"1OLN1) tools-listjson (Working Tree)OSLEGdocs mop ) explorer) 0 expionechomi)..cotehanreiecontent= widthadevice-width, initial-scale-1.e /«title-Jiajnny MCP - Tools Explorer‹/title›box-sizing: border-box;padding: e;font-fanily: -apple-systen, BlinkMacSystenfont,, "Segoe UT", sans-serif;backgreund: Cersrsta:color: mnls:header (OiCAtrOw DTTborder-botton: 1px solid reseteb;padding: 14px 24px;display: flex;auPatess cotereader Mi &font-size: 15pkgTont-wetoht: 7ecolor: 8/111:font-gize: 12pa0weouVonoutten-tosls-list-des ign-2Pro-Jiminy explorer s node generate.jstools.ndMacBook-Pro-Jininny explorer & git push|ieo copterro vit Tocal cojects.oeuce-Macbook-Pro-Jiminny explorer N 0/10:03 AM | Daily - PlatformDaily - Platform • 2 m left100% C8• Mon 18 May 10:03:57AA3Q 8• Mon 18 May 10:03O tФWAo 28.° 201 2944E xINikolay Yankovash - epioe + -Lukas Kovalik• 17:32|...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
49910
|
1772
|
30
|
2026-05-18T07:04:01.342518+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-18/1779 /Users/lukas/.screenpipe/data/data/2026-05-18/1779087841342_m2.jpg...
|
PhpStorm
|
faVsco.js – api.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"pipedrive-sdk-poc, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.05618351,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: pipedrive-sdk-poc","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3740816030388009784
|
-8636489586330588030
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
pipedrive-sdk-poc, menu
S Project: faVsco.js, menu
pipedrive-sdk-poc, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
PhostormNavicarecodeLaravelRefactorFV faVsco.js?° pipedrive-sdk-pocProiectC ActivityController.ongEditTeamModal.vueus features.jsconverLeadAcuvites.ongPurgelookupcache.onp© SyncToPlanhat.phpFeaturesGroup.vueFeaturesList.vuecreatePlaybookcreatedevent.ong©) salestorce/service.php>• OrganizationSearch> D SetupDemo> O shared> O UsersSearchy Kiosk.vue• - orgsettings• _ shared• • UsersettingsV Settings.vueshared> _ SoftohoneCoach> Svalconsb TeaminsiahtscomposablesdirectivesheloersM oluainsrouter1 storeD utilsus main.jsIs types.d.tsis types.jsD [EMAIL]© eslint.config.cis( indovy htmll#isconfia.ison• package.isonM+ README.mdctate htmlis vite.confia.isvarn.lock= varn-error.lo0> MlanaMnode modules librarv rooiM ohostan> M oublic>M resourcesv Mroutodohp ani nhrpho ani v2 nhopho console nhnpnp api.ono xc) IntearationApp/Service.php(C) CreateSeltCoachedEvent.phpC) CreateCommentedEvent.phoC) CreateSmsSentEvent.phpAskAnythingPromptService.php(C)AutomatedReportsRenositorv.oho(C)AutomatedReportsCommand.ohvphp api_v2.php(C) RequestGenerateReport.Job.ohoAutomatedReport.phpEditTeamModal.vueCreateTeamRequest.phpC) UserinvitationDTO.nhnlorganizaX P Cc W .*"Ừ :use Jiminny Http\Controllers \Kiosk \PartnersControllm02 A3 45 X3 X16 M Vuse Jiminny Http \Controllers \Kiosk\SearchController:use Jiminny\Http\Controllers\Kiosk\Teams\OnboardController; M €use Jiminny Http\Controllers \NotificationController:use Jiminny Http\Controllers\Settings\GroupController;use Jiminny Http\Controllers\Settings\JobTitleController:use Jiminny Http\Controllers\Settings\PlaybookCategoryController:use Jiminny Http\Controllers\Settings\PlaybookController:use Jiminny Http\Controllers\Settings\Teams\IntegrationController:use Jiminny Http\Controllers\Settings\Teams\InvitationController:use Jiminny Http \Controllers\Settings\Teams \TeamActivityController:use Jiminny Http \Controllers\Settings\Teams\TeamCoachingSettingsController:use Jiminny Http\Controllers\Settings\Teams\TeamConferenceSettingsController:use Jiminny\Http\Controllers\Settings\Teams\TeamController as OrganizationControluse Jiminny Http\Controllers|Settings\Teams\TeamDeaLInsightsSettingController:use Jininny nuco concroulers seccinos leans leanmenbercontrotleruse Jiminny Http Controllers Settinas Teams TeamPhotocontroller,use Jiminny Http\Controllers|Settings\Teams\TeamRecordingSettingsController:use Jiminny Http Controllers Settinos Teams Teamsettingscontrollerause Jiminny Http\Controllers|Settings\Teams\TeamSoftphoneSettingsController:use Jaminny Htto controllers Teamsetuocontrouleruse Jaminny models:use Jiminny Models Plavbacktheme:use Jiminny Models SocialAccount:use Jiminny Models User:use Jiminny Models\Vocabulary:use Jiminny Revositories:use Jiminnv Men Servens HhiminnvServen:use Laravel\Mcp\Facades\Mcp;/mcp.audit MUST stay outermost so its Snext($request) call wraps the auth// and tier guards. Otherwise 401 (auth:api) and 403 (mcp.tier) rejections// short-circuit before McpAuditMiddleware::handle ever runs and we lose// audit rows for exactly the requests the security log most needs to capture.// McpAuditMiddleware::writeAuditRow null-checks Srequest->user, so writing// pre-auth is safe.Mcp: :web( route: '/mcp'. serverClass: JiminnyServer::class)n rulec in this file Frror detailc. Vite nackade ic reauired for analvcis and chould he inctalled (4 minutes aaol)E117=119=custom.log4 SF [jiminny@localhost]& console (STAGINGIA HS_local [jiminny@localhost]# console [PKob)© TestPipedriveOfficialSdkCommand.php X © Kernel.phpuse Jiminny models redmuse Pipedrive verszons vz Ap1 ACCIviclesAp1use Pipedrive\versions\v2\Api ActivityFieldsApi:use Pipedrave verszons vz Ap1 Ueaurielasap1use Pipedrive\versions\v2 \Api\DealsApi:use Pipearive versions vz Ap1 Personrlelasapluse Pipedrive versions vz contzquration.11 usage22 024 6tprotected Ssignature = "11m1nnv:test-p1pedrive-officral-sok teamid-'*26 0protected Sdescnintion = 'Test official Pinednive SDK (oinednive/ninednive) with exiorivate arrav Sresults =1lusageprivate EncryptedTokenManager $tokenManager:no usagespublic function __construct(EncryptedTokenManager $tokenManager)parent::_constructo:sthls->cokennanager = scokenmanager;public function handled: intf...}private function runTests(int SteamId): void{...}1 usageprivate function test0AuthInitialization(SocialAccount SsocialAccount): voidf...?1 usageorivate function testBasicCrudOperations(SocialAccount SsocialAccount: void$this->info( string: 'Test 2: Basic CRUD Operations'):tny-Il Get the naw token from datahaseSnawhhToken = ScocialAccount->ae+ProviderilsenToken0•strlen SnawlhToken)Trial Owner Role SelecNot Shown when editingModal used for botn create/editOwner gets selected role + AdminAlways gets Admin + RecorderKeplace Uppontuniy sync Perlod locatlolCurrently at lines 71-84Part of Create TeamHandled in SditTeamModalImplementation PlanFrontend Changes1. EditTeamModal.vue• Add role selection tield below Owner email (after line 39• Oniv show when creatina team ( Iflaas. teamGreated )• Move Opportunity Sync Period field to 3rd row, 1st column (after CRM field)Add role options: Recorder, Recorder & Voice, Analyst• Add owner role to form state1. CreateTeamRequest.oho• Add validation rule for ouner role field• Allowed values: recorder, recorder and voice, analyst• Onlv required when creatina (not editina)2. UserinvitationDTO::forOwner()• Accept owner_role parameter from request• Map role name to role IDAlways add ROLE_ADMIN to the role IDs (as per requirement: "selected role + Admin permissions")• Replace hardcoded ROLE RECORDER with selected role3. EditTeamRequest.php• Ensure ouner role is NOT accented when editina (validation should reiect it)Key Files to Modify1. /front-end/src/components/Settings/Kiosk/modals/EditTeamModal/EditTeamModal.vue2. /app/Http/Requests/Settings/Teams/CreateTeamRequest.php3./app/DT0/Inv1tation/UserInv1tat1ondT0.php4. /app/Http/Requests/Settings/Teams/EditTeamRequest.phpTectina Considerationc• Test role assignment for all 3 options (Recorder, Recorder & Voice, Analyst)Verity Admin permission is alwavs addedEnsure field is hidden when editing existing team• Verify Opportunity Sync Period moves to correct location• Test owner sign-in flow with each role optionAsk anvthina (&4-L)SWF.16# Daily - Platform • 1 m left100% Lz• Mon 18 May 10:04:00U AskJiminnyReportActivityServiceTest v+0..Condition: v-ir="!Tlags. teamcreated"Modify UserInvitationDT0:: for0wner() to use selected role + AdminMove Opportunity Sync Period, add role field in its placesame component handles bothCal aWN Windsurf Teams00-62UTF.8io 4 spaces...
|
NULL
|
NULL
|
NULL
|
NULL
|