<?php //7a35f93800c5d461d7e01d654f07065b8d68051ead1becbc1b1416c62de0e3c2
/** @noinspection all */

namespace LaravelIdea\Helper {

    use Illuminate\Contracts\Database\Query\Expression;
    use Illuminate\Contracts\Support\Arrayable;
    use Illuminate\Database\ConnectionInterface;
    use Illuminate\Database\Eloquent\Builder;
    use Illuminate\Database\Query\Builder as QueryBuilder;
    use Illuminate\Pagination\LengthAwarePaginator;
    use Illuminate\Pagination\Paginator;
    use Illuminate\Support\Collection;
    use Kalnoy\Nestedset\Collection as NestedsetCollection;
    use Kalnoy\Nestedset\QueryBuilder as NestedsetQueryBuilder;
    
    /**
     * @method $this useIndex(string $index)
     * @method $this whereJsonContainsKey(string $column, string $boolean = 'and', bool $not = false)
     * @method $this whereTodayOrAfter(array|string $columns)
     * @method $this whereIn(Expression|string $column, $values, string $boolean = 'and', bool $not = false)
     * @method $this whereVectorDistanceLessThan(Expression|string $column, float[]|Arrayable|Collection|string $vector, float $maxDistance, string $boolean = 'and')
     * @method $this orWhereNotIn(Expression|string $column, $values)
     * @method $this selectRaw(string $expression, array $bindings = [])
     * @method $this havingNotNull(array|string $columns, string $boolean = 'and')
     * @method int insertOrIgnore(array $values)
     * @method $this whereBeforeToday(array|string $columns)
     * @method $this orHavingNull(string $column)
     * @method $this selectVectorDistance(Expression|string $column, float[]|Arrayable|Collection|string $vector, null|string $as = null)
     * @method $this unionAll(\Closure|Builder|QueryBuilder $query)
     * @method $this orWhereNull(array|Expression|string $column)
     * @method $this joinWhere(Expression|string $table, \Closure|Expression|string $first, string $operator, Expression|string $second, string $type = 'inner')
     * @method $this orWhereJsonContains(string $column, $value)
     * @method $this whereValueBetween($value, array $columns, string $boolean = 'and', bool $not = false)
     * @method $this orderBy(\Closure|Expression|Builder|QueryBuilder|string $column, string $direction = 'asc')
     * @method Expression raw($value)
     * @method $this each(callable $callback, int $count = 1000)
     * @method $this setBindings(array $bindings, string $type = 'where')
     * @method $this dumpRawSql()
     * @method $this orWhereJsonLength(string $column, $operator, $value = null)
     * @method $this whereRowValues(array $columns, string $operator, array $values, string $boolean = 'and')
     * @method $this whereAfterToday(array|string $columns)
     * @method $this orWhereNotExists(\Closure|Builder|QueryBuilder $callback)
     * @method $this orWhereIntegerInRaw(string $column, array|Arrayable $values)
     * @method $this orWhereLike(Expression|string $column, string $value, bool $caseSensitive = false)
     * @method $this crossJoin(Expression|string $table, \Closure|Expression|null|string $first = null, null|string $operator = null, Expression|null|string $second = null)
     * @method $this newQuery()
     * @method $this rightJoinSub(\Closure|Builder|QueryBuilder|string $query, string $as, \Closure|Expression|string $first, null|string $operator = null, Expression|null|string $second = null)
     * @method mixed average(Expression|string $column)
     * @method $this orWhereNowOrPast(array|string $columns)
     * @method $this whereFullText(string|string[] $columns, string $value, array $options = [], string $boolean = 'and')
     * @method $this existsOr(\Closure $callback)
     * @method $this orWhereNowOrFuture(array|string $columns)
     * @method int|mixed sum(Expression|string $column)
     * @method $this havingRaw(string $sql, array $bindings = [], string $boolean = 'and')
     * @method $this chunkMap(callable $callback, int $count = 1000)
     * @method $this getRawBindings()
     * @method $this orWhereColumn(array|Expression|string $first, null|string $operator = null, null|string $second = null)
     * @method mixed min(Expression|string $column)
     * @method $this orWhereNone(\Closure[]|Expression[]|string[] $columns, $operator = null, $value = null)
     * @method $this forceIndex(string $index)
     * @method $this whereNotIn(Expression|string $column, $values, string $boolean = 'and')
     * @method $this whereTime(Expression|string $column, \DateTimeInterface|null|string $operator, \DateTimeInterface|null|string $value = null, string $boolean = 'and')
     * @method $this lazyByIdDesc(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method int insertUsing(array $columns, \Closure|Builder|QueryBuilder|string $query)
     * @method $this lazyById(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method $this rightJoinWhere(Expression|string $table, \Closure|Expression|string $first, string $operator, Expression|string $second)
     * @method $this orWhereAll(\Closure[]|Expression[]|string[] $columns, $operator = null, $value = null)
     * @method $this groupBy(...$groups)
     * @method $this union(\Closure|Builder|QueryBuilder $query, bool $all = false)
     * @method $this orWhereDay(Expression|string $column, \DateTimeInterface|int|null|string $operator, \DateTimeInterface|int|null|string $value = null)
     * @method $this orWhereFullText(string|string[] $columns, string $value, array $options = [])
     * @method $this joinSub(\Closure|Builder|QueryBuilder|string $query, string $as, \Closure|Expression|string $first, null|string $operator = null, Expression|null|string $second = null, string $type = 'inner', bool $where = false)
     * @method $this selectSub(\Closure|Builder|QueryBuilder|string $query, string $as)
     * @method $this ignoreIndex(string $index)
     * @method never dd()
     * @method $this whereNull(array|Expression|string $columns, string $boolean = 'and', bool $not = false)
     * @method $this prepareValueAndOperator(string $value, string $operator, bool $useDefault = false)
     * @method $this whereIntegerNotInRaw(string $column, array|Arrayable $values, string $boolean = 'and')
     * @method $this orWhereRaw(string $sql, $bindings = [])
     * @method $this whereNotLike(Expression|string $column, string $value, bool $caseSensitive = false, string $boolean = 'and')
     * @method $this orderedChunkById(int $count, callable $callback, null|string $column = null, null|string $alias = null, bool $descending = false)
     * @method $this whereLike(Expression|string $column, string $value, bool $caseSensitive = false, string $boolean = 'and', bool $not = false)
     * @method $this whereJsonContains(string $column, $value, string $boolean = 'and', bool $not = false)
     * @method $this orWhereBetweenColumns(Expression|string $column, array $values)
     * @method $this mergeWheres(array $wheres, array $bindings)
     * @method $this sharedLock()
     * @method $this applyBeforeQueryCallbacks()
     * @method $this orderByRaw(string $sql, array $bindings = [])
     * @method bool doesntExist()
     * @method $this addNestedHavingQuery(QueryBuilder $query, string $boolean = 'and')
     * @method $this orWhereMonth(Expression|string $column, \DateTimeInterface|int|null|string $operator, \DateTimeInterface|int|null|string $value = null)
     * @method $this whereNotNull(array|Expression|string $columns, string $boolean = 'and')
     * @method int count(Expression|string $columns = '*')
     * @method $this orWhereNotBetween(Expression|Builder|QueryBuilder|string $column, iterable $values)
     * @method $this fromRaw(string $expression, $bindings = [])
     * @method $this mixin(object $mixin, bool $replace = true)
     * @method $this take(int $value)
     * @method $this whereVectorSimilarTo(Expression|string $column, float[]|Arrayable|Collection|string $vector, float $minSimilarity = 0.6, bool $order = true)
     * @method $this orWhereNotBetweenColumns(Expression|string $column, array $values)
     * @method $this updateOrInsert(array $attributes, array|callable $values = [])
     * @method $this leftJoinLateral(\Closure|Builder|QueryBuilder|string $query, string $as)
     * @method $this havingNull(array|string $columns, string $boolean = 'and', bool $not = false)
     * @method $this flushMacros()
     * @method $this orWherePast(array|string $columns)
     * @method $this havingNested(\Closure $callback, string $boolean = 'and')
     * @method $this cloneWithout(array $properties)
     * @method $this whereBetweenColumns(Expression|string $column, array $values, string $boolean = 'and', bool $not = false)
     * @method $this fromSub(\Closure|Builder|QueryBuilder|string $query, string $as)
     * @method $this orWhereJsonContainsKey(string $column)
     * @method $this whereJsonDoesntOverlap(string $column, $value, string $boolean = 'and')
     * @method $this cleanBindings(array $bindings)
     * @method $this timeout(int|null $seconds)
     * @method $this orWhereDate(Expression|string $column, \DateTimeInterface|null|string $operator, \DateTimeInterface|null|string $value = null)
     * @method mixed avg(Expression|string $column)
     * @method $this addBinding($value, string $type = 'where')
     * @method $this getGrammar()
     * @method $this lockForUpdate()
     * @method $this eachById(callable $callback, int $count = 1000, null|string $column = null, null|string $alias = null)
     * @method $this orWhereAny(\Closure[]|Expression[]|string[] $columns, $operator = null, $value = null)
     * @method $this ddRawSql()
     * @method $this cloneWithoutBindings(array $except)
     * @method $this orHavingRaw(string $sql, array $bindings = [])
     * @method $this whereJsonDoesntContainKey(string $column, string $boolean = 'and')
     * @method $this orderByVectorDistance(Expression|string $column, float[]|Arrayable|Collection $vector)
     * @method $this castBinding($value)
     * @method $this whereNone(\Closure[]|Expression[]|string[] $columns, $operator = null, $value = null, string $boolean = 'and')
     * @method $this forPageBeforeId(int $perPage = 15, int|null $lastId = 0, string $column = 'id')
     * @method $this getColumns()
     * @method $this orWhereBetween(Expression|Builder|QueryBuilder|string $column, iterable $values)
     * @method $this explain()
     * @method $this select($columns = ['*'], ...$arguments)
     * @method $this whereJsonOverlaps(string $column, $value, string $boolean = 'and', bool $not = false)
     * @method $this addSelect($column, ...$arguments)
     * @method $this orWhereExists(\Closure|Builder|QueryBuilder $callback, bool $not = false)
     * @method $this whereJsonLength(string $column, $operator, $value = null, string $boolean = 'and')
     * @method $this toRawSql()
     * @method $this beforeQuery(callable $callback)
     * @method $this wherePast(array|string $columns)
     * @method $this truncate()
     * @method $this orWhereBeforeToday(array|string $columns)
     * @method $this lock(bool|string $value = true)
     * @method $this orWhereAfterToday(array|string $columns)
     * @method $this join(Expression|string $table, \Closure|Expression|string $first, null|string $operator = null, Expression|null|string $second = null, string $type = 'inner', bool $where = false)
     * @method $this orWhereValueNotBetween($value, array $columns)
     * @method $this whereMonth(Expression|string $column, \DateTimeInterface|int|null|string $operator, \DateTimeInterface|int|null|string $value = null, string $boolean = 'and')
     * @method $this having(\Closure|Expression|string $column, \DateTimeInterface|float|int|null|string $operator = null, \DateTimeInterface|float|Expression|int|null|string $value = null, string $boolean = 'and')
     * @method $this whereNested(\Closure $callback, string $boolean = 'and')
     * @method $this orWhereRowValues(array $columns, string $operator, array $values)
     * @method $this useWritePdo()
     * @method $this orWhereIn(Expression|string $column, $values)
     * @method $this selectExpression(Expression $expression, string $as)
     * @method $this orderByDesc(\Closure|Expression|Builder|QueryBuilder|string $column)
     * @method $this orWhereNotNull(Expression|string $column)
     * @method $this whereTodayOrBefore(array|string $columns)
     * @method $this getProcessor()
     * @method $this lazy(int $chunkSize = 1000)
     * @method $this orWhereFuture(array|string $columns)
     * @method $this orWhereJsonDoesntContainKey(string $column)
     * @method $this skip(int $value)
     * @method $this leftJoinWhere(Expression|string $table, \Closure|Expression|string $first, string $operator, Expression|null|string $second)
     * @method $this doesntExistOr(\Closure $callback)
     * @method $this orHavingBetween(string $column, iterable $values)
     * @method $this orWhereTodayOrBefore(array|string $columns)
     * @method $this whereNotExists(\Closure|Builder|QueryBuilder $callback, string $boolean = 'and')
     * @method $this whereIntegerInRaw(string $column, array|Arrayable $values, string $boolean = 'and', bool $not = false)
     * @method $this whereValueNotBetween($value, array $columns, string $boolean = 'and')
     * @method $this whereDay(Expression|string $column, \DateTimeInterface|int|null|string $operator, \DateTimeInterface|int|null|string $value = null, string $boolean = 'and')
     * @method $this whereAll(\Closure[]|Expression[]|string[] $columns, $operator = null, $value = null, string $boolean = 'and')
     * @method $this whereNowOrFuture(array|string $columns)
     * @method $this forNestedWhere()
     * @method int insertOrIgnoreUsing(array $columns, \Closure|Builder|QueryBuilder|string $query)
     * @method mixed max(Expression|string $column)
     * @method $this whereExists(\Closure|Builder|QueryBuilder $callback, string $boolean = 'and', bool $not = false)
     * @method $this inRandomOrder(int|string $seed = '')
     * @method $this havingBetween(string $column, iterable $values, string $boolean = 'and', bool $not = false)
     * @method $this orWhereJsonDoesntOverlap(string $column, $value)
     * @method $this orHavingNotBetween(string $column, iterable $values)
     * @method $this orWhereYear(Expression|string $column, \DateTimeInterface|int|null|string $operator, \DateTimeInterface|int|null|string $value = null)
     * @method $this chunkById(int $count, callable $callback, null|string $column = null, null|string $alias = null)
     * @method $this whereDate(Expression|string $column, \DateTimeInterface|null|string $operator, \DateTimeInterface|null|string $value = null, string $boolean = 'and')
     * @method $this decrementEach(array $columns, array $extra = [])
     * @method $this whereJsonDoesntContain(string $column, $value, string $boolean = 'and')
     * @method $this rawValue(string $expression, array $bindings = [])
     * @method $this forPageAfterId(int $perPage = 15, int|null $lastId = 0, string $column = 'id')
     * @method $this forPage(int $page, int $perPage = 15)
     * @method bool exists()
     * @method $this macroCall(string $method, array $parameters)
     * @method mixed|null first(array|string $columns = ['*'])
     * @method $this whereColumn(array|Expression|string $first, null|string $operator = null, null|string $second = null, null|string $boolean = 'and')
     * @method $this numericAggregate(string $function, array $columns = ['*'])
     * @method $this whereNotBetween(Expression|Builder|QueryBuilder|string $column, iterable $values, string $boolean = 'and')
     * @method ConnectionInterface getConnection()
     * @method $this whereToday(array|string $columns, string $boolean = 'and')
     * @method $this mergeBindings(QueryBuilder $query)
     * @method $this reorderDesc(\Closure|Expression|QueryBuilder|null|string $column)
     * @method $this orWhereJsonDoesntContain(string $column, $value)
     * @method $this leftJoinSub(\Closure|Builder|QueryBuilder|string $query, string $as, \Closure|Expression|string $first, null|string $operator = null, Expression|null|string $second = null)
     * @method $this orWhereValueBetween($value, array $columns)
     * @method $this updateFrom(array $values)
     * @method $this orWhereVectorDistanceLessThan(Expression|string $column, float[]|Arrayable|Collection|string $vector, float $maxDistance)
     * @method $this crossJoinSub(\Closure|Builder|QueryBuilder|string $query, string $as)
     * @method $this limit(int $value)
     * @method $this from(\Closure|Expression|Builder|QueryBuilder|string $table, null|string $as = null)
     * @method $this pipe(callable $callback)
     * @method $this whereNotBetweenColumns(Expression|string $column, array $values, string $boolean = 'and')
     * @method int insertGetId(array $values, null|string $sequence = null)
     * @method $this whereBetween(Expression|Builder|QueryBuilder|string $column, iterable $values, string $boolean = 'and', bool $not = false)
     * @method $this whereFuture(array|string $columns)
     * @method $this tap(callable $callback)
     * @method $this offset(int $value)
     * @method $this whereAny(\Closure[]|Expression[]|string[] $columns, $operator = null, $value = null, string $boolean = 'and')
     * @method $this havingNotBetween(string $column, iterable $values, string $boolean = 'and')
     * @method $this orWhereNotLike(Expression|string $column, string $value, bool $caseSensitive = false)
     * @method $this addNestedWhereQuery(QueryBuilder $query, string $boolean = 'and')
     * @method $this groupLimit(int $value, string $column)
     * @method $this orWhereToday(array|string $columns)
     * @method $this incrementEach(array $columns, array $extra = [])
     * @method $this rightJoin(Expression|string $table, \Closure|string $first, null|string $operator = null, Expression|null|string $second = null)
     * @method $this leftJoin(Expression|string $table, \Closure|Expression|string $first, null|string $operator = null, Expression|null|string $second = null)
     * @method bool insert(array $values)
     * @method $this distinct(...$arguments)
     * @method $this chunk(int $count, callable $callback)
     * @method $this reorder(\Closure|Expression|QueryBuilder|null|string $column = null, string $direction = 'asc')
     * @method $this whereYear(Expression|string $column, \DateTimeInterface|int|null|string $operator, \DateTimeInterface|int|null|string $value = null, string $boolean = 'and')
     * @method $this getCountForPagination(Expression[]|string[] $columns = ['*'])
     * @method $this groupByRaw(string $sql, array $bindings = [])
     * @method $this aggregate(string $function, array $columns = ['*'])
     * @method $this orWhereIntegerNotInRaw(string $column, array|Arrayable $values)
     * @method $this chunkByIdDesc(int $count, callable $callback, null|string $column = null, null|string $alias = null)
     * @method $this joinLateral(\Closure|Builder|QueryBuilder|string $query, string $as, string $type = 'inner')
     * @method string implode(string $column, string $glue = '')
     * @method QueryBuilder dump(...$args)
     * @method $this addWhereExistsQuery(QueryBuilder $query, string $boolean = 'and', bool $not = false)
     * @method $this macro(string $name, callable|object $macro)
     * @method $this whereRaw(Expression|string $sql, $bindings = [], string $boolean = 'and')
     * @method string toSql()
     * @method $this orHaving(\Closure|Expression|string $column, \DateTimeInterface|float|int|null|string $operator = null, \DateTimeInterface|float|Expression|int|null|string $value = null)
     * @method $this whereNowOrPast(array|string $columns)
     * @method $this orWhereJsonOverlaps(string $column, $value)
     * @method mixed[] getBindings()
     * @method $this orWhereTodayOrAfter(array|string $columns)
     * @method $this orWhereTime(Expression|string $column, \DateTimeInterface|null|string $operator, \DateTimeInterface|null|string $value = null)
     * @method $this orHavingNotNull(string $column)
     * @method $this dynamicWhere(string $method, array $parameters)
     */
    class _BaseBuilder extends Builder {}
    
    /**
     * @method \Illuminate\Support\Collection mapWithKeys(callable $callback)
     * @method \Illuminate\Support\Collection partition($key, $operator = null, $value = null)
     * @method \Illuminate\Support\Collection mapInto(string $class)
     * @method \Illuminate\Support\Collection mapToGroups(callable $callback)
     * @method \Illuminate\Support\Collection groupBy(array|callable|string $groupBy, bool $preserveKeys = false)
     * @method \Illuminate\Support\Collection pluck($value, $key = null)
     * @method \Illuminate\Support\Collection pad($size, $value)
     * @method \Illuminate\Support\Collection countBy($countBy = null)
     * @method \Illuminate\Support\Collection flatMap(callable $callback)
     * @method \Illuminate\Support\Collection mapSpread(callable $callback)
     * @method \Illuminate\Support\Collection zip($items)
     * @method \Illuminate\Support\Collection map(callable $callback)
     * @method \Illuminate\Support\Collection split(int $numberOfGroups)
     * @method \Illuminate\Support\Collection combine(\Illuminate\Contracts\Support\Arrayable $values)
     * @method \Illuminate\Support\Collection mapToDictionary(callable $callback)
     * @method \Illuminate\Support\Collection keys()
     * @method \Illuminate\Support\Collection transform(callable $callback)
     * @method \Illuminate\Support\Collection collapse()
     */
    class _BaseCollection extends \Illuminate\Database\Eloquent\Collection {}
    
    /**
     * @method \Category getOrPut($key, \Closure $value)
     * @method \Category|$this shift(int $count = 1)
     * @method \Category firstOrFail(callable|string $key = null, $operator = null, $value = null)
     * @method \Category|$this pop(int $count = 1)
     * @method \Category|null pull(int|string $key, \Closure $default = null)
     * @method \Category|null last(callable|null $callback = null, \Closure $default = null)
     * @method \Category|$this random(callable|int|null $number = null, bool $preserveKeys = false)
     * @method \Category sole(callable|null|string $key = null, $operator = null, $value = null)
     * @method \Category|null get(int|null|string $key, \Closure $default = null)
     * @method \Category|null first(callable|null $callback = null, \Closure $default = null)
     * @method \Category|null firstWhere(callable|string $key, $operator = null, $value = null)
     * @method \Category|null find($key, $default = null)
     * @method \Category[] all()
     */
    class _IH_Category_C extends NestedsetCollection {
        /**
         * @param int $size
         * @param bool $preserveKeys
         * @return \Category[][]|Collection<_IH_Category_C>
         */
        public function chunk($size, $preserveKeys = true)
        {
            return [];
        }
    }
    
    /**
     * @method _IH_Category_QB whereId($value)
     * @method _IH_Category_QB whereName($value)
     * @method _IH_Category_QB whereDescription($value)
     * @method _IH_Category_QB whereType($value)
     * @method _IH_Category_QB whereCreatedAt($value)
     * @method _IH_Category_QB whereUpdatedAt($value)
     * @method \Category create(array $attributes = [])
     * @method \Category createOrFirst(array $attributes = [], array|\Closure $values = [])
     * @method \Category createOrRestore($attributes = [], $values = [])
     * @method \Category createQuietly(array $attributes = [])
     * @method _IH_Category_C|\Category[] cursor()
     * @method \Category[] eagerLoadRelations(array $models)
     * @method \Category|null|_IH_Category_C|\Category[] find($id, array|string $columns = ['*'])
     * @method _IH_Category_C|\Category[] findMany(array|Arrayable $ids, array|string $columns = ['*'])
     * @method \Category|_IH_Category_C|\Category[] findOr($id, \Closure|string|string[] $columns = ['*'], \Closure|null $callback = null)
     * @method \Category|_IH_Category_C|\Category[] findOrFail($id, array|string $columns = ['*'])
     * @method \Category|_IH_Category_C|\Category[] findOrNew($id, array|string $columns = ['*'])
     * @method \Category findSole($id, array|string $columns = ['*'])
     * @method \Category|null first(array|string $columns = ['*'])
     * @method \Category firstOr(\Closure|string[] $columns = ['*'], \Closure|null $callback = null)
     * @method \Category firstOrCreate(array $attributes = [], array|\Closure $values = [])
     * @method \Category firstOrFail(array|string $columns = ['*'])
     * @method \Category firstOrNew(array $attributes = [], array $values = [])
     * @method \Category|null firstWhere(array|\Closure|Expression|string $column, $operator = null, $value = null, string $boolean = 'and')
     * @method \Category forceCreate(array $attributes)
     * @method \Category forceCreateQuietly(array $attributes = [])
     * @method _IH_Category_C|\Category[] fromQuery(string $query, array $bindings = [])
     * @method _IH_Category_C|\Category[] get(array|string $columns = ['*'])
     * @method \Category getModel()
     * @method \Category[] getModels(array|string $columns = ['*'])
     * @method _IH_Category_C|\Category[] hydrate(array $items)
     * @method \Category incrementOrCreate(array $attributes, string $column = 'count', float|int $default = 1, float|int $step = 1, array $extra = [])
     * @method _IH_Category_C|\Category[] lazy(int $chunkSize = 1000)
     * @method _IH_Category_C|\Category[] lazyById(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method _IH_Category_C|\Category[] lazyByIdDesc(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method \Category make(array $attributes = [])
     * @method \Category newModelInstance(array $attributes = [])
     * @method LengthAwarePaginator|\Category[]|_IH_Category_C paginate(\Closure|int|null $perPage = null, array|string $columns = ['*'], string $pageName = 'page', int|null $page = null, \Closure|int|null $total = null)
     * @method \Category restoreOrCreate($attributes = [], $values = [])
     * @method Paginator|\Category[]|_IH_Category_C simplePaginate(int|null $perPage = null, array|string $columns = ['*'], string $pageName = 'page', int|null $page = null)
     * @method \Category sole(array|string $columns = ['*'])
     * @method \Category updateOrCreate(array $attributes, array $values = [])
     */
    class _IH_Category_QB extends NestedsetQueryBuilder {}
    
    /**
     * @method \DuplicateCategory getOrPut($key, \Closure $value)
     * @method \DuplicateCategory|$this shift(int $count = 1)
     * @method \DuplicateCategory firstOrFail(callable|string $key = null, $operator = null, $value = null)
     * @method \DuplicateCategory|$this pop(int $count = 1)
     * @method \DuplicateCategory|null pull(int|string $key, \Closure $default = null)
     * @method \DuplicateCategory|null last(callable|null $callback = null, \Closure $default = null)
     * @method \DuplicateCategory|$this random(callable|int|null $number = null, bool $preserveKeys = false)
     * @method \DuplicateCategory sole(callable|null|string $key = null, $operator = null, $value = null)
     * @method \DuplicateCategory|null get(int|null|string $key, \Closure $default = null)
     * @method \DuplicateCategory|null first(callable|null $callback = null, \Closure $default = null)
     * @method \DuplicateCategory|null firstWhere(callable|string $key, $operator = null, $value = null)
     * @method \DuplicateCategory|null find($key, $default = null)
     * @method \DuplicateCategory[] all()
     */
    class _IH_DuplicateCategory_C extends NestedsetCollection {
        /**
         * @param int $size
         * @param bool $preserveKeys
         * @return \DuplicateCategory[][]|Collection<_IH_DuplicateCategory_C>
         */
        public function chunk($size, $preserveKeys = true)
        {
            return [];
        }
    }
    
    /**
     * @method _IH_DuplicateCategory_QB whereId($value)
     * @method _IH_DuplicateCategory_QB whereName($value)
     * @method _IH_DuplicateCategory_QB whereDescription($value)
     * @method _IH_DuplicateCategory_QB whereType($value)
     * @method _IH_DuplicateCategory_QB whereCreatedAt($value)
     * @method _IH_DuplicateCategory_QB whereUpdatedAt($value)
     * @method \DuplicateCategory create(array $attributes = [])
     * @method \DuplicateCategory createOrFirst(array $attributes = [], array|\Closure $values = [])
     * @method \DuplicateCategory createOrRestore($attributes = [], $values = [])
     * @method \DuplicateCategory createQuietly(array $attributes = [])
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] cursor()
     * @method \DuplicateCategory[] eagerLoadRelations(array $models)
     * @method \DuplicateCategory|null|_IH_DuplicateCategory_C|\DuplicateCategory[] find($id, array|string $columns = ['*'])
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] findMany(array|Arrayable $ids, array|string $columns = ['*'])
     * @method \DuplicateCategory|_IH_DuplicateCategory_C|\DuplicateCategory[] findOr($id, \Closure|string|string[] $columns = ['*'], \Closure|null $callback = null)
     * @method \DuplicateCategory|_IH_DuplicateCategory_C|\DuplicateCategory[] findOrFail($id, array|string $columns = ['*'])
     * @method \DuplicateCategory|_IH_DuplicateCategory_C|\DuplicateCategory[] findOrNew($id, array|string $columns = ['*'])
     * @method \DuplicateCategory findSole($id, array|string $columns = ['*'])
     * @method \DuplicateCategory|null first(array|string $columns = ['*'])
     * @method \DuplicateCategory firstOr(\Closure|string[] $columns = ['*'], \Closure|null $callback = null)
     * @method \DuplicateCategory firstOrCreate(array $attributes = [], array|\Closure $values = [])
     * @method \DuplicateCategory firstOrFail(array|string $columns = ['*'])
     * @method \DuplicateCategory firstOrNew(array $attributes = [], array $values = [])
     * @method \DuplicateCategory|null firstWhere(array|\Closure|Expression|string $column, $operator = null, $value = null, string $boolean = 'and')
     * @method \DuplicateCategory forceCreate(array $attributes)
     * @method \DuplicateCategory forceCreateQuietly(array $attributes = [])
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] fromQuery(string $query, array $bindings = [])
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] get(array|string $columns = ['*'])
     * @method \DuplicateCategory getModel()
     * @method \DuplicateCategory[] getModels(array|string $columns = ['*'])
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] hydrate(array $items)
     * @method \DuplicateCategory incrementOrCreate(array $attributes, string $column = 'count', float|int $default = 1, float|int $step = 1, array $extra = [])
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] lazy(int $chunkSize = 1000)
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] lazyById(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method _IH_DuplicateCategory_C|\DuplicateCategory[] lazyByIdDesc(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method \DuplicateCategory make(array $attributes = [])
     * @method \DuplicateCategory newModelInstance(array $attributes = [])
     * @method LengthAwarePaginator|\DuplicateCategory[]|_IH_DuplicateCategory_C paginate(\Closure|int|null $perPage = null, array|string $columns = ['*'], string $pageName = 'page', int|null $page = null, \Closure|int|null $total = null)
     * @method \DuplicateCategory restoreOrCreate($attributes = [], $values = [])
     * @method Paginator|\DuplicateCategory[]|_IH_DuplicateCategory_C simplePaginate(int|null $perPage = null, array|string $columns = ['*'], string $pageName = 'page', int|null $page = null)
     * @method \DuplicateCategory sole(array|string $columns = ['*'])
     * @method \DuplicateCategory updateOrCreate(array $attributes, array $values = [])
     */
    class _IH_DuplicateCategory_QB extends NestedsetQueryBuilder {}
    
    /**
     * @method \MenuItem getOrPut($key, \Closure $value)
     * @method \MenuItem|$this shift(int $count = 1)
     * @method \MenuItem firstOrFail(callable|string $key = null, $operator = null, $value = null)
     * @method \MenuItem|$this pop(int $count = 1)
     * @method \MenuItem|null pull(int|string $key, \Closure $default = null)
     * @method \MenuItem|null last(callable|null $callback = null, \Closure $default = null)
     * @method \MenuItem|$this random(callable|int|null $number = null, bool $preserveKeys = false)
     * @method \MenuItem sole(callable|null|string $key = null, $operator = null, $value = null)
     * @method \MenuItem|null get(int|null|string $key, \Closure $default = null)
     * @method \MenuItem|null first(callable|null $callback = null, \Closure $default = null)
     * @method \MenuItem|null firstWhere(callable|string $key, $operator = null, $value = null)
     * @method \MenuItem|null find($key, $default = null)
     * @method \MenuItem[] all()
     */
    class _IH_MenuItem_C extends NestedsetCollection {
        /**
         * @param int $size
         * @param bool $preserveKeys
         * @return \MenuItem[][]|Collection<_IH_MenuItem_C>
         */
        public function chunk($size, $preserveKeys = true)
        {
            return [];
        }
    }
    
    /**
     * @method \MenuItem create(array $attributes = [])
     * @method \MenuItem createOrFirst(array $attributes = [], array|\Closure $values = [])
     * @method \MenuItem createOrRestore($attributes = [], $values = [])
     * @method \MenuItem createQuietly(array $attributes = [])
     * @method _IH_MenuItem_C|\MenuItem[] cursor()
     * @method \MenuItem[] eagerLoadRelations(array $models)
     * @method \MenuItem|null|_IH_MenuItem_C|\MenuItem[] find($id, array|string $columns = ['*'])
     * @method _IH_MenuItem_C|\MenuItem[] findMany(array|Arrayable $ids, array|string $columns = ['*'])
     * @method \MenuItem|_IH_MenuItem_C|\MenuItem[] findOr($id, \Closure|string|string[] $columns = ['*'], \Closure|null $callback = null)
     * @method \MenuItem|_IH_MenuItem_C|\MenuItem[] findOrFail($id, array|string $columns = ['*'])
     * @method \MenuItem|_IH_MenuItem_C|\MenuItem[] findOrNew($id, array|string $columns = ['*'])
     * @method \MenuItem findSole($id, array|string $columns = ['*'])
     * @method \MenuItem|null first(array|string $columns = ['*'])
     * @method \MenuItem firstOr(\Closure|string[] $columns = ['*'], \Closure|null $callback = null)
     * @method \MenuItem firstOrCreate(array $attributes = [], array|\Closure $values = [])
     * @method \MenuItem firstOrFail(array|string $columns = ['*'])
     * @method \MenuItem firstOrNew(array $attributes = [], array $values = [])
     * @method \MenuItem|null firstWhere(array|\Closure|Expression|string $column, $operator = null, $value = null, string $boolean = 'and')
     * @method \MenuItem forceCreate(array $attributes)
     * @method \MenuItem forceCreateQuietly(array $attributes = [])
     * @method _IH_MenuItem_C|\MenuItem[] fromQuery(string $query, array $bindings = [])
     * @method _IH_MenuItem_C|\MenuItem[] get(array|string $columns = ['*'])
     * @method \MenuItem getModel()
     * @method \MenuItem[] getModels(array|string $columns = ['*'])
     * @method _IH_MenuItem_C|\MenuItem[] hydrate(array $items)
     * @method \MenuItem incrementOrCreate(array $attributes, string $column = 'count', float|int $default = 1, float|int $step = 1, array $extra = [])
     * @method _IH_MenuItem_C|\MenuItem[] lazy(int $chunkSize = 1000)
     * @method _IH_MenuItem_C|\MenuItem[] lazyById(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method _IH_MenuItem_C|\MenuItem[] lazyByIdDesc(int $chunkSize = 1000, null|string $column = null, null|string $alias = null)
     * @method \MenuItem make(array $attributes = [])
     * @method \MenuItem newModelInstance(array $attributes = [])
     * @method LengthAwarePaginator|\MenuItem[]|_IH_MenuItem_C paginate(\Closure|int|null $perPage = null, array|string $columns = ['*'], string $pageName = 'page', int|null $page = null, \Closure|int|null $total = null)
     * @method \MenuItem restoreOrCreate($attributes = [], $values = [])
     * @method Paginator|\MenuItem[]|_IH_MenuItem_C simplePaginate(int|null $perPage = null, array|string $columns = ['*'], string $pageName = 'page', int|null $page = null)
     * @method \MenuItem sole(array|string $columns = ['*'])
     * @method \MenuItem updateOrCreate(array $attributes, array $values = [])
     */
    class _IH_MenuItem_QB extends NestedsetQueryBuilder {}
}