<?php

namespace Kylin\Activity\Facades;

use Illuminate\Support\Facades\Facade;
use Kylin\Activity\PendingActivityLog;

/**
 * @method static \Kylin\Activity\ActivityLogger setLogStatus(\Kylin\Activity\ActivityLogStatus $logStatus)
 * @method static \Kylin\Activity\ActivityLogger performedOn(\Illuminate\Database\Eloquent\Model $model)
 * @method static \Kylin\Activity\ActivityLogger on(\Illuminate\Database\Eloquent\Model $model)
 * @method static \Kylin\Activity\ActivityLogger causedBy(\Illuminate\Database\Eloquent\Model|string|int|null $modelOrId)
 * @method static \Kylin\Activity\ActivityLogger by(\Illuminate\Database\Eloquent\Model|string|int|null $modelOrId)
 * @method static \Kylin\Activity\ActivityLogger causedByAnonymous()
 * @method static \Kylin\Activity\ActivityLogger byAnonymous()
 * @method static \Kylin\Activity\ActivityLogger event(string $event)
 * @method static \Kylin\Activity\ActivityLogger setEvent(string $event)
 * @method static \Kylin\Activity\ActivityLogger withProperties(mixed $properties)
 * @method static \Kylin\Activity\ActivityLogger withProperty(string $key, mixed $value)
 * @method static \Kylin\Activity\ActivityLogger createdAt(\DateTimeInterface $dateTime)
 * @method static \Kylin\Activity\ActivityLogger useLog(string|null $logName)
 * @method static \Kylin\Activity\ActivityLogger inLog(string|null $logName)
 * @method static \Kylin\Activity\ActivityLogger tap(callable $callback, string|null $eventName = null)
 * @method static \Kylin\Activity\ActivityLogger enableLogging()
 * @method static \Kylin\Activity\ActivityLogger disableLogging()
 * @method static \Kylin\Activity\Contracts\Activity|null log(string $description)
 * @method static mixed withoutLogs(\Closure $callback)
 * @method static \Kylin\Activity\ActivityLogger|mixed when(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)
 * @method static \Kylin\Activity\ActivityLogger|mixed unless(\Closure|mixed|null $value = null, callable|null $callback = null, callable|null $default = null)
 * @method static void macro(string $name, object|callable $macro)
 * @method static void mixin(object $mixin, bool $replace = true)
 * @method static bool hasMacro(string $name)
 * @method static void flushMacros()
 *
 * @see \Kylin\Activity\PendingActivityLog
 */
class Activity extends Facade
{
    protected static $cached = false;

    protected static function getFacadeAccessor(): string
    {
        return PendingActivityLog::class;
    }
}
