<?php //c346d4cb2533927a38fa52897bae003c
/** @noinspection all */

namespace App\Models {

    use App\Enums\BannerLocationEnum;
    use App\Enums\PageTypeEnum;
    use App\Enums\SearchHistoryEnum;
    use App\Enums\TransactionTypeEnum;
    use Database\Factories\AddressFactory;
    use Database\Factories\BrandFactory;
    use Database\Factories\CardFactory;
    use Database\Factories\CategoryFactory;
    use Database\Factories\CityFactory;
    use Database\Factories\CommentFactory;
    use Database\Factories\ContactRequestFactory;
    use Database\Factories\OtpFactory;
    use Database\Factories\ProductFactory;
    use Database\Factories\ProductModelFactory;
    use Database\Factories\ProvinceFactory;
    use Database\Factories\UserFactory;
    use Illuminate\Database\Eloquent\Model;
    use Illuminate\Database\Eloquent\Relations\BelongsTo;
    use Illuminate\Database\Eloquent\Relations\BelongsToMany;
    use Illuminate\Database\Eloquent\Relations\HasMany;
    use Illuminate\Database\Eloquent\Relations\HasOne;
    use Illuminate\Database\Eloquent\Relations\MorphTo;
    use Illuminate\Database\Eloquent\Relations\MorphToMany;
    use Illuminate\Notifications\DatabaseNotification;
    use Illuminate\Notifications\DatabaseNotificationCollection;
    use Illuminate\Support\Carbon;
    use LaravelIdea\Helper\App\Models\_IH_Address_C;
    use LaravelIdea\Helper\App\Models\_IH_Address_QB;
    use LaravelIdea\Helper\App\Models\_IH_Admin_C;
    use LaravelIdea\Helper\App\Models\_IH_Admin_QB;
    use LaravelIdea\Helper\App\Models\_IH_Banner_C;
    use LaravelIdea\Helper\App\Models\_IH_Banner_QB;
    use LaravelIdea\Helper\App\Models\_IH_BlogCategory_C;
    use LaravelIdea\Helper\App\Models\_IH_BlogCategory_QB;
    use LaravelIdea\Helper\App\Models\_IH_Blog_C;
    use LaravelIdea\Helper\App\Models\_IH_Blog_QB;
    use LaravelIdea\Helper\App\Models\_IH_Brand_C;
    use LaravelIdea\Helper\App\Models\_IH_Brand_QB;
    use LaravelIdea\Helper\App\Models\_IH_Card_C;
    use LaravelIdea\Helper\App\Models\_IH_Card_QB;
    use LaravelIdea\Helper\App\Models\_IH_CartItem_C;
    use LaravelIdea\Helper\App\Models\_IH_CartItem_QB;
    use LaravelIdea\Helper\App\Models\_IH_Cart_C;
    use LaravelIdea\Helper\App\Models\_IH_Cart_QB;
    use LaravelIdea\Helper\App\Models\_IH_Category_C;
    use LaravelIdea\Helper\App\Models\_IH_Category_QB;
    use LaravelIdea\Helper\App\Models\_IH_Chat_C;
    use LaravelIdea\Helper\App\Models\_IH_Chat_QB;
    use LaravelIdea\Helper\App\Models\_IH_City_C;
    use LaravelIdea\Helper\App\Models\_IH_City_QB;
    use LaravelIdea\Helper\App\Models\_IH_Comment_C;
    use LaravelIdea\Helper\App\Models\_IH_Comment_QB;
    use LaravelIdea\Helper\App\Models\_IH_ContactRequest_C;
    use LaravelIdea\Helper\App\Models\_IH_ContactRequest_QB;
    use LaravelIdea\Helper\App\Models\_IH_CouponUser_C;
    use LaravelIdea\Helper\App\Models\_IH_CouponUser_QB;
    use LaravelIdea\Helper\App\Models\_IH_Coupon_C;
    use LaravelIdea\Helper\App\Models\_IH_Coupon_QB;
    use LaravelIdea\Helper\App\Models\_IH_Faq_C;
    use LaravelIdea\Helper\App\Models\_IH_Faq_QB;
    use LaravelIdea\Helper\App\Models\_IH_FooterSetting_C;
    use LaravelIdea\Helper\App\Models\_IH_FooterSetting_QB;
    use LaravelIdea\Helper\App\Models\_IH_Message_C;
    use LaravelIdea\Helper\App\Models\_IH_Message_QB;
    use LaravelIdea\Helper\App\Models\_IH_Notification_C;
    use LaravelIdea\Helper\App\Models\_IH_Notification_QB;
    use LaravelIdea\Helper\App\Models\_IH_Otp_C;
    use LaravelIdea\Helper\App\Models\_IH_Otp_QB;
    use LaravelIdea\Helper\App\Models\_IH_ProductAttribute_C;
    use LaravelIdea\Helper\App\Models\_IH_ProductAttribute_QB;
    use LaravelIdea\Helper\App\Models\_IH_ProductModel_C;
    use LaravelIdea\Helper\App\Models\_IH_ProductModel_QB;
    use LaravelIdea\Helper\App\Models\_IH_ProductRelation_C;
    use LaravelIdea\Helper\App\Models\_IH_ProductRelation_QB;
    use LaravelIdea\Helper\App\Models\_IH_Product_C;
    use LaravelIdea\Helper\App\Models\_IH_Product_QB;
    use LaravelIdea\Helper\App\Models\_IH_Province_C;
    use LaravelIdea\Helper\App\Models\_IH_Province_QB;
    use LaravelIdea\Helper\App\Models\_IH_SearchHistory_C;
    use LaravelIdea\Helper\App\Models\_IH_SearchHistory_QB;
    use LaravelIdea\Helper\App\Models\_IH_StaticPageSetting_C;
    use LaravelIdea\Helper\App\Models\_IH_StaticPageSetting_QB;
    use LaravelIdea\Helper\App\Models\_IH_Transaction_C;
    use LaravelIdea\Helper\App\Models\_IH_Transaction_QB;
    use LaravelIdea\Helper\App\Models\_IH_User_C;
    use LaravelIdea\Helper\App\Models\_IH_User_QB;
    use LaravelIdea\Helper\Illuminate\Notifications\_IH_DatabaseNotification_QB;
    use LaravelIdea\Helper\Spatie\MediaLibrary\MediaCollections\Models\_IH_Media_C;
    use LaravelIdea\Helper\Spatie\MediaLibrary\MediaCollections\Models\_IH_Media_QB;
    use LaravelIdea\Helper\Spatie\Permission\Models\_IH_Permission_C;
    use LaravelIdea\Helper\Spatie\Permission\Models\_IH_Permission_QB;
    use LaravelIdea\Helper\Spatie\Permission\Models\_IH_Role_C;
    use LaravelIdea\Helper\Spatie\Permission\Models\_IH_Role_QB;
    use Spatie\MediaLibrary\MediaCollections\Models\Media;
    use Spatie\Permission\Models\Permission;
    use Spatie\Permission\Models\Role;
    
    /**
     * @property int $id
     * @property string|null $address
     * @property string|null $postal_code
     * @property string|null $neighborhood
     * @property int $city_id
     * @property int $province_id
     * @property int $user_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property City $city
     * @method BelongsTo|_IH_City_QB city()
     * @property Province $province
     * @method BelongsTo|_IH_Province_QB province()
     * @property User $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Address_QB onWriteConnection()
     * @method _IH_Address_QB newQuery()
     * @method static _IH_Address_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Address_QB query()
     * @method static _IH_Address_QB with(array|string $relations)
     * @method _IH_Address_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Address_C|Address[] all($columns = ['*'])
     * @ownLinks city_id,\App\Models\City,id|province_id,\App\Models\Province,id|user_id,\App\Models\User,id
     * @mixin _IH_Address_QB
     * @method static AddressFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Address extends Model {}
    
    /**
     * @property int $id
     * @property string $name
     * @property string $email
     * @property Carbon|null $email_verified_at
     * @property mixed $password
     * @property string|null $remember_token
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read string $avatar_url attribute
     * @property _IH_Blog_C|Blog[] $blogs
     * @property-read int $blogs_count
     * @method HasMany|_IH_Blog_QB blogs()
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @property _IH_Message_C|Message[] $messages
     * @property-read int $messages_count
     * @method HasMany|_IH_Message_QB messages()
     * @property DatabaseNotificationCollection|DatabaseNotification[] $notifications
     * @property-read int $notifications_count
     * @method MorphToMany|_IH_DatabaseNotification_QB notifications()
     * @property _IH_Permission_C|Permission[] $permissions
     * @property-read int $permissions_count
     * @method MorphToMany|_IH_Permission_QB permissions()
     * @property DatabaseNotificationCollection|DatabaseNotification[] $readNotifications
     * @property-read int $read_notifications_count
     * @method MorphToMany|_IH_DatabaseNotification_QB readNotifications()
     * @property _IH_Role_C|Role[] $roles
     * @property-read int $roles_count
     * @method MorphToMany|_IH_Role_QB roles()
     * @property DatabaseNotificationCollection|DatabaseNotification[] $unreadNotifications
     * @property-read int $unread_notifications_count
     * @method MorphToMany|_IH_DatabaseNotification_QB unreadNotifications()
     * @method static _IH_Admin_QB onWriteConnection()
     * @method _IH_Admin_QB newQuery()
     * @method static _IH_Admin_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Admin_QB query()
     * @method static _IH_Admin_QB with(array|string $relations)
     * @method _IH_Admin_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Admin_C|Admin[] all($columns = ['*'])
     * @foreignLinks id,\App\Models\Blog,admin_id|id,\App\Models\Notification,admin_id|id,\App\Models\Message,admin_id
     * @mixin _IH_Admin_QB
     */
    class Admin extends Model {}
    
    /**
     * @property int $id
     * @property string $title
     * @property BannerLocationEnum $location
     * @property string $url
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read string $banner_thumb_url attribute
     * @property-read string $banner_url attribute
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @method static _IH_Banner_QB onWriteConnection()
     * @method _IH_Banner_QB newQuery()
     * @method static _IH_Banner_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Banner_QB query()
     * @method static _IH_Banner_QB with(array|string $relations)
     * @method _IH_Banner_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Banner_C|Banner[] all($columns = ['*'])
     * @mixin _IH_Banner_QB
     */
    class Banner extends Model {}
    
    /**
     * @property int $id
     * @property int $admin_id
     * @property string $title
     * @property string $slug
     * @property string $description
     * @property string $writer_name
     * @property int $views
     * @property int|null $category_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read string $cover_thumb_url attribute
     * @property-read string $cover_url attribute
     * @property Admin $admin
     * @method BelongsTo|_IH_Admin_QB admin()
     * @property BlogCategory|null $category
     * @method BelongsTo|_IH_BlogCategory_QB category()
     * @property _IH_Comment_C|Comment[] $comments
     * @property-read int $comments_count
     * @method MorphToMany|_IH_Comment_QB comments()
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @method static _IH_Blog_QB onWriteConnection()
     * @method _IH_Blog_QB newQuery()
     * @method static _IH_Blog_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Blog_QB query()
     * @method static _IH_Blog_QB with(array|string $relations)
     * @method _IH_Blog_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Blog_C|Blog[] all($columns = ['*'])
     * @ownLinks admin_id,\App\Models\Admin,id|category_id,\App\Models\BlogCategory,id
     * @mixin _IH_Blog_QB
     */
    class Blog extends Model {}
    
    /**
     * @property int $id
     * @property string $title
     * @property string $slug
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_Blog_C|Blog[] $blogs
     * @property-read int $blogs_count
     * @method HasMany|_IH_Blog_QB blogs()
     * @method static _IH_BlogCategory_QB onWriteConnection()
     * @method _IH_BlogCategory_QB newQuery()
     * @method static _IH_BlogCategory_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_BlogCategory_QB query()
     * @method static _IH_BlogCategory_QB with(array|string $relations)
     * @method _IH_BlogCategory_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_BlogCategory_C|BlogCategory[] all($columns = ['*'])
     * @foreignLinks id,\App\Models\Blog,category_id
     * @mixin _IH_BlogCategory_QB
     */
    class BlogCategory extends Model {}
    
    /**
     * @property int $id
     * @property string $title_fa
     * @property string $title_en
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_Product_C|Product[] $products
     * @property-read int $products_count
     * @method HasMany|_IH_Product_QB products()
     * @method static _IH_Brand_QB onWriteConnection()
     * @method _IH_Brand_QB newQuery()
     * @method static _IH_Brand_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Brand_QB query()
     * @method static _IH_Brand_QB with(array|string $relations)
     * @method _IH_Brand_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Brand_C|Brand[] all($columns = ['*'])
     * @foreignLinks id,\App\Models\Product,brand_id
     * @mixin _IH_Brand_QB
     * @method static BrandFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Brand extends Model {}
    
    /**
     * @property int $id
     * @property int $user_id
     * @property mixed|null $card_number
     * @property mixed|null $iban
     * @property mixed|null $account_number
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property User $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Card_QB onWriteConnection()
     * @method _IH_Card_QB newQuery()
     * @method static _IH_Card_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Card_QB query()
     * @method static _IH_Card_QB with(array|string $relations)
     * @method _IH_Card_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Card_C|Card[] all($columns = ['*'])
     * @ownLinks user_id,\App\Models\User,id
     * @foreignLinks id,\App\Models\Transaction,card_id
     * @mixin _IH_Card_QB
     * @method static CardFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Card extends Model {}
    
    /**
     * @property int $id
     * @property int|null $user_id
     * @property int $total_price
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_CartItem_C|CartItem[] $cartItems
     * @property-read int $cart_items_count
     * @method HasMany|_IH_CartItem_QB cartItems()
     * @property User|null $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Cart_QB onWriteConnection()
     * @method _IH_Cart_QB newQuery()
     * @method static _IH_Cart_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Cart_QB query()
     * @method static _IH_Cart_QB with(array|string $relations)
     * @method _IH_Cart_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Cart_C|Cart[] all($columns = ['*'])
     * @ownLinks user_id,\App\Models\User,id
     * @foreignLinks id,\App\Models\CartItem,cart_id
     * @mixin _IH_Cart_QB
     */
    class Cart extends Model {}
    
    /**
     * @property int $id
     * @property int $product_model_id
     * @property int $cart_id
     * @property int $quantity
     * @property int $price
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property Cart $cart
     * @method BelongsTo|_IH_Cart_QB cart()
     * @property ProductModel $productModel
     * @method BelongsTo|_IH_ProductModel_QB productModel()
     * @method static _IH_CartItem_QB onWriteConnection()
     * @method _IH_CartItem_QB newQuery()
     * @method static _IH_CartItem_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_CartItem_QB query()
     * @method static _IH_CartItem_QB with(array|string $relations)
     * @method _IH_CartItem_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_CartItem_C|CartItem[] all($columns = ['*'])
     * @ownLinks product_model_id,\App\Models\ProductModel,id|cart_id,\App\Models\Cart,id
     * @mixin _IH_CartItem_QB
     */
    class CartItem extends Model {}
    
    /**
     * @property int $id
     * @property string $title
     * @property int|null $parent_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read null|string $category_thumb_url attribute
     * @property-read null|string $category_url attribute
     * @property _IH_Category_C|Category[] $children
     * @property-read int $children_count
     * @method HasMany|_IH_Category_QB children()
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @property Category|null $parent
     * @method BelongsTo|_IH_Category_QB parent()
     * @property _IH_Product_C|Product[] $products
     * @property-read int $products_count
     * @method HasMany|_IH_Product_QB products()
     * @method static _IH_Category_QB onWriteConnection()
     * @method _IH_Category_QB newQuery()
     * @method static _IH_Category_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Category_QB query()
     * @method static _IH_Category_QB with(array|string $relations)
     * @method _IH_Category_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Category_C|Category[] all($columns = ['*'])
     * @ownLinks parent_id,\App\Models\Category,id
     * @foreignLinks id,\App\Models\Category,parent_id|id,\App\Models\Product,category_id|id,\App\Models\Coupon,category_id
     * @mixin _IH_Category_QB
     * @method static CategoryFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Category extends Model {}
    
    /**
     * @property int $id
     * @property int $user_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_Message_C|Message[] $messages
     * @property-read int $messages_count
     * @method HasMany|_IH_Message_QB messages()
     * @property User $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Chat_QB onWriteConnection()
     * @method _IH_Chat_QB newQuery()
     * @method static _IH_Chat_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Chat_QB query()
     * @method static _IH_Chat_QB with(array|string $relations)
     * @method _IH_Chat_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Chat_C|Chat[] all($columns = ['*'])
     * @ownLinks user_id,\App\Models\User,id
     * @foreignLinks id,\App\Models\Message,chat_id
     * @mixin _IH_Chat_QB
     */
    class Chat extends Model {}
    
    /**
     * @property int $id
     * @property string $name
     * @property int $province_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_Address_C|Address[] $addresses
     * @property-read int $addresses_count
     * @method HasMany|_IH_Address_QB addresses()
     * @property Province $province
     * @method BelongsTo|_IH_Province_QB province()
     * @method static _IH_City_QB onWriteConnection()
     * @method _IH_City_QB newQuery()
     * @method static _IH_City_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_City_QB query()
     * @method static _IH_City_QB with(array|string $relations)
     * @method _IH_City_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_City_C|City[] all($columns = ['*'])
     * @ownLinks province_id,\App\Models\Province,id
     * @foreignLinks id,\App\Models\Address,city_id
     * @mixin _IH_City_QB
     * @method static CityFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class City extends Model {}
    
    /**
     * @property int $id
     * @property string $description
     * @property int $commentable_id
     * @property string $commentable_type
     * @property int $user_id
     * @property int|null $rate
     * @property bool $is_verified
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read string $commentable_label attribute
     * @property-read null|string $commentable_title attribute
     * @property Model $commentable
     * @method MorphTo commentable()
     * @property Product $product
     * @method BelongsTo|_IH_Product_QB product()
     * @property User $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Comment_QB onWriteConnection()
     * @method _IH_Comment_QB newQuery()
     * @method static _IH_Comment_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Comment_QB query()
     * @method static _IH_Comment_QB with(array|string $relations)
     * @method _IH_Comment_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Comment_C|Comment[] all($columns = ['*'])
     * @ownLinks user_id,\App\Models\User,id
     * @mixin _IH_Comment_QB
     * @method static CommentFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Comment extends Model {}
    
    /**
     * @property int $id
     * @property string $phone
     * @property string $full_name
     * @property string $email
     * @property string $description
     * @property int|null $user_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property User|null $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_ContactRequest_QB onWriteConnection()
     * @method _IH_ContactRequest_QB newQuery()
     * @method static _IH_ContactRequest_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_ContactRequest_QB query()
     * @method static _IH_ContactRequest_QB with(array|string $relations)
     * @method _IH_ContactRequest_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_ContactRequest_C|ContactRequest[] all($columns = ['*'])
     * @ownLinks user_id,\App\Models\User,id
     * @mixin _IH_ContactRequest_QB
     * @method static ContactRequestFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class ContactRequest extends Model {}
    
    /**
     * @property int $id
     * @property string $code
     * @property bool $for_all_users
     * @property string $discount_type
     * @property float $discount_value
     * @property float|null $max_discount
     * @property bool $free_shipping
     * @property Carbon|null $starts_at
     * @property Carbon|null $expires_at
     * @property bool $first_order_only
     * @property float|null $minimum_order_amount
     * @property int|null $usage_limit
     * @property int $used_count
     * @property float|null $max_usage_amount
     * @property int|null $category_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property Category|null $category
     * @method BelongsTo|_IH_Category_QB category()
     * @property _IH_User_C|User[] $users
     * @property-read int $users_count
     * @method BelongsToMany|_IH_User_QB users()
     * @method static _IH_Coupon_QB onWriteConnection()
     * @method _IH_Coupon_QB newQuery()
     * @method static _IH_Coupon_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Coupon_QB query()
     * @method static _IH_Coupon_QB with(array|string $relations)
     * @method _IH_Coupon_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Coupon_C|Coupon[] all($columns = ['*'])
     * @ownLinks category_id,\App\Models\Category,id
     * @foreignLinks id,\App\Models\CouponUser,coupon_id
     * @mixin _IH_Coupon_QB
     */
    class Coupon extends Model {}
    
    /**
     * @property int $id
     * @property int $coupon_id
     * @property int $user_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @method static _IH_CouponUser_QB onWriteConnection()
     * @method _IH_CouponUser_QB newQuery()
     * @method static _IH_CouponUser_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_CouponUser_QB query()
     * @method static _IH_CouponUser_QB with(array|string $relations)
     * @method _IH_CouponUser_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_CouponUser_C|CouponUser[] all($columns = ['*'])
     * @ownLinks coupon_id,\App\Models\Coupon,id|user_id,\App\Models\User,id
     * @mixin _IH_CouponUser_QB
     */
    class CouponUser extends Model {}
    
    /**
     * @property int $id
     * @property string $question
     * @property string $answer
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @method static _IH_Faq_QB onWriteConnection()
     * @method _IH_Faq_QB newQuery()
     * @method static _IH_Faq_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Faq_QB query()
     * @method static _IH_Faq_QB with(array|string $relations)
     * @method _IH_Faq_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Faq_C|Faq[] all($columns = ['*'])
     * @mixin _IH_Faq_QB
     */
    class Faq extends Model {}
    
    /**
     * @property int $id
     * @property string|null $logo
     * @property string|null $description
     * @property string|null $inmad_link
     * @property string|null $samandehi_link
     * @property string|null $phone_number
     * @property string|null $email
     * @property string|null $telegram_link
     * @property string|null $youtube_link
     * @property string|null $instagram_link
     * @property string|null $address
     * @property float|null $latitude
     * @property float|null $longitude
     * @property string|null $map_embed_code
     * @property string $map_provider
     * @property int $map_zoom
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @method static _IH_FooterSetting_QB onWriteConnection()
     * @method _IH_FooterSetting_QB newQuery()
     * @method static _IH_FooterSetting_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_FooterSetting_QB query()
     * @method static _IH_FooterSetting_QB with(array|string $relations)
     * @method _IH_FooterSetting_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_FooterSetting_C|FooterSetting[] all($columns = ['*'])
     * @mixin _IH_FooterSetting_QB
     */
    class FooterSetting extends Model {}
    
    /**
     * @property int $id
     * @property int $chat_id
     * @property int|null $admin_id
     * @property int|null $user_id
     * @property string|null $body
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read array $audio attribute
     * @property-read array $images attribute
     * @property-read array $videos attribute
     * @property Admin|null $admin
     * @method BelongsTo|_IH_Admin_QB admin()
     * @property Chat $chat
     * @method BelongsTo|_IH_Chat_QB chat()
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @property User|null $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Message_QB onWriteConnection()
     * @method _IH_Message_QB newQuery()
     * @method static _IH_Message_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Message_QB query()
     * @method static _IH_Message_QB with(array|string $relations)
     * @method _IH_Message_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Message_C|Message[] all($columns = ['*'])
     * @ownLinks chat_id,\App\Models\Chat,id|admin_id,\App\Models\Admin,id|user_id,\App\Models\User,id
     * @mixin _IH_Message_QB
     */
    class Message extends Model {}
    
    /**
     * @property int $id
     * @property int|null $admin_id
     * @property string $title
     * @property string $message
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property Admin|null $admin
     * @method BelongsTo|_IH_Admin_QB admin()
     * @property _IH_User_C|User[] $users
     * @property-read int $users_count
     * @method BelongsToMany|_IH_User_QB users()
     * @method static _IH_Notification_QB onWriteConnection()
     * @method _IH_Notification_QB newQuery()
     * @method static _IH_Notification_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Notification_QB query()
     * @method static _IH_Notification_QB with(array|string $relations)
     * @method _IH_Notification_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Notification_C|Notification[] all($columns = ['*'])
     * @ownLinks admin_id,\App\Models\Admin,id
     * @foreignLinks 
     * @mixin _IH_Notification_QB
     */
    class Notification extends Model {}
    
    /**
     * @property int $id
     * @property string $phone
     * @property string $code
     * @property Carbon|null $expires_at
     * @property bool $verified
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @method static _IH_Otp_QB onWriteConnection()
     * @method _IH_Otp_QB newQuery()
     * @method static _IH_Otp_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Otp_QB query()
     * @method static _IH_Otp_QB with(array|string $relations)
     * @method _IH_Otp_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Otp_C|Otp[] all($columns = ['*'])
     * @mixin _IH_Otp_QB
     * @method static OtpFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Otp extends Model {}
    
    /**
     * @property int $id
     * @property string|null $title_fa
     * @property string|null $title_en
     * @property Carbon|null $expires_at
     * @property string|null $description
     * @property string|null $slug
     * @property bool $is_published
     * @property int|null $category_id
     * @property int|null $brand_id
     * @property int $views
     * @property Carbon|null $deleted_at
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read null|string $cover_image attribute
     * @property-read null|string $cover_thumb attribute
     * @property-read array $images attribute
     * @property-read array $thumbs attribute
     * @property-read array $videos attribute
     * @property Brand|null $brand
     * @method BelongsTo|_IH_Brand_QB brand()
     * @property Category|null $category
     * @method BelongsTo|_IH_Category_QB category()
     * @property _IH_Comment_C|Comment[] $comments
     * @property-read int $comments_count
     * @method MorphToMany|_IH_Comment_QB comments()
     * @property _IH_ProductRelation_C|ProductRelation[] $complementaryProducts
     * @property-read int $complementary_products_count
     * @method HasMany|_IH_ProductRelation_QB complementaryProducts()
     * @property _IH_User_C|User[] $likedByUsers
     * @property-read int $liked_by_users_count
     * @method BelongsToMany|_IH_User_QB likedByUsers()
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @property _IH_ProductAttribute_C|ProductAttribute[] $productAttributes
     * @property-read int $product_attributes_count
     * @method HasMany|_IH_ProductAttribute_QB productAttributes()
     * @property _IH_ProductModel_C|ProductModel[] $productModels
     * @property-read int $product_models_count
     * @method HasMany|_IH_ProductModel_QB productModels()
     * @property _IH_ProductRelation_C|ProductRelation[] $productRelation
     * @property-read int $product_relation_count
     * @method HasMany|_IH_ProductRelation_QB productRelation()
     * @property _IH_ProductRelation_C|ProductRelation[] $relatedProducts
     * @property-read int $related_products_count
     * @method HasMany|_IH_ProductRelation_QB relatedProducts()
     * @method static _IH_Product_QB onWriteConnection()
     * @method _IH_Product_QB newQuery()
     * @method static _IH_Product_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Product_QB query()
     * @method static _IH_Product_QB with(array|string $relations)
     * @method _IH_Product_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Product_C|Product[] all($columns = ['*'])
     * @ownLinks category_id,\App\Models\Category,id|brand_id,\App\Models\Brand,id
     * @foreignLinks id,\App\Models\ProductAttribute,product_id|id,\App\Models\ProductRelation,product_id|id,\App\Models\ProductRelation,related_product_id|id,\App\Models\ProductModel,product_id
     * @mixin _IH_Product_QB
     * @method static ProductFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Product extends Model {}
    
    /**
     * @property int $id
     * @property string|null $title
     * @property string|null $description
     * @property int $product_id
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property Product $product
     * @method BelongsTo|_IH_Product_QB product()
     * @method static _IH_ProductAttribute_QB onWriteConnection()
     * @method _IH_ProductAttribute_QB newQuery()
     * @method static _IH_ProductAttribute_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_ProductAttribute_QB query()
     * @method static _IH_ProductAttribute_QB with(array|string $relations)
     * @method _IH_ProductAttribute_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_ProductAttribute_C|ProductAttribute[] all($columns = ['*'])
     * @ownLinks product_id,\App\Models\Product,id
     * @mixin _IH_ProductAttribute_QB
     */
    class ProductAttribute extends Model {}
    
    /**
     * @property int $id
     * @property string $type
     * @property string $name
     * @property int $price
     * @property int $stock
     * @property int $product_id
     * @property string|null $hex
     * @property int $sold_count
     * @property Carbon|null $deleted_at
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_CartItem_C|CartItem[] $cartItems
     * @property-read int $cart_items_count
     * @method HasMany|_IH_CartItem_QB cartItems()
     * @property Product $product
     * @method BelongsTo|_IH_Product_QB product()
     * @method static _IH_ProductModel_QB onWriteConnection()
     * @method _IH_ProductModel_QB newQuery()
     * @method static _IH_ProductModel_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_ProductModel_QB query()
     * @method static _IH_ProductModel_QB with(array|string $relations)
     * @method _IH_ProductModel_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_ProductModel_C|ProductModel[] all($columns = ['*'])
     * @ownLinks product_id,\App\Models\Product,id
     * @foreignLinks id,\App\Models\CartItem,product_model_id
     * @mixin _IH_ProductModel_QB
     * @method static ProductModelFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class ProductModel extends Model {}
    
    /**
     * @property int $id
     * @property int $product_id
     * @property int $related_product_id
     * @property string $type
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property Product $product
     * @method BelongsTo|_IH_Product_QB product()
     * @property Product $relatedProduct
     * @method BelongsTo|_IH_Product_QB relatedProduct()
     * @method static _IH_ProductRelation_QB onWriteConnection()
     * @method _IH_ProductRelation_QB newQuery()
     * @method static _IH_ProductRelation_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_ProductRelation_QB query()
     * @method static _IH_ProductRelation_QB with(array|string $relations)
     * @method _IH_ProductRelation_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_ProductRelation_C|ProductRelation[] all($columns = ['*'])
     * @ownLinks product_id,\App\Models\Product,id|related_product_id,\App\Models\Product,id
     * @mixin _IH_ProductRelation_QB
     */
    class ProductRelation extends Model {}
    
    /**
     * @property int $id
     * @property string $name
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property _IH_Address_C|Address[] $addresses
     * @property-read int $addresses_count
     * @method HasMany|_IH_Address_QB addresses()
     * @property _IH_City_C|City[] $cities
     * @property-read int $cities_count
     * @method HasMany|_IH_City_QB cities()
     * @method static _IH_Province_QB onWriteConnection()
     * @method _IH_Province_QB newQuery()
     * @method static _IH_Province_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Province_QB query()
     * @method static _IH_Province_QB with(array|string $relations)
     * @method _IH_Province_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Province_C|Province[] all($columns = ['*'])
     * @foreignLinks id,\App\Models\City,province_id|id,\App\Models\Address,province_id
     * @mixin _IH_Province_QB
     * @method static ProvinceFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class Province extends Model {}
    
    /**
     * @property int $id
     * @property string $title
     * @property SearchHistoryEnum $type
     * @property int $sort
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @method static _IH_SearchHistory_QB onWriteConnection()
     * @method _IH_SearchHistory_QB newQuery()
     * @method static _IH_SearchHistory_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_SearchHistory_QB query()
     * @method static _IH_SearchHistory_QB with(array|string $relations)
     * @method _IH_SearchHistory_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_SearchHistory_C|SearchHistory[] all($columns = ['*'])
     * @mixin _IH_SearchHistory_QB
     */
    class SearchHistory extends Model {}
    
    /**
     * @property int $id
     * @property PageTypeEnum $type about-us
     * @property string $title
     * @property string $description
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property-read null|string $cover_thumb_url attribute
     * @property-read null|string $cover_url attribute
     * @property _IH_Media_C|Media[] $media
     * @property-read int $media_count
     * @method MorphToMany|_IH_Media_QB media()
     * @method static _IH_StaticPageSetting_QB onWriteConnection()
     * @method _IH_StaticPageSetting_QB newQuery()
     * @method static _IH_StaticPageSetting_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_StaticPageSetting_QB query()
     * @method static _IH_StaticPageSetting_QB with(array|string $relations)
     * @method _IH_StaticPageSetting_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_StaticPageSetting_C|StaticPageSetting[] all($columns = ['*'])
     * @mixin _IH_StaticPageSetting_QB
     */
    class StaticPageSetting extends Model {}
    
    /**
     * @property int $id
     * @property int $user_id
     * @property int $amount
     * @property TransactionTypeEnum $type
     * @property Carbon|null $verified_at
     * @property string|null $authority
     * @property Carbon|null $failed_at
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property int|null $card_id
     * @property Card|null $card
     * @method BelongsTo|_IH_Card_QB card()
     * @property User $user
     * @method BelongsTo|_IH_User_QB user()
     * @method static _IH_Transaction_QB onWriteConnection()
     * @method _IH_Transaction_QB newQuery()
     * @method static _IH_Transaction_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_Transaction_QB query()
     * @method static _IH_Transaction_QB with(array|string $relations)
     * @method _IH_Transaction_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_Transaction_C|Transaction[] all($columns = ['*'])
     * @ownLinks user_id,\App\Models\User,id|card_id,\App\Models\Card,id
     * @mixin _IH_Transaction_QB
     */
    class Transaction extends Model {}
    
    /**
     * @property int $id
     * @property string $phone
     * @property Carbon|null $phone_verified_at
     * @property string|null $first_name
     * @property string|null $last_name
     * @property string|null $email
     * @property string|null $national_code
     * @property Carbon|null $birth_date
     * @property string|null $remember_token
     * @property Carbon|null $created_at
     * @property Carbon|null $updated_at
     * @property int $balance
     * @property _IH_Card_C|Card[] $cards
     * @property-read int $cards_count
     * @method HasMany|_IH_Card_QB cards()
     * @property Cart $cart
     * @method HasOne|_IH_Cart_QB cart()
     * @property Chat $chat
     * @method HasOne|_IH_Chat_QB chat()
     * @property _IH_Comment_C|Comment[] $comments
     * @property-read int $comments_count
     * @method HasMany|_IH_Comment_QB comments()
     * @property _IH_ContactRequest_C|ContactRequest[] $contactRequests
     * @property-read int $contact_requests_count
     * @method HasMany|_IH_ContactRequest_QB contactRequests()
     * @property _IH_Coupon_C|Coupon[] $coupons
     * @property-read int $coupons_count
     * @method BelongsToMany|_IH_Coupon_QB coupons()
     * @property _IH_Product_C|Product[] $favoriteProducts
     * @property-read int $favorite_products_count
     * @method BelongsToMany|_IH_Product_QB favoriteProducts()
     * @property DatabaseNotificationCollection|DatabaseNotification[] $notifications
     * @property-read int $notifications_count
     * @method MorphToMany|_IH_DatabaseNotification_QB notifications()
     * @property DatabaseNotificationCollection|DatabaseNotification[] $readNotifications
     * @property-read int $read_notifications_count
     * @method MorphToMany|_IH_DatabaseNotification_QB readNotifications()
     * @property _IH_Transaction_C|Transaction[] $transactions
     * @property-read int $transactions_count
     * @method HasMany|_IH_Transaction_QB transactions()
     * @property DatabaseNotificationCollection|DatabaseNotification[] $unreadNotifications
     * @property-read int $unread_notifications_count
     * @method MorphToMany|_IH_DatabaseNotification_QB unreadNotifications()
     * @method static _IH_User_QB onWriteConnection()
     * @method _IH_User_QB newQuery()
     * @method static _IH_User_QB on(null|string|\UnitEnum $connection = null)
     * @method static _IH_User_QB query()
     * @method static _IH_User_QB with(array|string $relations)
     * @method _IH_User_QB newModelQuery()
     * @method false|int increment(string $column, float|int $amount = 1, array $extra = [])
     * @method false|int decrement(string $column, float|int $amount = 1, array $extra = [])
     * @method static _IH_User_C|User[] all($columns = ['*'])
     * @foreignLinks id,\App\Models\Comment,user_id|id,\App\Models\Card,user_id|id,\App\Models\Address,user_id|id,\App\Models\ContactRequest,user_id|id,\App\Models\Transaction,user_id|id,\App\Models\Chat,user_id|id,\App\Models\Message,user_id|id,\App\Models\Cart,user_id|id,\App\Models\CouponUser,user_id
     * @mixin _IH_User_QB
     * @method static UserFactory factory(callable|int|mixed[]|null $count = null, callable|mixed[] $state = [])
     */
    class User extends Model {}
}