
/**
 * Client
**/

import * as runtime from './runtime/library.js';
import $Types = runtime.Types // general types
import $Public = runtime.Types.Public
import $Utils = runtime.Types.Utils
import $Extensions = runtime.Types.Extensions
import $Result = runtime.Types.Result

export type PrismaPromise<T> = $Public.PrismaPromise<T>


/**
 * Model role
 * 
 */
export type role = $Result.DefaultSelection<Prisma.$rolePayload>
/**
 * Model users
 * 
 */
export type users = $Result.DefaultSelection<Prisma.$usersPayload>
/**
 * Model parking_lot
 * 
 */
export type parking_lot = $Result.DefaultSelection<Prisma.$parking_lotPayload>
/**
 * Model pillar
 * 
 */
export type pillar = $Result.DefaultSelection<Prisma.$pillarPayload>
/**
 * Model directional_relationship
 * 
 */
export type directional_relationship = $Result.DefaultSelection<Prisma.$directional_relationshipPayload>
/**
 * Model advertisements
 * This table contains check constraints and requires additional setup for migrations. Visit https://pris.ly/d/check-constraints for more info.
 */
export type advertisements = $Result.DefaultSelection<Prisma.$advertisementsPayload>
/**
 * Model facilities
 * 
 */
export type facilities = $Result.DefaultSelection<Prisma.$facilitiesPayload>

/**
 * ##  Prisma Client ʲˢ
 *
 * Type-safe database client for TypeScript & Node.js
 * @example
 * ```
 * const prisma = new PrismaClient()
 * // Fetch zero or more Roles
 * const roles = await prisma.role.findMany()
 * ```
 *
 *
 * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client).
 */
export class PrismaClient<
  ClientOptions extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,
  U = 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never,
  ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs
> {
  [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }

    /**
   * ##  Prisma Client ʲˢ
   *
   * Type-safe database client for TypeScript & Node.js
   * @example
   * ```
   * const prisma = new PrismaClient()
   * // Fetch zero or more Roles
   * const roles = await prisma.role.findMany()
   * ```
   *
   *
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client).
   */

  constructor(optionsArg ?: Prisma.Subset<ClientOptions, Prisma.PrismaClientOptions>);
  $on<V extends U>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient;

  /**
   * Connect with the database
   */
  $connect(): $Utils.JsPromise<void>;

  /**
   * Disconnect from the database
   */
  $disconnect(): $Utils.JsPromise<void>;

  /**
   * Add a middleware
   * @deprecated since 4.16.0. For new code, prefer client extensions instead.
   * @see https://pris.ly/d/extensions
   */
  $use(cb: Prisma.Middleware): void

/**
   * Executes a prepared raw query and returns the number of affected rows.
   * @example
   * ```
   * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`
   * ```
   *
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Executes a raw query and returns the number of affected rows.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')
   * ```
   *
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;

  /**
   * Performs a prepared raw query and returns the `SELECT` data.
   * @example
   * ```
   * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`
   * ```
   *
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;

  /**
   * Performs a raw query and returns the `SELECT` data.
   * Susceptible to SQL injections, see documentation.
   * @example
   * ```
   * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')
   * ```
   *
   * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/raw-database-access).
   */
  $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;


  /**
   * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.
   * @example
   * ```
   * const [george, bob, alice] = await prisma.$transaction([
   *   prisma.user.create({ data: { name: 'George' } }),
   *   prisma.user.create({ data: { name: 'Bob' } }),
   *   prisma.user.create({ data: { name: 'Alice' } }),
   * ])
   * ```
   * 
   * Read more in our [docs](https://www.prisma.io/docs/concepts/components/prisma-client/transactions).
   */
  $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>

  $transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => $Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): $Utils.JsPromise<R>


  $extends: $Extensions.ExtendsHook<"extends", Prisma.TypeMapCb<ClientOptions>, ExtArgs, $Utils.Call<Prisma.TypeMapCb<ClientOptions>, {
    extArgs: ExtArgs
  }>>

      /**
   * `prisma.role`: Exposes CRUD operations for the **role** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Roles
    * const roles = await prisma.role.findMany()
    * ```
    */
  get role(): Prisma.roleDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.users`: Exposes CRUD operations for the **users** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Users
    * const users = await prisma.users.findMany()
    * ```
    */
  get users(): Prisma.usersDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.parking_lot`: Exposes CRUD operations for the **parking_lot** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Parking_lots
    * const parking_lots = await prisma.parking_lot.findMany()
    * ```
    */
  get parking_lot(): Prisma.parking_lotDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.pillar`: Exposes CRUD operations for the **pillar** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Pillars
    * const pillars = await prisma.pillar.findMany()
    * ```
    */
  get pillar(): Prisma.pillarDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.directional_relationship`: Exposes CRUD operations for the **directional_relationship** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Directional_relationships
    * const directional_relationships = await prisma.directional_relationship.findMany()
    * ```
    */
  get directional_relationship(): Prisma.directional_relationshipDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.advertisements`: Exposes CRUD operations for the **advertisements** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Advertisements
    * const advertisements = await prisma.advertisements.findMany()
    * ```
    */
  get advertisements(): Prisma.advertisementsDelegate<ExtArgs, ClientOptions>;

  /**
   * `prisma.facilities`: Exposes CRUD operations for the **facilities** model.
    * Example usage:
    * ```ts
    * // Fetch zero or more Facilities
    * const facilities = await prisma.facilities.findMany()
    * ```
    */
  get facilities(): Prisma.facilitiesDelegate<ExtArgs, ClientOptions>;
}

export namespace Prisma {
  export import DMMF = runtime.DMMF

  export type PrismaPromise<T> = $Public.PrismaPromise<T>

  /**
   * Validator
   */
  export import validator = runtime.Public.validator

  /**
   * Prisma Errors
   */
  export import PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError
  export import PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError
  export import PrismaClientRustPanicError = runtime.PrismaClientRustPanicError
  export import PrismaClientInitializationError = runtime.PrismaClientInitializationError
  export import PrismaClientValidationError = runtime.PrismaClientValidationError

  /**
   * Re-export of sql-template-tag
   */
  export import sql = runtime.sqltag
  export import empty = runtime.empty
  export import join = runtime.join
  export import raw = runtime.raw
  export import Sql = runtime.Sql



  /**
   * Decimal.js
   */
  export import Decimal = runtime.Decimal

  export type DecimalJsLike = runtime.DecimalJsLike

  /**
   * Metrics
   */
  export type Metrics = runtime.Metrics
  export type Metric<T> = runtime.Metric<T>
  export type MetricHistogram = runtime.MetricHistogram
  export type MetricHistogramBucket = runtime.MetricHistogramBucket

  /**
  * Extensions
  */
  export import Extension = $Extensions.UserArgs
  export import getExtensionContext = runtime.Extensions.getExtensionContext
  export import Args = $Public.Args
  export import Payload = $Public.Payload
  export import Result = $Public.Result
  export import Exact = $Public.Exact

  /**
   * Prisma Client JS version: 6.10.0
   * Query Engine version: aee10d5a411e4360c6d3445ce4810ca65adbf3e8
   */
  export type PrismaVersion = {
    client: string
  }

  export const prismaVersion: PrismaVersion

  /**
   * Utility Types
   */


  export import JsonObject = runtime.JsonObject
  export import JsonArray = runtime.JsonArray
  export import JsonValue = runtime.JsonValue
  export import InputJsonObject = runtime.InputJsonObject
  export import InputJsonArray = runtime.InputJsonArray
  export import InputJsonValue = runtime.InputJsonValue

  /**
   * Types of the values used to represent different kinds of `null` values when working with JSON fields.
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  namespace NullTypes {
    /**
    * Type of `Prisma.DbNull`.
    *
    * You cannot use other instances of this class. Please use the `Prisma.DbNull` value.
    *
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class DbNull {
      private DbNull: never
      private constructor()
    }

    /**
    * Type of `Prisma.JsonNull`.
    *
    * You cannot use other instances of this class. Please use the `Prisma.JsonNull` value.
    *
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class JsonNull {
      private JsonNull: never
      private constructor()
    }

    /**
    * Type of `Prisma.AnyNull`.
    *
    * You cannot use other instances of this class. Please use the `Prisma.AnyNull` value.
    *
    * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
    */
    class AnyNull {
      private AnyNull: never
      private constructor()
    }
  }

  /**
   * Helper for filtering JSON entries that have `null` on the database (empty on the db)
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  export const DbNull: NullTypes.DbNull

  /**
   * Helper for filtering JSON entries that have JSON `null` values (not empty on the db)
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  export const JsonNull: NullTypes.JsonNull

  /**
   * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull`
   *
   * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field
   */
  export const AnyNull: NullTypes.AnyNull

  type SelectAndInclude = {
    select: any
    include: any
  }

  type SelectAndOmit = {
    select: any
    omit: any
  }

  /**
   * Get the type of the value, that the Promise holds.
   */
  export type PromiseType<T extends PromiseLike<any>> = T extends PromiseLike<infer U> ? U : T;

  /**
   * Get the return type of a function which returns a Promise.
   */
  export type PromiseReturnType<T extends (...args: any) => $Utils.JsPromise<any>> = PromiseType<ReturnType<T>>

  /**
   * From T, pick a set of properties whose keys are in the union K
   */
  type Prisma__Pick<T, K extends keyof T> = {
      [P in K]: T[P];
  };


  export type Enumerable<T> = T | Array<T>;

  export type RequiredKeys<T> = {
    [K in keyof T]-?: {} extends Prisma__Pick<T, K> ? never : K
  }[keyof T]

  export type TruthyKeys<T> = keyof {
    [K in keyof T as T[K] extends false | undefined | null ? never : K]: K
  }

  export type TrueKeys<T> = TruthyKeys<Prisma__Pick<T, RequiredKeys<T>>>

  /**
   * Subset
   * @desc From `T` pick properties that exist in `U`. Simple version of Intersection
   */
  export type Subset<T, U> = {
    [key in keyof T]: key extends keyof U ? T[key] : never;
  };

  /**
   * SelectSubset
   * @desc From `T` pick properties that exist in `U`. Simple version of Intersection.
   * Additionally, it validates, if both select and include are present. If the case, it errors.
   */
  export type SelectSubset<T, U> = {
    [key in keyof T]: key extends keyof U ? T[key] : never
  } &
    (T extends SelectAndInclude
      ? 'Please either choose `select` or `include`.'
      : T extends SelectAndOmit
        ? 'Please either choose `select` or `omit`.'
        : {})

  /**
   * Subset + Intersection
   * @desc From `T` pick properties that exist in `U` and intersect `K`
   */
  export type SubsetIntersection<T, U, K> = {
    [key in keyof T]: key extends keyof U ? T[key] : never
  } &
    K

  type Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };

  /**
   * XOR is needed to have a real mutually exclusive union type
   * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types
   */
  type XOR<T, U> =
    T extends object ?
    U extends object ?
      (Without<T, U> & U) | (Without<U, T> & T)
    : U : T


  /**
   * Is T a Record?
   */
  type IsObject<T extends any> = T extends Array<any>
  ? False
  : T extends Date
  ? False
  : T extends Uint8Array
  ? False
  : T extends BigInt
  ? False
  : T extends object
  ? True
  : False


  /**
   * If it's T[], return T
   */
  export type UnEnumerate<T extends unknown> = T extends Array<infer U> ? U : T

  /**
   * From ts-toolbelt
   */

  type __Either<O extends object, K extends Key> = Omit<O, K> &
    {
      // Merge all but K
      [P in K]: Prisma__Pick<O, P & keyof O> // With K possibilities
    }[K]

  type EitherStrict<O extends object, K extends Key> = Strict<__Either<O, K>>

  type EitherLoose<O extends object, K extends Key> = ComputeRaw<__Either<O, K>>

  type _Either<
    O extends object,
    K extends Key,
    strict extends Boolean
  > = {
    1: EitherStrict<O, K>
    0: EitherLoose<O, K>
  }[strict]

  type Either<
    O extends object,
    K extends Key,
    strict extends Boolean = 1
  > = O extends unknown ? _Either<O, K, strict> : never

  export type Union = any

  type PatchUndefined<O extends object, O1 extends object> = {
    [K in keyof O]: O[K] extends undefined ? At<O1, K> : O[K]
  } & {}

  /** Helper Types for "Merge" **/
  export type IntersectOf<U extends Union> = (
    U extends unknown ? (k: U) => void : never
  ) extends (k: infer I) => void
    ? I
    : never

  export type Overwrite<O extends object, O1 extends object> = {
      [K in keyof O]: K extends keyof O1 ? O1[K] : O[K];
  } & {};

  type _Merge<U extends object> = IntersectOf<Overwrite<U, {
      [K in keyof U]-?: At<U, K>;
  }>>;

  type Key = string | number | symbol;
  type AtBasic<O extends object, K extends Key> = K extends keyof O ? O[K] : never;
  type AtStrict<O extends object, K extends Key> = O[K & keyof O];
  type AtLoose<O extends object, K extends Key> = O extends unknown ? AtStrict<O, K> : never;
  export type At<O extends object, K extends Key, strict extends Boolean = 1> = {
      1: AtStrict<O, K>;
      0: AtLoose<O, K>;
  }[strict];

  export type ComputeRaw<A extends any> = A extends Function ? A : {
    [K in keyof A]: A[K];
  } & {};

  export type OptionalFlat<O> = {
    [K in keyof O]?: O[K];
  } & {};

  type _Record<K extends keyof any, T> = {
    [P in K]: T;
  };

  // cause typescript not to expand types and preserve names
  type NoExpand<T> = T extends unknown ? T : never;

  // this type assumes the passed object is entirely optional
  type AtLeast<O extends object, K extends string> = NoExpand<
    O extends unknown
    ? | (K extends keyof O ? { [P in K]: O[P] } & O : O)
      | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O
    : never>;

  type _Strict<U, _U = U> = U extends unknown ? U & OptionalFlat<_Record<Exclude<Keys<_U>, keyof U>, never>> : never;

  export type Strict<U extends object> = ComputeRaw<_Strict<U>>;
  /** End Helper Types for "Merge" **/

  export type Merge<U extends object> = ComputeRaw<_Merge<Strict<U>>>;

  /**
  A [[Boolean]]
  */
  export type Boolean = True | False

  // /**
  // 1
  // */
  export type True = 1

  /**
  0
  */
  export type False = 0

  export type Not<B extends Boolean> = {
    0: 1
    1: 0
  }[B]

  export type Extends<A1 extends any, A2 extends any> = [A1] extends [never]
    ? 0 // anything `never` is false
    : A1 extends A2
    ? 1
    : 0

  export type Has<U extends Union, U1 extends Union> = Not<
    Extends<Exclude<U1, U>, U1>
  >

  export type Or<B1 extends Boolean, B2 extends Boolean> = {
    0: {
      0: 0
      1: 1
    }
    1: {
      0: 1
      1: 1
    }
  }[B1][B2]

  export type Keys<U extends Union> = U extends unknown ? keyof U : never

  type Cast<A, B> = A extends B ? A : B;

  export const type: unique symbol;



  /**
   * Used by group by
   */

  export type GetScalarType<T, O> = O extends object ? {
    [P in keyof T]: P extends keyof O
      ? O[P]
      : never
  } : never

  type FieldPaths<
    T,
    U = Omit<T, '_avg' | '_sum' | '_count' | '_min' | '_max'>
  > = IsObject<T> extends True ? U : T

  type GetHavingFields<T> = {
    [K in keyof T]: Or<
      Or<Extends<'OR', K>, Extends<'AND', K>>,
      Extends<'NOT', K>
    > extends True
      ? // infer is only needed to not hit TS limit
        // based on the brilliant idea of Pierre-Antoine Mills
        // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437
        T[K] extends infer TK
        ? GetHavingFields<UnEnumerate<TK> extends object ? Merge<UnEnumerate<TK>> : never>
        : never
      : {} extends FieldPaths<T[K]>
      ? never
      : K
  }[keyof T]

  /**
   * Convert tuple to union
   */
  type _TupleToUnion<T> = T extends (infer E)[] ? E : never
  type TupleToUnion<K extends readonly any[]> = _TupleToUnion<K>
  type MaybeTupleToUnion<T> = T extends any[] ? TupleToUnion<T> : T

  /**
   * Like `Pick`, but additionally can also accept an array of keys
   */
  type PickEnumerable<T, K extends Enumerable<keyof T> | keyof T> = Prisma__Pick<T, MaybeTupleToUnion<K>>

  /**
   * Exclude all keys with underscores
   */
  type ExcludeUnderscoreKeys<T extends string> = T extends `_${string}` ? never : T


  export type FieldRef<Model, FieldType> = runtime.FieldRef<Model, FieldType>

  type FieldRefInputType<Model, FieldType> = Model extends never ? never : FieldRef<Model, FieldType>


  export const ModelName: {
    role: 'role',
    users: 'users',
    parking_lot: 'parking_lot',
    pillar: 'pillar',
    directional_relationship: 'directional_relationship',
    advertisements: 'advertisements',
    facilities: 'facilities'
  };

  export type ModelName = (typeof ModelName)[keyof typeof ModelName]


  export type Datasources = {
    db?: Datasource
  }

  interface TypeMapCb<ClientOptions = {}> extends $Utils.Fn<{extArgs: $Extensions.InternalArgs }, $Utils.Record<string, any>> {
    returns: Prisma.TypeMap<this['params']['extArgs'], ClientOptions extends { omit: infer OmitOptions } ? OmitOptions : {}>
  }

  export type TypeMap<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> = {
    globalOmitOptions: {
      omit: GlobalOmitOptions
    }
    meta: {
      modelProps: "role" | "users" | "parking_lot" | "pillar" | "directional_relationship" | "advertisements" | "facilities"
      txIsolationLevel: Prisma.TransactionIsolationLevel
    }
    model: {
      role: {
        payload: Prisma.$rolePayload<ExtArgs>
        fields: Prisma.roleFieldRefs
        operations: {
          findUnique: {
            args: Prisma.roleFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.roleFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>
          }
          findFirst: {
            args: Prisma.roleFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.roleFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>
          }
          findMany: {
            args: Prisma.roleFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>[]
          }
          create: {
            args: Prisma.roleCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>
          }
          createMany: {
            args: Prisma.roleCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.roleCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>[]
          }
          delete: {
            args: Prisma.roleDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>
          }
          update: {
            args: Prisma.roleUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>
          }
          deleteMany: {
            args: Prisma.roleDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.roleUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.roleUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>[]
          }
          upsert: {
            args: Prisma.roleUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$rolePayload>
          }
          aggregate: {
            args: Prisma.RoleAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateRole>
          }
          groupBy: {
            args: Prisma.roleGroupByArgs<ExtArgs>
            result: $Utils.Optional<RoleGroupByOutputType>[]
          }
          count: {
            args: Prisma.roleCountArgs<ExtArgs>
            result: $Utils.Optional<RoleCountAggregateOutputType> | number
          }
        }
      }
      users: {
        payload: Prisma.$usersPayload<ExtArgs>
        fields: Prisma.usersFieldRefs
        operations: {
          findUnique: {
            args: Prisma.usersFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.usersFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>
          }
          findFirst: {
            args: Prisma.usersFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.usersFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>
          }
          findMany: {
            args: Prisma.usersFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>[]
          }
          create: {
            args: Prisma.usersCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>
          }
          createMany: {
            args: Prisma.usersCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.usersCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>[]
          }
          delete: {
            args: Prisma.usersDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>
          }
          update: {
            args: Prisma.usersUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>
          }
          deleteMany: {
            args: Prisma.usersDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.usersUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.usersUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>[]
          }
          upsert: {
            args: Prisma.usersUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$usersPayload>
          }
          aggregate: {
            args: Prisma.UsersAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateUsers>
          }
          groupBy: {
            args: Prisma.usersGroupByArgs<ExtArgs>
            result: $Utils.Optional<UsersGroupByOutputType>[]
          }
          count: {
            args: Prisma.usersCountArgs<ExtArgs>
            result: $Utils.Optional<UsersCountAggregateOutputType> | number
          }
        }
      }
      parking_lot: {
        payload: Prisma.$parking_lotPayload<ExtArgs>
        fields: Prisma.parking_lotFieldRefs
        operations: {
          findUnique: {
            args: Prisma.parking_lotFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.parking_lotFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>
          }
          findFirst: {
            args: Prisma.parking_lotFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.parking_lotFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>
          }
          findMany: {
            args: Prisma.parking_lotFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>[]
          }
          create: {
            args: Prisma.parking_lotCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>
          }
          createMany: {
            args: Prisma.parking_lotCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.parking_lotCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>[]
          }
          delete: {
            args: Prisma.parking_lotDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>
          }
          update: {
            args: Prisma.parking_lotUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>
          }
          deleteMany: {
            args: Prisma.parking_lotDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.parking_lotUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.parking_lotUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>[]
          }
          upsert: {
            args: Prisma.parking_lotUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$parking_lotPayload>
          }
          aggregate: {
            args: Prisma.Parking_lotAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateParking_lot>
          }
          groupBy: {
            args: Prisma.parking_lotGroupByArgs<ExtArgs>
            result: $Utils.Optional<Parking_lotGroupByOutputType>[]
          }
          count: {
            args: Prisma.parking_lotCountArgs<ExtArgs>
            result: $Utils.Optional<Parking_lotCountAggregateOutputType> | number
          }
        }
      }
      pillar: {
        payload: Prisma.$pillarPayload<ExtArgs>
        fields: Prisma.pillarFieldRefs
        operations: {
          findUnique: {
            args: Prisma.pillarFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.pillarFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>
          }
          findFirst: {
            args: Prisma.pillarFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.pillarFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>
          }
          findMany: {
            args: Prisma.pillarFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>[]
          }
          create: {
            args: Prisma.pillarCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>
          }
          createMany: {
            args: Prisma.pillarCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.pillarCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>[]
          }
          delete: {
            args: Prisma.pillarDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>
          }
          update: {
            args: Prisma.pillarUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>
          }
          deleteMany: {
            args: Prisma.pillarDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.pillarUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.pillarUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>[]
          }
          upsert: {
            args: Prisma.pillarUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$pillarPayload>
          }
          aggregate: {
            args: Prisma.PillarAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregatePillar>
          }
          groupBy: {
            args: Prisma.pillarGroupByArgs<ExtArgs>
            result: $Utils.Optional<PillarGroupByOutputType>[]
          }
          count: {
            args: Prisma.pillarCountArgs<ExtArgs>
            result: $Utils.Optional<PillarCountAggregateOutputType> | number
          }
        }
      }
      directional_relationship: {
        payload: Prisma.$directional_relationshipPayload<ExtArgs>
        fields: Prisma.directional_relationshipFieldRefs
        operations: {
          findUnique: {
            args: Prisma.directional_relationshipFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.directional_relationshipFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>
          }
          findFirst: {
            args: Prisma.directional_relationshipFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.directional_relationshipFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>
          }
          findMany: {
            args: Prisma.directional_relationshipFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>[]
          }
          create: {
            args: Prisma.directional_relationshipCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>
          }
          createMany: {
            args: Prisma.directional_relationshipCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.directional_relationshipCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>[]
          }
          delete: {
            args: Prisma.directional_relationshipDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>
          }
          update: {
            args: Prisma.directional_relationshipUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>
          }
          deleteMany: {
            args: Prisma.directional_relationshipDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.directional_relationshipUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.directional_relationshipUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>[]
          }
          upsert: {
            args: Prisma.directional_relationshipUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$directional_relationshipPayload>
          }
          aggregate: {
            args: Prisma.Directional_relationshipAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateDirectional_relationship>
          }
          groupBy: {
            args: Prisma.directional_relationshipGroupByArgs<ExtArgs>
            result: $Utils.Optional<Directional_relationshipGroupByOutputType>[]
          }
          count: {
            args: Prisma.directional_relationshipCountArgs<ExtArgs>
            result: $Utils.Optional<Directional_relationshipCountAggregateOutputType> | number
          }
        }
      }
      advertisements: {
        payload: Prisma.$advertisementsPayload<ExtArgs>
        fields: Prisma.advertisementsFieldRefs
        operations: {
          findUnique: {
            args: Prisma.advertisementsFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.advertisementsFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>
          }
          findFirst: {
            args: Prisma.advertisementsFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.advertisementsFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>
          }
          findMany: {
            args: Prisma.advertisementsFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>[]
          }
          create: {
            args: Prisma.advertisementsCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>
          }
          createMany: {
            args: Prisma.advertisementsCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.advertisementsCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>[]
          }
          delete: {
            args: Prisma.advertisementsDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>
          }
          update: {
            args: Prisma.advertisementsUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>
          }
          deleteMany: {
            args: Prisma.advertisementsDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.advertisementsUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.advertisementsUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>[]
          }
          upsert: {
            args: Prisma.advertisementsUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$advertisementsPayload>
          }
          aggregate: {
            args: Prisma.AdvertisementsAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateAdvertisements>
          }
          groupBy: {
            args: Prisma.advertisementsGroupByArgs<ExtArgs>
            result: $Utils.Optional<AdvertisementsGroupByOutputType>[]
          }
          count: {
            args: Prisma.advertisementsCountArgs<ExtArgs>
            result: $Utils.Optional<AdvertisementsCountAggregateOutputType> | number
          }
        }
      }
      facilities: {
        payload: Prisma.$facilitiesPayload<ExtArgs>
        fields: Prisma.facilitiesFieldRefs
        operations: {
          findUnique: {
            args: Prisma.facilitiesFindUniqueArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload> | null
          }
          findUniqueOrThrow: {
            args: Prisma.facilitiesFindUniqueOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>
          }
          findFirst: {
            args: Prisma.facilitiesFindFirstArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload> | null
          }
          findFirstOrThrow: {
            args: Prisma.facilitiesFindFirstOrThrowArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>
          }
          findMany: {
            args: Prisma.facilitiesFindManyArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>[]
          }
          create: {
            args: Prisma.facilitiesCreateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>
          }
          createMany: {
            args: Prisma.facilitiesCreateManyArgs<ExtArgs>
            result: BatchPayload
          }
          createManyAndReturn: {
            args: Prisma.facilitiesCreateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>[]
          }
          delete: {
            args: Prisma.facilitiesDeleteArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>
          }
          update: {
            args: Prisma.facilitiesUpdateArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>
          }
          deleteMany: {
            args: Prisma.facilitiesDeleteManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateMany: {
            args: Prisma.facilitiesUpdateManyArgs<ExtArgs>
            result: BatchPayload
          }
          updateManyAndReturn: {
            args: Prisma.facilitiesUpdateManyAndReturnArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>[]
          }
          upsert: {
            args: Prisma.facilitiesUpsertArgs<ExtArgs>
            result: $Utils.PayloadToResult<Prisma.$facilitiesPayload>
          }
          aggregate: {
            args: Prisma.FacilitiesAggregateArgs<ExtArgs>
            result: $Utils.Optional<AggregateFacilities>
          }
          groupBy: {
            args: Prisma.facilitiesGroupByArgs<ExtArgs>
            result: $Utils.Optional<FacilitiesGroupByOutputType>[]
          }
          count: {
            args: Prisma.facilitiesCountArgs<ExtArgs>
            result: $Utils.Optional<FacilitiesCountAggregateOutputType> | number
          }
        }
      }
    }
  } & {
    other: {
      payload: any
      operations: {
        $executeRaw: {
          args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]],
          result: any
        }
        $executeRawUnsafe: {
          args: [query: string, ...values: any[]],
          result: any
        }
        $queryRaw: {
          args: [query: TemplateStringsArray | Prisma.Sql, ...values: any[]],
          result: any
        }
        $queryRawUnsafe: {
          args: [query: string, ...values: any[]],
          result: any
        }
      }
    }
  }
  export const defineExtension: $Extensions.ExtendsHook<"define", Prisma.TypeMapCb, $Extensions.DefaultArgs>
  export type DefaultPrismaClient = PrismaClient
  export type ErrorFormat = 'pretty' | 'colorless' | 'minimal'
  export interface PrismaClientOptions {
    /**
     * Overwrites the datasource url from your schema.prisma file
     */
    datasources?: Datasources
    /**
     * Overwrites the datasource url from your schema.prisma file
     */
    datasourceUrl?: string
    /**
     * @default "colorless"
     */
    errorFormat?: ErrorFormat
    /**
     * @example
     * ```
     * // Defaults to stdout
     * log: ['query', 'info', 'warn', 'error']
     * 
     * // Emit as events
     * log: [
     *   { emit: 'stdout', level: 'query' },
     *   { emit: 'stdout', level: 'info' },
     *   { emit: 'stdout', level: 'warn' }
     *   { emit: 'stdout', level: 'error' }
     * ]
     * ```
     * Read more in our [docs](https://www.prisma.io/docs/reference/tools-and-interfaces/prisma-client/logging#the-log-option).
     */
    log?: (LogLevel | LogDefinition)[]
    /**
     * The default values for transactionOptions
     * maxWait ?= 2000
     * timeout ?= 5000
     */
    transactionOptions?: {
      maxWait?: number
      timeout?: number
      isolationLevel?: Prisma.TransactionIsolationLevel
    }
    /**
     * Global configuration for omitting model fields by default.
     * 
     * @example
     * ```
     * const prisma = new PrismaClient({
     *   omit: {
     *     user: {
     *       password: true
     *     }
     *   }
     * })
     * ```
     */
    omit?: Prisma.GlobalOmitConfig
  }
  export type GlobalOmitConfig = {
    role?: roleOmit
    users?: usersOmit
    parking_lot?: parking_lotOmit
    pillar?: pillarOmit
    directional_relationship?: directional_relationshipOmit
    advertisements?: advertisementsOmit
    facilities?: facilitiesOmit
  }

  /* Types for Logging */
  export type LogLevel = 'info' | 'query' | 'warn' | 'error'
  export type LogDefinition = {
    level: LogLevel
    emit: 'stdout' | 'event'
  }

  export type GetLogType<T extends LogLevel | LogDefinition> = T extends LogDefinition ? T['emit'] extends 'event' ? T['level'] : never : never
  export type GetEvents<T extends any> = T extends Array<LogLevel | LogDefinition> ?
    GetLogType<T[0]> | GetLogType<T[1]> | GetLogType<T[2]> | GetLogType<T[3]>
    : never

  export type QueryEvent = {
    timestamp: Date
    query: string
    params: string
    duration: number
    target: string
  }

  export type LogEvent = {
    timestamp: Date
    message: string
    target: string
  }
  /* End Types for Logging */


  export type PrismaAction =
    | 'findUnique'
    | 'findUniqueOrThrow'
    | 'findMany'
    | 'findFirst'
    | 'findFirstOrThrow'
    | 'create'
    | 'createMany'
    | 'createManyAndReturn'
    | 'update'
    | 'updateMany'
    | 'updateManyAndReturn'
    | 'upsert'
    | 'delete'
    | 'deleteMany'
    | 'executeRaw'
    | 'queryRaw'
    | 'aggregate'
    | 'count'
    | 'runCommandRaw'
    | 'findRaw'
    | 'groupBy'

  /**
   * These options are being passed into the middleware as "params"
   */
  export type MiddlewareParams = {
    model?: ModelName
    action: PrismaAction
    args: any
    dataPath: string[]
    runInTransaction: boolean
  }

  /**
   * The `T` type makes sure, that the `return proceed` is not forgotten in the middleware implementation
   */
  export type Middleware<T = any> = (
    params: MiddlewareParams,
    next: (params: MiddlewareParams) => $Utils.JsPromise<T>,
  ) => $Utils.JsPromise<T>

  // tested in getLogLevel.test.ts
  export function getLogLevel(log: Array<LogLevel | LogDefinition>): LogLevel | undefined;

  /**
   * `PrismaClient` proxy available in interactive transactions.
   */
  export type TransactionClient = Omit<Prisma.DefaultPrismaClient, runtime.ITXClientDenyList>

  export type Datasource = {
    url?: string
  }

  /**
   * Count Types
   */


  /**
   * Count Type RoleCountOutputType
   */

  export type RoleCountOutputType = {
    users: number
  }

  export type RoleCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    users?: boolean | RoleCountOutputTypeCountUsersArgs
  }

  // Custom InputTypes
  /**
   * RoleCountOutputType without action
   */
  export type RoleCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the RoleCountOutputType
     */
    select?: RoleCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * RoleCountOutputType without action
   */
  export type RoleCountOutputTypeCountUsersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: usersWhereInput
  }


  /**
   * Count Type UsersCountOutputType
   */

  export type UsersCountOutputType = {
    parking_lot: number
  }

  export type UsersCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    parking_lot?: boolean | UsersCountOutputTypeCountParking_lotArgs
  }

  // Custom InputTypes
  /**
   * UsersCountOutputType without action
   */
  export type UsersCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the UsersCountOutputType
     */
    select?: UsersCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * UsersCountOutputType without action
   */
  export type UsersCountOutputTypeCountParking_lotArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: parking_lotWhereInput
  }


  /**
   * Count Type Parking_lotCountOutputType
   */

  export type Parking_lotCountOutputType = {
    advertisements: number
    pillar: number
  }

  export type Parking_lotCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    advertisements?: boolean | Parking_lotCountOutputTypeCountAdvertisementsArgs
    pillar?: boolean | Parking_lotCountOutputTypeCountPillarArgs
  }

  // Custom InputTypes
  /**
   * Parking_lotCountOutputType without action
   */
  export type Parking_lotCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the Parking_lotCountOutputType
     */
    select?: Parking_lotCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * Parking_lotCountOutputType without action
   */
  export type Parking_lotCountOutputTypeCountAdvertisementsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: advertisementsWhereInput
  }

  /**
   * Parking_lotCountOutputType without action
   */
  export type Parking_lotCountOutputTypeCountPillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: pillarWhereInput
  }


  /**
   * Count Type PillarCountOutputType
   */

  export type PillarCountOutputType = {
    directional_relationship_directional_relationship_from_pillar_idTopillar: number
    directional_relationship_directional_relationship_to_pillar_idTopillar: number
  }

  export type PillarCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    directional_relationship_directional_relationship_from_pillar_idTopillar?: boolean | PillarCountOutputTypeCountDirectional_relationship_directional_relationship_from_pillar_idTopillarArgs
    directional_relationship_directional_relationship_to_pillar_idTopillar?: boolean | PillarCountOutputTypeCountDirectional_relationship_directional_relationship_to_pillar_idTopillarArgs
  }

  // Custom InputTypes
  /**
   * PillarCountOutputType without action
   */
  export type PillarCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the PillarCountOutputType
     */
    select?: PillarCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * PillarCountOutputType without action
   */
  export type PillarCountOutputTypeCountDirectional_relationship_directional_relationship_from_pillar_idTopillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: directional_relationshipWhereInput
  }

  /**
   * PillarCountOutputType without action
   */
  export type PillarCountOutputTypeCountDirectional_relationship_directional_relationship_to_pillar_idTopillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: directional_relationshipWhereInput
  }


  /**
   * Count Type FacilitiesCountOutputType
   */

  export type FacilitiesCountOutputType = {
    advertisements: number
  }

  export type FacilitiesCountOutputTypeSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    advertisements?: boolean | FacilitiesCountOutputTypeCountAdvertisementsArgs
  }

  // Custom InputTypes
  /**
   * FacilitiesCountOutputType without action
   */
  export type FacilitiesCountOutputTypeDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the FacilitiesCountOutputType
     */
    select?: FacilitiesCountOutputTypeSelect<ExtArgs> | null
  }

  /**
   * FacilitiesCountOutputType without action
   */
  export type FacilitiesCountOutputTypeCountAdvertisementsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: advertisementsWhereInput
  }


  /**
   * Models
   */

  /**
   * Model role
   */

  export type AggregateRole = {
    _count: RoleCountAggregateOutputType | null
    _min: RoleMinAggregateOutputType | null
    _max: RoleMaxAggregateOutputType | null
  }

  export type RoleMinAggregateOutputType = {
    role_id: string | null
    role_name: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type RoleMaxAggregateOutputType = {
    role_id: string | null
    role_name: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type RoleCountAggregateOutputType = {
    role_id: number
    role_name: number
    status: number
    created_at: number
    updated_at: number
    _all: number
  }


  export type RoleMinAggregateInputType = {
    role_id?: true
    role_name?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type RoleMaxAggregateInputType = {
    role_id?: true
    role_name?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type RoleCountAggregateInputType = {
    role_id?: true
    role_name?: true
    status?: true
    created_at?: true
    updated_at?: true
    _all?: true
  }

  export type RoleAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which role to aggregate.
     */
    where?: roleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of roles to fetch.
     */
    orderBy?: roleOrderByWithRelationInput | roleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: roleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` roles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned roles
    **/
    _count?: true | RoleCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: RoleMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: RoleMaxAggregateInputType
  }

  export type GetRoleAggregateType<T extends RoleAggregateArgs> = {
        [P in keyof T & keyof AggregateRole]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateRole[P]>
      : GetScalarType<T[P], AggregateRole[P]>
  }




  export type roleGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: roleWhereInput
    orderBy?: roleOrderByWithAggregationInput | roleOrderByWithAggregationInput[]
    by: RoleScalarFieldEnum[] | RoleScalarFieldEnum
    having?: roleScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: RoleCountAggregateInputType | true
    _min?: RoleMinAggregateInputType
    _max?: RoleMaxAggregateInputType
  }

  export type RoleGroupByOutputType = {
    role_id: string
    role_name: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    _count: RoleCountAggregateOutputType | null
    _min: RoleMinAggregateOutputType | null
    _max: RoleMaxAggregateOutputType | null
  }

  type GetRoleGroupByPayload<T extends roleGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<RoleGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof RoleGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], RoleGroupByOutputType[P]>
            : GetScalarType<T[P], RoleGroupByOutputType[P]>
        }
      >
    >


  export type roleSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    role_id?: boolean
    role_name?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    users?: boolean | role$usersArgs<ExtArgs>
    _count?: boolean | RoleCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["role"]>

  export type roleSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    role_id?: boolean
    role_name?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }, ExtArgs["result"]["role"]>

  export type roleSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    role_id?: boolean
    role_name?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }, ExtArgs["result"]["role"]>

  export type roleSelectScalar = {
    role_id?: boolean
    role_name?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }

  export type roleOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"role_id" | "role_name" | "status" | "created_at" | "updated_at", ExtArgs["result"]["role"]>
  export type roleInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    users?: boolean | role$usersArgs<ExtArgs>
    _count?: boolean | RoleCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type roleIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}
  export type roleIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}

  export type $rolePayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "role"
    objects: {
      users: Prisma.$usersPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      role_id: string
      role_name: string | null
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
    }, ExtArgs["result"]["role"]>
    composites: {}
  }

  type roleGetPayload<S extends boolean | null | undefined | roleDefaultArgs> = $Result.GetResult<Prisma.$rolePayload, S>

  type roleCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<roleFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: RoleCountAggregateInputType | true
    }

  export interface roleDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['role'], meta: { name: 'role' } }
    /**
     * Find zero or one Role that matches the filter.
     * @param {roleFindUniqueArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends roleFindUniqueArgs>(args: SelectSubset<T, roleFindUniqueArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Role that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {roleFindUniqueOrThrowArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends roleFindUniqueOrThrowArgs>(args: SelectSubset<T, roleFindUniqueOrThrowArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Role that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {roleFindFirstArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends roleFindFirstArgs>(args?: SelectSubset<T, roleFindFirstArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Role that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {roleFindFirstOrThrowArgs} args - Arguments to find a Role
     * @example
     * // Get one Role
     * const role = await prisma.role.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends roleFindFirstOrThrowArgs>(args?: SelectSubset<T, roleFindFirstOrThrowArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Roles that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {roleFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Roles
     * const roles = await prisma.role.findMany()
     * 
     * // Get first 10 Roles
     * const roles = await prisma.role.findMany({ take: 10 })
     * 
     * // Only select the `role_id`
     * const roleWithRole_idOnly = await prisma.role.findMany({ select: { role_id: true } })
     * 
     */
    findMany<T extends roleFindManyArgs>(args?: SelectSubset<T, roleFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Role.
     * @param {roleCreateArgs} args - Arguments to create a Role.
     * @example
     * // Create one Role
     * const Role = await prisma.role.create({
     *   data: {
     *     // ... data to create a Role
     *   }
     * })
     * 
     */
    create<T extends roleCreateArgs>(args: SelectSubset<T, roleCreateArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Roles.
     * @param {roleCreateManyArgs} args - Arguments to create many Roles.
     * @example
     * // Create many Roles
     * const role = await prisma.role.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends roleCreateManyArgs>(args?: SelectSubset<T, roleCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Roles and returns the data saved in the database.
     * @param {roleCreateManyAndReturnArgs} args - Arguments to create many Roles.
     * @example
     * // Create many Roles
     * const role = await prisma.role.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Roles and only return the `role_id`
     * const roleWithRole_idOnly = await prisma.role.createManyAndReturn({
     *   select: { role_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends roleCreateManyAndReturnArgs>(args?: SelectSubset<T, roleCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Role.
     * @param {roleDeleteArgs} args - Arguments to delete one Role.
     * @example
     * // Delete one Role
     * const Role = await prisma.role.delete({
     *   where: {
     *     // ... filter to delete one Role
     *   }
     * })
     * 
     */
    delete<T extends roleDeleteArgs>(args: SelectSubset<T, roleDeleteArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Role.
     * @param {roleUpdateArgs} args - Arguments to update one Role.
     * @example
     * // Update one Role
     * const role = await prisma.role.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends roleUpdateArgs>(args: SelectSubset<T, roleUpdateArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Roles.
     * @param {roleDeleteManyArgs} args - Arguments to filter Roles to delete.
     * @example
     * // Delete a few Roles
     * const { count } = await prisma.role.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends roleDeleteManyArgs>(args?: SelectSubset<T, roleDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Roles.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {roleUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Roles
     * const role = await prisma.role.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends roleUpdateManyArgs>(args: SelectSubset<T, roleUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Roles and returns the data updated in the database.
     * @param {roleUpdateManyAndReturnArgs} args - Arguments to update many Roles.
     * @example
     * // Update many Roles
     * const role = await prisma.role.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Roles and only return the `role_id`
     * const roleWithRole_idOnly = await prisma.role.updateManyAndReturn({
     *   select: { role_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends roleUpdateManyAndReturnArgs>(args: SelectSubset<T, roleUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Role.
     * @param {roleUpsertArgs} args - Arguments to update or create a Role.
     * @example
     * // Update or create a Role
     * const role = await prisma.role.upsert({
     *   create: {
     *     // ... data to create a Role
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Role we want to update
     *   }
     * })
     */
    upsert<T extends roleUpsertArgs>(args: SelectSubset<T, roleUpsertArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Roles.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {roleCountArgs} args - Arguments to filter Roles to count.
     * @example
     * // Count the number of Roles
     * const count = await prisma.role.count({
     *   where: {
     *     // ... the filter for the Roles we want to count
     *   }
     * })
    **/
    count<T extends roleCountArgs>(
      args?: Subset<T, roleCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], RoleCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Role.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {RoleAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends RoleAggregateArgs>(args: Subset<T, RoleAggregateArgs>): Prisma.PrismaPromise<GetRoleAggregateType<T>>

    /**
     * Group by Role.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {roleGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends roleGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: roleGroupByArgs['orderBy'] }
        : { orderBy?: roleGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, roleGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetRoleGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the role model
   */
  readonly fields: roleFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for role.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__roleClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    users<T extends role$usersArgs<ExtArgs> = {}>(args?: Subset<T, role$usersArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the role model
   */
  interface roleFieldRefs {
    readonly role_id: FieldRef<"role", 'String'>
    readonly role_name: FieldRef<"role", 'String'>
    readonly status: FieldRef<"role", 'Boolean'>
    readonly created_at: FieldRef<"role", 'DateTime'>
    readonly updated_at: FieldRef<"role", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * role findUnique
   */
  export type roleFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * Filter, which role to fetch.
     */
    where: roleWhereUniqueInput
  }

  /**
   * role findUniqueOrThrow
   */
  export type roleFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * Filter, which role to fetch.
     */
    where: roleWhereUniqueInput
  }

  /**
   * role findFirst
   */
  export type roleFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * Filter, which role to fetch.
     */
    where?: roleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of roles to fetch.
     */
    orderBy?: roleOrderByWithRelationInput | roleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for roles.
     */
    cursor?: roleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` roles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of roles.
     */
    distinct?: RoleScalarFieldEnum | RoleScalarFieldEnum[]
  }

  /**
   * role findFirstOrThrow
   */
  export type roleFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * Filter, which role to fetch.
     */
    where?: roleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of roles to fetch.
     */
    orderBy?: roleOrderByWithRelationInput | roleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for roles.
     */
    cursor?: roleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` roles.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of roles.
     */
    distinct?: RoleScalarFieldEnum | RoleScalarFieldEnum[]
  }

  /**
   * role findMany
   */
  export type roleFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * Filter, which roles to fetch.
     */
    where?: roleWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of roles to fetch.
     */
    orderBy?: roleOrderByWithRelationInput | roleOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing roles.
     */
    cursor?: roleWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` roles from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` roles.
     */
    skip?: number
    distinct?: RoleScalarFieldEnum | RoleScalarFieldEnum[]
  }

  /**
   * role create
   */
  export type roleCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * The data needed to create a role.
     */
    data?: XOR<roleCreateInput, roleUncheckedCreateInput>
  }

  /**
   * role createMany
   */
  export type roleCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many roles.
     */
    data: roleCreateManyInput | roleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * role createManyAndReturn
   */
  export type roleCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * The data used to create many roles.
     */
    data: roleCreateManyInput | roleCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * role update
   */
  export type roleUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * The data needed to update a role.
     */
    data: XOR<roleUpdateInput, roleUncheckedUpdateInput>
    /**
     * Choose, which role to update.
     */
    where: roleWhereUniqueInput
  }

  /**
   * role updateMany
   */
  export type roleUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update roles.
     */
    data: XOR<roleUpdateManyMutationInput, roleUncheckedUpdateManyInput>
    /**
     * Filter which roles to update
     */
    where?: roleWhereInput
    /**
     * Limit how many roles to update.
     */
    limit?: number
  }

  /**
   * role updateManyAndReturn
   */
  export type roleUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * The data used to update roles.
     */
    data: XOR<roleUpdateManyMutationInput, roleUncheckedUpdateManyInput>
    /**
     * Filter which roles to update
     */
    where?: roleWhereInput
    /**
     * Limit how many roles to update.
     */
    limit?: number
  }

  /**
   * role upsert
   */
  export type roleUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * The filter to search for the role to update in case it exists.
     */
    where: roleWhereUniqueInput
    /**
     * In case the role found by the `where` argument doesn't exist, create a new role with this data.
     */
    create: XOR<roleCreateInput, roleUncheckedCreateInput>
    /**
     * In case the role was found with the provided `where` argument, update it with this data.
     */
    update: XOR<roleUpdateInput, roleUncheckedUpdateInput>
  }

  /**
   * role delete
   */
  export type roleDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    /**
     * Filter which role to delete.
     */
    where: roleWhereUniqueInput
  }

  /**
   * role deleteMany
   */
  export type roleDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which roles to delete
     */
    where?: roleWhereInput
    /**
     * Limit how many roles to delete.
     */
    limit?: number
  }

  /**
   * role.users
   */
  export type role$usersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    where?: usersWhereInput
    orderBy?: usersOrderByWithRelationInput | usersOrderByWithRelationInput[]
    cursor?: usersWhereUniqueInput
    take?: number
    skip?: number
    distinct?: UsersScalarFieldEnum | UsersScalarFieldEnum[]
  }

  /**
   * role without action
   */
  export type roleDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
  }


  /**
   * Model users
   */

  export type AggregateUsers = {
    _count: UsersCountAggregateOutputType | null
    _min: UsersMinAggregateOutputType | null
    _max: UsersMaxAggregateOutputType | null
  }

  export type UsersMinAggregateOutputType = {
    user_id: string | null
    first_name: string | null
    last_name: string | null
    email: string | null
    password: string | null
    role_id: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type UsersMaxAggregateOutputType = {
    user_id: string | null
    first_name: string | null
    last_name: string | null
    email: string | null
    password: string | null
    role_id: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type UsersCountAggregateOutputType = {
    user_id: number
    first_name: number
    last_name: number
    email: number
    password: number
    role_id: number
    status: number
    created_at: number
    updated_at: number
    _all: number
  }


  export type UsersMinAggregateInputType = {
    user_id?: true
    first_name?: true
    last_name?: true
    email?: true
    password?: true
    role_id?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type UsersMaxAggregateInputType = {
    user_id?: true
    first_name?: true
    last_name?: true
    email?: true
    password?: true
    role_id?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type UsersCountAggregateInputType = {
    user_id?: true
    first_name?: true
    last_name?: true
    email?: true
    password?: true
    role_id?: true
    status?: true
    created_at?: true
    updated_at?: true
    _all?: true
  }

  export type UsersAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which users to aggregate.
     */
    where?: usersWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of users to fetch.
     */
    orderBy?: usersOrderByWithRelationInput | usersOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: usersWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` users.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned users
    **/
    _count?: true | UsersCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: UsersMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: UsersMaxAggregateInputType
  }

  export type GetUsersAggregateType<T extends UsersAggregateArgs> = {
        [P in keyof T & keyof AggregateUsers]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateUsers[P]>
      : GetScalarType<T[P], AggregateUsers[P]>
  }




  export type usersGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: usersWhereInput
    orderBy?: usersOrderByWithAggregationInput | usersOrderByWithAggregationInput[]
    by: UsersScalarFieldEnum[] | UsersScalarFieldEnum
    having?: usersScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: UsersCountAggregateInputType | true
    _min?: UsersMinAggregateInputType
    _max?: UsersMaxAggregateInputType
  }

  export type UsersGroupByOutputType = {
    user_id: string
    first_name: string | null
    last_name: string | null
    email: string | null
    password: string | null
    role_id: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    _count: UsersCountAggregateOutputType | null
    _min: UsersMinAggregateOutputType | null
    _max: UsersMaxAggregateOutputType | null
  }

  type GetUsersGroupByPayload<T extends usersGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<UsersGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof UsersGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], UsersGroupByOutputType[P]>
            : GetScalarType<T[P], UsersGroupByOutputType[P]>
        }
      >
    >


  export type usersSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    user_id?: boolean
    first_name?: boolean
    last_name?: boolean
    email?: boolean
    password?: boolean
    role_id?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    parking_lot?: boolean | users$parking_lotArgs<ExtArgs>
    role?: boolean | users$roleArgs<ExtArgs>
    _count?: boolean | UsersCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["users"]>

  export type usersSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    user_id?: boolean
    first_name?: boolean
    last_name?: boolean
    email?: boolean
    password?: boolean
    role_id?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    role?: boolean | users$roleArgs<ExtArgs>
  }, ExtArgs["result"]["users"]>

  export type usersSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    user_id?: boolean
    first_name?: boolean
    last_name?: boolean
    email?: boolean
    password?: boolean
    role_id?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    role?: boolean | users$roleArgs<ExtArgs>
  }, ExtArgs["result"]["users"]>

  export type usersSelectScalar = {
    user_id?: boolean
    first_name?: boolean
    last_name?: boolean
    email?: boolean
    password?: boolean
    role_id?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }

  export type usersOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"user_id" | "first_name" | "last_name" | "email" | "password" | "role_id" | "status" | "created_at" | "updated_at", ExtArgs["result"]["users"]>
  export type usersInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    parking_lot?: boolean | users$parking_lotArgs<ExtArgs>
    role?: boolean | users$roleArgs<ExtArgs>
    _count?: boolean | UsersCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type usersIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    role?: boolean | users$roleArgs<ExtArgs>
  }
  export type usersIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    role?: boolean | users$roleArgs<ExtArgs>
  }

  export type $usersPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "users"
    objects: {
      parking_lot: Prisma.$parking_lotPayload<ExtArgs>[]
      role: Prisma.$rolePayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      user_id: string
      first_name: string | null
      last_name: string | null
      email: string | null
      password: string | null
      role_id: string | null
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
    }, ExtArgs["result"]["users"]>
    composites: {}
  }

  type usersGetPayload<S extends boolean | null | undefined | usersDefaultArgs> = $Result.GetResult<Prisma.$usersPayload, S>

  type usersCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<usersFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: UsersCountAggregateInputType | true
    }

  export interface usersDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['users'], meta: { name: 'users' } }
    /**
     * Find zero or one Users that matches the filter.
     * @param {usersFindUniqueArgs} args - Arguments to find a Users
     * @example
     * // Get one Users
     * const users = await prisma.users.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends usersFindUniqueArgs>(args: SelectSubset<T, usersFindUniqueArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Users that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {usersFindUniqueOrThrowArgs} args - Arguments to find a Users
     * @example
     * // Get one Users
     * const users = await prisma.users.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends usersFindUniqueOrThrowArgs>(args: SelectSubset<T, usersFindUniqueOrThrowArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Users that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {usersFindFirstArgs} args - Arguments to find a Users
     * @example
     * // Get one Users
     * const users = await prisma.users.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends usersFindFirstArgs>(args?: SelectSubset<T, usersFindFirstArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Users that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {usersFindFirstOrThrowArgs} args - Arguments to find a Users
     * @example
     * // Get one Users
     * const users = await prisma.users.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends usersFindFirstOrThrowArgs>(args?: SelectSubset<T, usersFindFirstOrThrowArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Users that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {usersFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Users
     * const users = await prisma.users.findMany()
     * 
     * // Get first 10 Users
     * const users = await prisma.users.findMany({ take: 10 })
     * 
     * // Only select the `user_id`
     * const usersWithUser_idOnly = await prisma.users.findMany({ select: { user_id: true } })
     * 
     */
    findMany<T extends usersFindManyArgs>(args?: SelectSubset<T, usersFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Users.
     * @param {usersCreateArgs} args - Arguments to create a Users.
     * @example
     * // Create one Users
     * const Users = await prisma.users.create({
     *   data: {
     *     // ... data to create a Users
     *   }
     * })
     * 
     */
    create<T extends usersCreateArgs>(args: SelectSubset<T, usersCreateArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Users.
     * @param {usersCreateManyArgs} args - Arguments to create many Users.
     * @example
     * // Create many Users
     * const users = await prisma.users.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends usersCreateManyArgs>(args?: SelectSubset<T, usersCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Users and returns the data saved in the database.
     * @param {usersCreateManyAndReturnArgs} args - Arguments to create many Users.
     * @example
     * // Create many Users
     * const users = await prisma.users.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Users and only return the `user_id`
     * const usersWithUser_idOnly = await prisma.users.createManyAndReturn({
     *   select: { user_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends usersCreateManyAndReturnArgs>(args?: SelectSubset<T, usersCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Users.
     * @param {usersDeleteArgs} args - Arguments to delete one Users.
     * @example
     * // Delete one Users
     * const Users = await prisma.users.delete({
     *   where: {
     *     // ... filter to delete one Users
     *   }
     * })
     * 
     */
    delete<T extends usersDeleteArgs>(args: SelectSubset<T, usersDeleteArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Users.
     * @param {usersUpdateArgs} args - Arguments to update one Users.
     * @example
     * // Update one Users
     * const users = await prisma.users.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends usersUpdateArgs>(args: SelectSubset<T, usersUpdateArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Users.
     * @param {usersDeleteManyArgs} args - Arguments to filter Users to delete.
     * @example
     * // Delete a few Users
     * const { count } = await prisma.users.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends usersDeleteManyArgs>(args?: SelectSubset<T, usersDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Users.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {usersUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Users
     * const users = await prisma.users.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends usersUpdateManyArgs>(args: SelectSubset<T, usersUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Users and returns the data updated in the database.
     * @param {usersUpdateManyAndReturnArgs} args - Arguments to update many Users.
     * @example
     * // Update many Users
     * const users = await prisma.users.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Users and only return the `user_id`
     * const usersWithUser_idOnly = await prisma.users.updateManyAndReturn({
     *   select: { user_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends usersUpdateManyAndReturnArgs>(args: SelectSubset<T, usersUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Users.
     * @param {usersUpsertArgs} args - Arguments to update or create a Users.
     * @example
     * // Update or create a Users
     * const users = await prisma.users.upsert({
     *   create: {
     *     // ... data to create a Users
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Users we want to update
     *   }
     * })
     */
    upsert<T extends usersUpsertArgs>(args: SelectSubset<T, usersUpsertArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Users.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {usersCountArgs} args - Arguments to filter Users to count.
     * @example
     * // Count the number of Users
     * const count = await prisma.users.count({
     *   where: {
     *     // ... the filter for the Users we want to count
     *   }
     * })
    **/
    count<T extends usersCountArgs>(
      args?: Subset<T, usersCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], UsersCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Users.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {UsersAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends UsersAggregateArgs>(args: Subset<T, UsersAggregateArgs>): Prisma.PrismaPromise<GetUsersAggregateType<T>>

    /**
     * Group by Users.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {usersGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends usersGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: usersGroupByArgs['orderBy'] }
        : { orderBy?: usersGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, usersGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetUsersGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the users model
   */
  readonly fields: usersFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for users.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__usersClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    parking_lot<T extends users$parking_lotArgs<ExtArgs> = {}>(args?: Subset<T, users$parking_lotArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    role<T extends users$roleArgs<ExtArgs> = {}>(args?: Subset<T, users$roleArgs<ExtArgs>>): Prisma__roleClient<$Result.GetResult<Prisma.$rolePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the users model
   */
  interface usersFieldRefs {
    readonly user_id: FieldRef<"users", 'String'>
    readonly first_name: FieldRef<"users", 'String'>
    readonly last_name: FieldRef<"users", 'String'>
    readonly email: FieldRef<"users", 'String'>
    readonly password: FieldRef<"users", 'String'>
    readonly role_id: FieldRef<"users", 'String'>
    readonly status: FieldRef<"users", 'Boolean'>
    readonly created_at: FieldRef<"users", 'DateTime'>
    readonly updated_at: FieldRef<"users", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * users findUnique
   */
  export type usersFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * Filter, which users to fetch.
     */
    where: usersWhereUniqueInput
  }

  /**
   * users findUniqueOrThrow
   */
  export type usersFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * Filter, which users to fetch.
     */
    where: usersWhereUniqueInput
  }

  /**
   * users findFirst
   */
  export type usersFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * Filter, which users to fetch.
     */
    where?: usersWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of users to fetch.
     */
    orderBy?: usersOrderByWithRelationInput | usersOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for users.
     */
    cursor?: usersWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` users.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of users.
     */
    distinct?: UsersScalarFieldEnum | UsersScalarFieldEnum[]
  }

  /**
   * users findFirstOrThrow
   */
  export type usersFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * Filter, which users to fetch.
     */
    where?: usersWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of users to fetch.
     */
    orderBy?: usersOrderByWithRelationInput | usersOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for users.
     */
    cursor?: usersWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` users.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of users.
     */
    distinct?: UsersScalarFieldEnum | UsersScalarFieldEnum[]
  }

  /**
   * users findMany
   */
  export type usersFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * Filter, which users to fetch.
     */
    where?: usersWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of users to fetch.
     */
    orderBy?: usersOrderByWithRelationInput | usersOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing users.
     */
    cursor?: usersWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` users from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` users.
     */
    skip?: number
    distinct?: UsersScalarFieldEnum | UsersScalarFieldEnum[]
  }

  /**
   * users create
   */
  export type usersCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * The data needed to create a users.
     */
    data?: XOR<usersCreateInput, usersUncheckedCreateInput>
  }

  /**
   * users createMany
   */
  export type usersCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many users.
     */
    data: usersCreateManyInput | usersCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * users createManyAndReturn
   */
  export type usersCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * The data used to create many users.
     */
    data: usersCreateManyInput | usersCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * users update
   */
  export type usersUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * The data needed to update a users.
     */
    data: XOR<usersUpdateInput, usersUncheckedUpdateInput>
    /**
     * Choose, which users to update.
     */
    where: usersWhereUniqueInput
  }

  /**
   * users updateMany
   */
  export type usersUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update users.
     */
    data: XOR<usersUpdateManyMutationInput, usersUncheckedUpdateManyInput>
    /**
     * Filter which users to update
     */
    where?: usersWhereInput
    /**
     * Limit how many users to update.
     */
    limit?: number
  }

  /**
   * users updateManyAndReturn
   */
  export type usersUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * The data used to update users.
     */
    data: XOR<usersUpdateManyMutationInput, usersUncheckedUpdateManyInput>
    /**
     * Filter which users to update
     */
    where?: usersWhereInput
    /**
     * Limit how many users to update.
     */
    limit?: number
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersIncludeUpdateManyAndReturn<ExtArgs> | null
  }

  /**
   * users upsert
   */
  export type usersUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * The filter to search for the users to update in case it exists.
     */
    where: usersWhereUniqueInput
    /**
     * In case the users found by the `where` argument doesn't exist, create a new users with this data.
     */
    create: XOR<usersCreateInput, usersUncheckedCreateInput>
    /**
     * In case the users was found with the provided `where` argument, update it with this data.
     */
    update: XOR<usersUpdateInput, usersUncheckedUpdateInput>
  }

  /**
   * users delete
   */
  export type usersDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    /**
     * Filter which users to delete.
     */
    where: usersWhereUniqueInput
  }

  /**
   * users deleteMany
   */
  export type usersDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which users to delete
     */
    where?: usersWhereInput
    /**
     * Limit how many users to delete.
     */
    limit?: number
  }

  /**
   * users.parking_lot
   */
  export type users$parking_lotArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    where?: parking_lotWhereInput
    orderBy?: parking_lotOrderByWithRelationInput | parking_lotOrderByWithRelationInput[]
    cursor?: parking_lotWhereUniqueInput
    take?: number
    skip?: number
    distinct?: Parking_lotScalarFieldEnum | Parking_lotScalarFieldEnum[]
  }

  /**
   * users.role
   */
  export type users$roleArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the role
     */
    select?: roleSelect<ExtArgs> | null
    /**
     * Omit specific fields from the role
     */
    omit?: roleOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: roleInclude<ExtArgs> | null
    where?: roleWhereInput
  }

  /**
   * users without action
   */
  export type usersDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
  }


  /**
   * Model parking_lot
   */

  export type AggregateParking_lot = {
    _count: Parking_lotCountAggregateOutputType | null
    _avg: Parking_lotAvgAggregateOutputType | null
    _sum: Parking_lotSumAggregateOutputType | null
    _min: Parking_lotMinAggregateOutputType | null
    _max: Parking_lotMaxAggregateOutputType | null
  }

  export type Parking_lotAvgAggregateOutputType = {
    north_angle_deg: number | null
  }

  export type Parking_lotSumAggregateOutputType = {
    north_angle_deg: number | null
  }

  export type Parking_lotMinAggregateOutputType = {
    parking_lot_id: string | null
    user_id: string | null
    parking_lot_name: string | null
    description: string | null
    image: Uint8Array | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    is_deleted: boolean | null
    north_angle_deg: number | null
  }

  export type Parking_lotMaxAggregateOutputType = {
    parking_lot_id: string | null
    user_id: string | null
    parking_lot_name: string | null
    description: string | null
    image: Uint8Array | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    is_deleted: boolean | null
    north_angle_deg: number | null
  }

  export type Parking_lotCountAggregateOutputType = {
    parking_lot_id: number
    user_id: number
    parking_lot_name: number
    description: number
    image: number
    status: number
    created_at: number
    updated_at: number
    is_deleted: number
    north_angle_deg: number
    _all: number
  }


  export type Parking_lotAvgAggregateInputType = {
    north_angle_deg?: true
  }

  export type Parking_lotSumAggregateInputType = {
    north_angle_deg?: true
  }

  export type Parking_lotMinAggregateInputType = {
    parking_lot_id?: true
    user_id?: true
    parking_lot_name?: true
    description?: true
    image?: true
    status?: true
    created_at?: true
    updated_at?: true
    is_deleted?: true
    north_angle_deg?: true
  }

  export type Parking_lotMaxAggregateInputType = {
    parking_lot_id?: true
    user_id?: true
    parking_lot_name?: true
    description?: true
    image?: true
    status?: true
    created_at?: true
    updated_at?: true
    is_deleted?: true
    north_angle_deg?: true
  }

  export type Parking_lotCountAggregateInputType = {
    parking_lot_id?: true
    user_id?: true
    parking_lot_name?: true
    description?: true
    image?: true
    status?: true
    created_at?: true
    updated_at?: true
    is_deleted?: true
    north_angle_deg?: true
    _all?: true
  }

  export type Parking_lotAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which parking_lot to aggregate.
     */
    where?: parking_lotWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of parking_lots to fetch.
     */
    orderBy?: parking_lotOrderByWithRelationInput | parking_lotOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: parking_lotWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` parking_lots from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` parking_lots.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned parking_lots
    **/
    _count?: true | Parking_lotCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: Parking_lotAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: Parking_lotSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: Parking_lotMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: Parking_lotMaxAggregateInputType
  }

  export type GetParking_lotAggregateType<T extends Parking_lotAggregateArgs> = {
        [P in keyof T & keyof AggregateParking_lot]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateParking_lot[P]>
      : GetScalarType<T[P], AggregateParking_lot[P]>
  }




  export type parking_lotGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: parking_lotWhereInput
    orderBy?: parking_lotOrderByWithAggregationInput | parking_lotOrderByWithAggregationInput[]
    by: Parking_lotScalarFieldEnum[] | Parking_lotScalarFieldEnum
    having?: parking_lotScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: Parking_lotCountAggregateInputType | true
    _avg?: Parking_lotAvgAggregateInputType
    _sum?: Parking_lotSumAggregateInputType
    _min?: Parking_lotMinAggregateInputType
    _max?: Parking_lotMaxAggregateInputType
  }

  export type Parking_lotGroupByOutputType = {
    parking_lot_id: string
    user_id: string | null
    parking_lot_name: string | null
    description: string | null
    image: Uint8Array | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    is_deleted: boolean | null
    north_angle_deg: number | null
    _count: Parking_lotCountAggregateOutputType | null
    _avg: Parking_lotAvgAggregateOutputType | null
    _sum: Parking_lotSumAggregateOutputType | null
    _min: Parking_lotMinAggregateOutputType | null
    _max: Parking_lotMaxAggregateOutputType | null
  }

  type GetParking_lotGroupByPayload<T extends parking_lotGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<Parking_lotGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof Parking_lotGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], Parking_lotGroupByOutputType[P]>
            : GetScalarType<T[P], Parking_lotGroupByOutputType[P]>
        }
      >
    >


  export type parking_lotSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    parking_lot_id?: boolean
    user_id?: boolean
    parking_lot_name?: boolean
    description?: boolean
    image?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    is_deleted?: boolean
    north_angle_deg?: boolean
    advertisements?: boolean | parking_lot$advertisementsArgs<ExtArgs>
    users?: boolean | parking_lot$usersArgs<ExtArgs>
    pillar?: boolean | parking_lot$pillarArgs<ExtArgs>
    _count?: boolean | Parking_lotCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["parking_lot"]>

  export type parking_lotSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    parking_lot_id?: boolean
    user_id?: boolean
    parking_lot_name?: boolean
    description?: boolean
    image?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    is_deleted?: boolean
    north_angle_deg?: boolean
    users?: boolean | parking_lot$usersArgs<ExtArgs>
  }, ExtArgs["result"]["parking_lot"]>

  export type parking_lotSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    parking_lot_id?: boolean
    user_id?: boolean
    parking_lot_name?: boolean
    description?: boolean
    image?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    is_deleted?: boolean
    north_angle_deg?: boolean
    users?: boolean | parking_lot$usersArgs<ExtArgs>
  }, ExtArgs["result"]["parking_lot"]>

  export type parking_lotSelectScalar = {
    parking_lot_id?: boolean
    user_id?: boolean
    parking_lot_name?: boolean
    description?: boolean
    image?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    is_deleted?: boolean
    north_angle_deg?: boolean
  }

  export type parking_lotOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"parking_lot_id" | "user_id" | "parking_lot_name" | "description" | "image" | "status" | "created_at" | "updated_at" | "is_deleted" | "north_angle_deg", ExtArgs["result"]["parking_lot"]>
  export type parking_lotInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    advertisements?: boolean | parking_lot$advertisementsArgs<ExtArgs>
    users?: boolean | parking_lot$usersArgs<ExtArgs>
    pillar?: boolean | parking_lot$pillarArgs<ExtArgs>
    _count?: boolean | Parking_lotCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type parking_lotIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    users?: boolean | parking_lot$usersArgs<ExtArgs>
  }
  export type parking_lotIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    users?: boolean | parking_lot$usersArgs<ExtArgs>
  }

  export type $parking_lotPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "parking_lot"
    objects: {
      advertisements: Prisma.$advertisementsPayload<ExtArgs>[]
      users: Prisma.$usersPayload<ExtArgs> | null
      pillar: Prisma.$pillarPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      parking_lot_id: string
      user_id: string | null
      parking_lot_name: string | null
      description: string | null
      image: Uint8Array | null
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
      is_deleted: boolean | null
      north_angle_deg: number | null
    }, ExtArgs["result"]["parking_lot"]>
    composites: {}
  }

  type parking_lotGetPayload<S extends boolean | null | undefined | parking_lotDefaultArgs> = $Result.GetResult<Prisma.$parking_lotPayload, S>

  type parking_lotCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<parking_lotFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: Parking_lotCountAggregateInputType | true
    }

  export interface parking_lotDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['parking_lot'], meta: { name: 'parking_lot' } }
    /**
     * Find zero or one Parking_lot that matches the filter.
     * @param {parking_lotFindUniqueArgs} args - Arguments to find a Parking_lot
     * @example
     * // Get one Parking_lot
     * const parking_lot = await prisma.parking_lot.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends parking_lotFindUniqueArgs>(args: SelectSubset<T, parking_lotFindUniqueArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Parking_lot that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {parking_lotFindUniqueOrThrowArgs} args - Arguments to find a Parking_lot
     * @example
     * // Get one Parking_lot
     * const parking_lot = await prisma.parking_lot.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends parking_lotFindUniqueOrThrowArgs>(args: SelectSubset<T, parking_lotFindUniqueOrThrowArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Parking_lot that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {parking_lotFindFirstArgs} args - Arguments to find a Parking_lot
     * @example
     * // Get one Parking_lot
     * const parking_lot = await prisma.parking_lot.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends parking_lotFindFirstArgs>(args?: SelectSubset<T, parking_lotFindFirstArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Parking_lot that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {parking_lotFindFirstOrThrowArgs} args - Arguments to find a Parking_lot
     * @example
     * // Get one Parking_lot
     * const parking_lot = await prisma.parking_lot.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends parking_lotFindFirstOrThrowArgs>(args?: SelectSubset<T, parking_lotFindFirstOrThrowArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Parking_lots that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {parking_lotFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Parking_lots
     * const parking_lots = await prisma.parking_lot.findMany()
     * 
     * // Get first 10 Parking_lots
     * const parking_lots = await prisma.parking_lot.findMany({ take: 10 })
     * 
     * // Only select the `parking_lot_id`
     * const parking_lotWithParking_lot_idOnly = await prisma.parking_lot.findMany({ select: { parking_lot_id: true } })
     * 
     */
    findMany<T extends parking_lotFindManyArgs>(args?: SelectSubset<T, parking_lotFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Parking_lot.
     * @param {parking_lotCreateArgs} args - Arguments to create a Parking_lot.
     * @example
     * // Create one Parking_lot
     * const Parking_lot = await prisma.parking_lot.create({
     *   data: {
     *     // ... data to create a Parking_lot
     *   }
     * })
     * 
     */
    create<T extends parking_lotCreateArgs>(args: SelectSubset<T, parking_lotCreateArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Parking_lots.
     * @param {parking_lotCreateManyArgs} args - Arguments to create many Parking_lots.
     * @example
     * // Create many Parking_lots
     * const parking_lot = await prisma.parking_lot.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends parking_lotCreateManyArgs>(args?: SelectSubset<T, parking_lotCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Parking_lots and returns the data saved in the database.
     * @param {parking_lotCreateManyAndReturnArgs} args - Arguments to create many Parking_lots.
     * @example
     * // Create many Parking_lots
     * const parking_lot = await prisma.parking_lot.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Parking_lots and only return the `parking_lot_id`
     * const parking_lotWithParking_lot_idOnly = await prisma.parking_lot.createManyAndReturn({
     *   select: { parking_lot_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends parking_lotCreateManyAndReturnArgs>(args?: SelectSubset<T, parking_lotCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Parking_lot.
     * @param {parking_lotDeleteArgs} args - Arguments to delete one Parking_lot.
     * @example
     * // Delete one Parking_lot
     * const Parking_lot = await prisma.parking_lot.delete({
     *   where: {
     *     // ... filter to delete one Parking_lot
     *   }
     * })
     * 
     */
    delete<T extends parking_lotDeleteArgs>(args: SelectSubset<T, parking_lotDeleteArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Parking_lot.
     * @param {parking_lotUpdateArgs} args - Arguments to update one Parking_lot.
     * @example
     * // Update one Parking_lot
     * const parking_lot = await prisma.parking_lot.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends parking_lotUpdateArgs>(args: SelectSubset<T, parking_lotUpdateArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Parking_lots.
     * @param {parking_lotDeleteManyArgs} args - Arguments to filter Parking_lots to delete.
     * @example
     * // Delete a few Parking_lots
     * const { count } = await prisma.parking_lot.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends parking_lotDeleteManyArgs>(args?: SelectSubset<T, parking_lotDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Parking_lots.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {parking_lotUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Parking_lots
     * const parking_lot = await prisma.parking_lot.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends parking_lotUpdateManyArgs>(args: SelectSubset<T, parking_lotUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Parking_lots and returns the data updated in the database.
     * @param {parking_lotUpdateManyAndReturnArgs} args - Arguments to update many Parking_lots.
     * @example
     * // Update many Parking_lots
     * const parking_lot = await prisma.parking_lot.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Parking_lots and only return the `parking_lot_id`
     * const parking_lotWithParking_lot_idOnly = await prisma.parking_lot.updateManyAndReturn({
     *   select: { parking_lot_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends parking_lotUpdateManyAndReturnArgs>(args: SelectSubset<T, parking_lotUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Parking_lot.
     * @param {parking_lotUpsertArgs} args - Arguments to update or create a Parking_lot.
     * @example
     * // Update or create a Parking_lot
     * const parking_lot = await prisma.parking_lot.upsert({
     *   create: {
     *     // ... data to create a Parking_lot
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Parking_lot we want to update
     *   }
     * })
     */
    upsert<T extends parking_lotUpsertArgs>(args: SelectSubset<T, parking_lotUpsertArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Parking_lots.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {parking_lotCountArgs} args - Arguments to filter Parking_lots to count.
     * @example
     * // Count the number of Parking_lots
     * const count = await prisma.parking_lot.count({
     *   where: {
     *     // ... the filter for the Parking_lots we want to count
     *   }
     * })
    **/
    count<T extends parking_lotCountArgs>(
      args?: Subset<T, parking_lotCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], Parking_lotCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Parking_lot.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {Parking_lotAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends Parking_lotAggregateArgs>(args: Subset<T, Parking_lotAggregateArgs>): Prisma.PrismaPromise<GetParking_lotAggregateType<T>>

    /**
     * Group by Parking_lot.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {parking_lotGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends parking_lotGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: parking_lotGroupByArgs['orderBy'] }
        : { orderBy?: parking_lotGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, parking_lotGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetParking_lotGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the parking_lot model
   */
  readonly fields: parking_lotFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for parking_lot.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__parking_lotClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    advertisements<T extends parking_lot$advertisementsArgs<ExtArgs> = {}>(args?: Subset<T, parking_lot$advertisementsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    users<T extends parking_lot$usersArgs<ExtArgs> = {}>(args?: Subset<T, parking_lot$usersArgs<ExtArgs>>): Prisma__usersClient<$Result.GetResult<Prisma.$usersPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    pillar<T extends parking_lot$pillarArgs<ExtArgs> = {}>(args?: Subset<T, parking_lot$pillarArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the parking_lot model
   */
  interface parking_lotFieldRefs {
    readonly parking_lot_id: FieldRef<"parking_lot", 'String'>
    readonly user_id: FieldRef<"parking_lot", 'String'>
    readonly parking_lot_name: FieldRef<"parking_lot", 'String'>
    readonly description: FieldRef<"parking_lot", 'String'>
    readonly image: FieldRef<"parking_lot", 'Bytes'>
    readonly status: FieldRef<"parking_lot", 'Boolean'>
    readonly created_at: FieldRef<"parking_lot", 'DateTime'>
    readonly updated_at: FieldRef<"parking_lot", 'DateTime'>
    readonly is_deleted: FieldRef<"parking_lot", 'Boolean'>
    readonly north_angle_deg: FieldRef<"parking_lot", 'Float'>
  }
    

  // Custom InputTypes
  /**
   * parking_lot findUnique
   */
  export type parking_lotFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * Filter, which parking_lot to fetch.
     */
    where: parking_lotWhereUniqueInput
  }

  /**
   * parking_lot findUniqueOrThrow
   */
  export type parking_lotFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * Filter, which parking_lot to fetch.
     */
    where: parking_lotWhereUniqueInput
  }

  /**
   * parking_lot findFirst
   */
  export type parking_lotFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * Filter, which parking_lot to fetch.
     */
    where?: parking_lotWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of parking_lots to fetch.
     */
    orderBy?: parking_lotOrderByWithRelationInput | parking_lotOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for parking_lots.
     */
    cursor?: parking_lotWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` parking_lots from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` parking_lots.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of parking_lots.
     */
    distinct?: Parking_lotScalarFieldEnum | Parking_lotScalarFieldEnum[]
  }

  /**
   * parking_lot findFirstOrThrow
   */
  export type parking_lotFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * Filter, which parking_lot to fetch.
     */
    where?: parking_lotWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of parking_lots to fetch.
     */
    orderBy?: parking_lotOrderByWithRelationInput | parking_lotOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for parking_lots.
     */
    cursor?: parking_lotWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` parking_lots from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` parking_lots.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of parking_lots.
     */
    distinct?: Parking_lotScalarFieldEnum | Parking_lotScalarFieldEnum[]
  }

  /**
   * parking_lot findMany
   */
  export type parking_lotFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * Filter, which parking_lots to fetch.
     */
    where?: parking_lotWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of parking_lots to fetch.
     */
    orderBy?: parking_lotOrderByWithRelationInput | parking_lotOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing parking_lots.
     */
    cursor?: parking_lotWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` parking_lots from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` parking_lots.
     */
    skip?: number
    distinct?: Parking_lotScalarFieldEnum | Parking_lotScalarFieldEnum[]
  }

  /**
   * parking_lot create
   */
  export type parking_lotCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * The data needed to create a parking_lot.
     */
    data?: XOR<parking_lotCreateInput, parking_lotUncheckedCreateInput>
  }

  /**
   * parking_lot createMany
   */
  export type parking_lotCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many parking_lots.
     */
    data: parking_lotCreateManyInput | parking_lotCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * parking_lot createManyAndReturn
   */
  export type parking_lotCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * The data used to create many parking_lots.
     */
    data: parking_lotCreateManyInput | parking_lotCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * parking_lot update
   */
  export type parking_lotUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * The data needed to update a parking_lot.
     */
    data: XOR<parking_lotUpdateInput, parking_lotUncheckedUpdateInput>
    /**
     * Choose, which parking_lot to update.
     */
    where: parking_lotWhereUniqueInput
  }

  /**
   * parking_lot updateMany
   */
  export type parking_lotUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update parking_lots.
     */
    data: XOR<parking_lotUpdateManyMutationInput, parking_lotUncheckedUpdateManyInput>
    /**
     * Filter which parking_lots to update
     */
    where?: parking_lotWhereInput
    /**
     * Limit how many parking_lots to update.
     */
    limit?: number
  }

  /**
   * parking_lot updateManyAndReturn
   */
  export type parking_lotUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * The data used to update parking_lots.
     */
    data: XOR<parking_lotUpdateManyMutationInput, parking_lotUncheckedUpdateManyInput>
    /**
     * Filter which parking_lots to update
     */
    where?: parking_lotWhereInput
    /**
     * Limit how many parking_lots to update.
     */
    limit?: number
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotIncludeUpdateManyAndReturn<ExtArgs> | null
  }

  /**
   * parking_lot upsert
   */
  export type parking_lotUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * The filter to search for the parking_lot to update in case it exists.
     */
    where: parking_lotWhereUniqueInput
    /**
     * In case the parking_lot found by the `where` argument doesn't exist, create a new parking_lot with this data.
     */
    create: XOR<parking_lotCreateInput, parking_lotUncheckedCreateInput>
    /**
     * In case the parking_lot was found with the provided `where` argument, update it with this data.
     */
    update: XOR<parking_lotUpdateInput, parking_lotUncheckedUpdateInput>
  }

  /**
   * parking_lot delete
   */
  export type parking_lotDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    /**
     * Filter which parking_lot to delete.
     */
    where: parking_lotWhereUniqueInput
  }

  /**
   * parking_lot deleteMany
   */
  export type parking_lotDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which parking_lots to delete
     */
    where?: parking_lotWhereInput
    /**
     * Limit how many parking_lots to delete.
     */
    limit?: number
  }

  /**
   * parking_lot.advertisements
   */
  export type parking_lot$advertisementsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    where?: advertisementsWhereInput
    orderBy?: advertisementsOrderByWithRelationInput | advertisementsOrderByWithRelationInput[]
    cursor?: advertisementsWhereUniqueInput
    take?: number
    skip?: number
    distinct?: AdvertisementsScalarFieldEnum | AdvertisementsScalarFieldEnum[]
  }

  /**
   * parking_lot.users
   */
  export type parking_lot$usersArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the users
     */
    select?: usersSelect<ExtArgs> | null
    /**
     * Omit specific fields from the users
     */
    omit?: usersOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: usersInclude<ExtArgs> | null
    where?: usersWhereInput
  }

  /**
   * parking_lot.pillar
   */
  export type parking_lot$pillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    where?: pillarWhereInput
    orderBy?: pillarOrderByWithRelationInput | pillarOrderByWithRelationInput[]
    cursor?: pillarWhereUniqueInput
    take?: number
    skip?: number
    distinct?: PillarScalarFieldEnum | PillarScalarFieldEnum[]
  }

  /**
   * parking_lot without action
   */
  export type parking_lotDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
  }


  /**
   * Model pillar
   */

  export type AggregatePillar = {
    _count: PillarCountAggregateOutputType | null
    _avg: PillarAvgAggregateOutputType | null
    _sum: PillarSumAggregateOutputType | null
    _min: PillarMinAggregateOutputType | null
    _max: PillarMaxAggregateOutputType | null
  }

  export type PillarAvgAggregateOutputType = {
    reference_x: number | null
    reference_y: number | null
    floor_level: number | null
  }

  export type PillarSumAggregateOutputType = {
    reference_x: number | null
    reference_y: number | null
    floor_level: number | null
  }

  export type PillarMinAggregateOutputType = {
    pillar_id: string | null
    parking_lot_id: string | null
    pillar_code: string | null
    reference_x: number | null
    reference_y: number | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    node_type: string | null
    floor_level: number | null
  }

  export type PillarMaxAggregateOutputType = {
    pillar_id: string | null
    parking_lot_id: string | null
    pillar_code: string | null
    reference_x: number | null
    reference_y: number | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    node_type: string | null
    floor_level: number | null
  }

  export type PillarCountAggregateOutputType = {
    pillar_id: number
    parking_lot_id: number
    pillar_code: number
    reference_x: number
    reference_y: number
    status: number
    created_at: number
    updated_at: number
    node_type: number
    floor_level: number
    _all: number
  }


  export type PillarAvgAggregateInputType = {
    reference_x?: true
    reference_y?: true
    floor_level?: true
  }

  export type PillarSumAggregateInputType = {
    reference_x?: true
    reference_y?: true
    floor_level?: true
  }

  export type PillarMinAggregateInputType = {
    pillar_id?: true
    parking_lot_id?: true
    pillar_code?: true
    reference_x?: true
    reference_y?: true
    status?: true
    created_at?: true
    updated_at?: true
    node_type?: true
    floor_level?: true
  }

  export type PillarMaxAggregateInputType = {
    pillar_id?: true
    parking_lot_id?: true
    pillar_code?: true
    reference_x?: true
    reference_y?: true
    status?: true
    created_at?: true
    updated_at?: true
    node_type?: true
    floor_level?: true
  }

  export type PillarCountAggregateInputType = {
    pillar_id?: true
    parking_lot_id?: true
    pillar_code?: true
    reference_x?: true
    reference_y?: true
    status?: true
    created_at?: true
    updated_at?: true
    node_type?: true
    floor_level?: true
    _all?: true
  }

  export type PillarAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which pillar to aggregate.
     */
    where?: pillarWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of pillars to fetch.
     */
    orderBy?: pillarOrderByWithRelationInput | pillarOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: pillarWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` pillars from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` pillars.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned pillars
    **/
    _count?: true | PillarCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: PillarAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: PillarSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: PillarMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: PillarMaxAggregateInputType
  }

  export type GetPillarAggregateType<T extends PillarAggregateArgs> = {
        [P in keyof T & keyof AggregatePillar]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregatePillar[P]>
      : GetScalarType<T[P], AggregatePillar[P]>
  }




  export type pillarGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: pillarWhereInput
    orderBy?: pillarOrderByWithAggregationInput | pillarOrderByWithAggregationInput[]
    by: PillarScalarFieldEnum[] | PillarScalarFieldEnum
    having?: pillarScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: PillarCountAggregateInputType | true
    _avg?: PillarAvgAggregateInputType
    _sum?: PillarSumAggregateInputType
    _min?: PillarMinAggregateInputType
    _max?: PillarMaxAggregateInputType
  }

  export type PillarGroupByOutputType = {
    pillar_id: string
    parking_lot_id: string | null
    pillar_code: string | null
    reference_x: number | null
    reference_y: number | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    node_type: string | null
    floor_level: number | null
    _count: PillarCountAggregateOutputType | null
    _avg: PillarAvgAggregateOutputType | null
    _sum: PillarSumAggregateOutputType | null
    _min: PillarMinAggregateOutputType | null
    _max: PillarMaxAggregateOutputType | null
  }

  type GetPillarGroupByPayload<T extends pillarGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<PillarGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof PillarGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], PillarGroupByOutputType[P]>
            : GetScalarType<T[P], PillarGroupByOutputType[P]>
        }
      >
    >


  export type pillarSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    pillar_id?: boolean
    parking_lot_id?: boolean
    pillar_code?: boolean
    reference_x?: boolean
    reference_y?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    node_type?: boolean
    floor_level?: boolean
    directional_relationship_directional_relationship_from_pillar_idTopillar?: boolean | pillar$directional_relationship_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    directional_relationship_directional_relationship_to_pillar_idTopillar?: boolean | pillar$directional_relationship_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
    parking_lot?: boolean | pillar$parking_lotArgs<ExtArgs>
    _count?: boolean | PillarCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["pillar"]>

  export type pillarSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    pillar_id?: boolean
    parking_lot_id?: boolean
    pillar_code?: boolean
    reference_x?: boolean
    reference_y?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    node_type?: boolean
    floor_level?: boolean
    parking_lot?: boolean | pillar$parking_lotArgs<ExtArgs>
  }, ExtArgs["result"]["pillar"]>

  export type pillarSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    pillar_id?: boolean
    parking_lot_id?: boolean
    pillar_code?: boolean
    reference_x?: boolean
    reference_y?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    node_type?: boolean
    floor_level?: boolean
    parking_lot?: boolean | pillar$parking_lotArgs<ExtArgs>
  }, ExtArgs["result"]["pillar"]>

  export type pillarSelectScalar = {
    pillar_id?: boolean
    parking_lot_id?: boolean
    pillar_code?: boolean
    reference_x?: boolean
    reference_y?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    node_type?: boolean
    floor_level?: boolean
  }

  export type pillarOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"pillar_id" | "parking_lot_id" | "pillar_code" | "reference_x" | "reference_y" | "status" | "created_at" | "updated_at" | "node_type" | "floor_level", ExtArgs["result"]["pillar"]>
  export type pillarInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    directional_relationship_directional_relationship_from_pillar_idTopillar?: boolean | pillar$directional_relationship_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    directional_relationship_directional_relationship_to_pillar_idTopillar?: boolean | pillar$directional_relationship_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
    parking_lot?: boolean | pillar$parking_lotArgs<ExtArgs>
    _count?: boolean | PillarCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type pillarIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    parking_lot?: boolean | pillar$parking_lotArgs<ExtArgs>
  }
  export type pillarIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    parking_lot?: boolean | pillar$parking_lotArgs<ExtArgs>
  }

  export type $pillarPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "pillar"
    objects: {
      directional_relationship_directional_relationship_from_pillar_idTopillar: Prisma.$directional_relationshipPayload<ExtArgs>[]
      directional_relationship_directional_relationship_to_pillar_idTopillar: Prisma.$directional_relationshipPayload<ExtArgs>[]
      parking_lot: Prisma.$parking_lotPayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      pillar_id: string
      parking_lot_id: string | null
      pillar_code: string | null
      reference_x: number | null
      reference_y: number | null
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
      node_type: string | null
      floor_level: number | null
    }, ExtArgs["result"]["pillar"]>
    composites: {}
  }

  type pillarGetPayload<S extends boolean | null | undefined | pillarDefaultArgs> = $Result.GetResult<Prisma.$pillarPayload, S>

  type pillarCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<pillarFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: PillarCountAggregateInputType | true
    }

  export interface pillarDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['pillar'], meta: { name: 'pillar' } }
    /**
     * Find zero or one Pillar that matches the filter.
     * @param {pillarFindUniqueArgs} args - Arguments to find a Pillar
     * @example
     * // Get one Pillar
     * const pillar = await prisma.pillar.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends pillarFindUniqueArgs>(args: SelectSubset<T, pillarFindUniqueArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Pillar that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {pillarFindUniqueOrThrowArgs} args - Arguments to find a Pillar
     * @example
     * // Get one Pillar
     * const pillar = await prisma.pillar.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends pillarFindUniqueOrThrowArgs>(args: SelectSubset<T, pillarFindUniqueOrThrowArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Pillar that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {pillarFindFirstArgs} args - Arguments to find a Pillar
     * @example
     * // Get one Pillar
     * const pillar = await prisma.pillar.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends pillarFindFirstArgs>(args?: SelectSubset<T, pillarFindFirstArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Pillar that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {pillarFindFirstOrThrowArgs} args - Arguments to find a Pillar
     * @example
     * // Get one Pillar
     * const pillar = await prisma.pillar.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends pillarFindFirstOrThrowArgs>(args?: SelectSubset<T, pillarFindFirstOrThrowArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Pillars that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {pillarFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Pillars
     * const pillars = await prisma.pillar.findMany()
     * 
     * // Get first 10 Pillars
     * const pillars = await prisma.pillar.findMany({ take: 10 })
     * 
     * // Only select the `pillar_id`
     * const pillarWithPillar_idOnly = await prisma.pillar.findMany({ select: { pillar_id: true } })
     * 
     */
    findMany<T extends pillarFindManyArgs>(args?: SelectSubset<T, pillarFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Pillar.
     * @param {pillarCreateArgs} args - Arguments to create a Pillar.
     * @example
     * // Create one Pillar
     * const Pillar = await prisma.pillar.create({
     *   data: {
     *     // ... data to create a Pillar
     *   }
     * })
     * 
     */
    create<T extends pillarCreateArgs>(args: SelectSubset<T, pillarCreateArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Pillars.
     * @param {pillarCreateManyArgs} args - Arguments to create many Pillars.
     * @example
     * // Create many Pillars
     * const pillar = await prisma.pillar.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends pillarCreateManyArgs>(args?: SelectSubset<T, pillarCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Pillars and returns the data saved in the database.
     * @param {pillarCreateManyAndReturnArgs} args - Arguments to create many Pillars.
     * @example
     * // Create many Pillars
     * const pillar = await prisma.pillar.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Pillars and only return the `pillar_id`
     * const pillarWithPillar_idOnly = await prisma.pillar.createManyAndReturn({
     *   select: { pillar_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends pillarCreateManyAndReturnArgs>(args?: SelectSubset<T, pillarCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Pillar.
     * @param {pillarDeleteArgs} args - Arguments to delete one Pillar.
     * @example
     * // Delete one Pillar
     * const Pillar = await prisma.pillar.delete({
     *   where: {
     *     // ... filter to delete one Pillar
     *   }
     * })
     * 
     */
    delete<T extends pillarDeleteArgs>(args: SelectSubset<T, pillarDeleteArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Pillar.
     * @param {pillarUpdateArgs} args - Arguments to update one Pillar.
     * @example
     * // Update one Pillar
     * const pillar = await prisma.pillar.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends pillarUpdateArgs>(args: SelectSubset<T, pillarUpdateArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Pillars.
     * @param {pillarDeleteManyArgs} args - Arguments to filter Pillars to delete.
     * @example
     * // Delete a few Pillars
     * const { count } = await prisma.pillar.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends pillarDeleteManyArgs>(args?: SelectSubset<T, pillarDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Pillars.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {pillarUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Pillars
     * const pillar = await prisma.pillar.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends pillarUpdateManyArgs>(args: SelectSubset<T, pillarUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Pillars and returns the data updated in the database.
     * @param {pillarUpdateManyAndReturnArgs} args - Arguments to update many Pillars.
     * @example
     * // Update many Pillars
     * const pillar = await prisma.pillar.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Pillars and only return the `pillar_id`
     * const pillarWithPillar_idOnly = await prisma.pillar.updateManyAndReturn({
     *   select: { pillar_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends pillarUpdateManyAndReturnArgs>(args: SelectSubset<T, pillarUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Pillar.
     * @param {pillarUpsertArgs} args - Arguments to update or create a Pillar.
     * @example
     * // Update or create a Pillar
     * const pillar = await prisma.pillar.upsert({
     *   create: {
     *     // ... data to create a Pillar
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Pillar we want to update
     *   }
     * })
     */
    upsert<T extends pillarUpsertArgs>(args: SelectSubset<T, pillarUpsertArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Pillars.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {pillarCountArgs} args - Arguments to filter Pillars to count.
     * @example
     * // Count the number of Pillars
     * const count = await prisma.pillar.count({
     *   where: {
     *     // ... the filter for the Pillars we want to count
     *   }
     * })
    **/
    count<T extends pillarCountArgs>(
      args?: Subset<T, pillarCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], PillarCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Pillar.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {PillarAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends PillarAggregateArgs>(args: Subset<T, PillarAggregateArgs>): Prisma.PrismaPromise<GetPillarAggregateType<T>>

    /**
     * Group by Pillar.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {pillarGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends pillarGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: pillarGroupByArgs['orderBy'] }
        : { orderBy?: pillarGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, pillarGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetPillarGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the pillar model
   */
  readonly fields: pillarFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for pillar.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__pillarClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    directional_relationship_directional_relationship_from_pillar_idTopillar<T extends pillar$directional_relationship_directional_relationship_from_pillar_idTopillarArgs<ExtArgs> = {}>(args?: Subset<T, pillar$directional_relationship_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    directional_relationship_directional_relationship_to_pillar_idTopillar<T extends pillar$directional_relationship_directional_relationship_to_pillar_idTopillarArgs<ExtArgs> = {}>(args?: Subset<T, pillar$directional_relationship_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    parking_lot<T extends pillar$parking_lotArgs<ExtArgs> = {}>(args?: Subset<T, pillar$parking_lotArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the pillar model
   */
  interface pillarFieldRefs {
    readonly pillar_id: FieldRef<"pillar", 'String'>
    readonly parking_lot_id: FieldRef<"pillar", 'String'>
    readonly pillar_code: FieldRef<"pillar", 'String'>
    readonly reference_x: FieldRef<"pillar", 'Float'>
    readonly reference_y: FieldRef<"pillar", 'Float'>
    readonly status: FieldRef<"pillar", 'Boolean'>
    readonly created_at: FieldRef<"pillar", 'DateTime'>
    readonly updated_at: FieldRef<"pillar", 'DateTime'>
    readonly node_type: FieldRef<"pillar", 'String'>
    readonly floor_level: FieldRef<"pillar", 'Int'>
  }
    

  // Custom InputTypes
  /**
   * pillar findUnique
   */
  export type pillarFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * Filter, which pillar to fetch.
     */
    where: pillarWhereUniqueInput
  }

  /**
   * pillar findUniqueOrThrow
   */
  export type pillarFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * Filter, which pillar to fetch.
     */
    where: pillarWhereUniqueInput
  }

  /**
   * pillar findFirst
   */
  export type pillarFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * Filter, which pillar to fetch.
     */
    where?: pillarWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of pillars to fetch.
     */
    orderBy?: pillarOrderByWithRelationInput | pillarOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for pillars.
     */
    cursor?: pillarWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` pillars from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` pillars.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of pillars.
     */
    distinct?: PillarScalarFieldEnum | PillarScalarFieldEnum[]
  }

  /**
   * pillar findFirstOrThrow
   */
  export type pillarFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * Filter, which pillar to fetch.
     */
    where?: pillarWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of pillars to fetch.
     */
    orderBy?: pillarOrderByWithRelationInput | pillarOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for pillars.
     */
    cursor?: pillarWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` pillars from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` pillars.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of pillars.
     */
    distinct?: PillarScalarFieldEnum | PillarScalarFieldEnum[]
  }

  /**
   * pillar findMany
   */
  export type pillarFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * Filter, which pillars to fetch.
     */
    where?: pillarWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of pillars to fetch.
     */
    orderBy?: pillarOrderByWithRelationInput | pillarOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing pillars.
     */
    cursor?: pillarWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` pillars from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` pillars.
     */
    skip?: number
    distinct?: PillarScalarFieldEnum | PillarScalarFieldEnum[]
  }

  /**
   * pillar create
   */
  export type pillarCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * The data needed to create a pillar.
     */
    data?: XOR<pillarCreateInput, pillarUncheckedCreateInput>
  }

  /**
   * pillar createMany
   */
  export type pillarCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many pillars.
     */
    data: pillarCreateManyInput | pillarCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * pillar createManyAndReturn
   */
  export type pillarCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * The data used to create many pillars.
     */
    data: pillarCreateManyInput | pillarCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * pillar update
   */
  export type pillarUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * The data needed to update a pillar.
     */
    data: XOR<pillarUpdateInput, pillarUncheckedUpdateInput>
    /**
     * Choose, which pillar to update.
     */
    where: pillarWhereUniqueInput
  }

  /**
   * pillar updateMany
   */
  export type pillarUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update pillars.
     */
    data: XOR<pillarUpdateManyMutationInput, pillarUncheckedUpdateManyInput>
    /**
     * Filter which pillars to update
     */
    where?: pillarWhereInput
    /**
     * Limit how many pillars to update.
     */
    limit?: number
  }

  /**
   * pillar updateManyAndReturn
   */
  export type pillarUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * The data used to update pillars.
     */
    data: XOR<pillarUpdateManyMutationInput, pillarUncheckedUpdateManyInput>
    /**
     * Filter which pillars to update
     */
    where?: pillarWhereInput
    /**
     * Limit how many pillars to update.
     */
    limit?: number
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarIncludeUpdateManyAndReturn<ExtArgs> | null
  }

  /**
   * pillar upsert
   */
  export type pillarUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * The filter to search for the pillar to update in case it exists.
     */
    where: pillarWhereUniqueInput
    /**
     * In case the pillar found by the `where` argument doesn't exist, create a new pillar with this data.
     */
    create: XOR<pillarCreateInput, pillarUncheckedCreateInput>
    /**
     * In case the pillar was found with the provided `where` argument, update it with this data.
     */
    update: XOR<pillarUpdateInput, pillarUncheckedUpdateInput>
  }

  /**
   * pillar delete
   */
  export type pillarDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    /**
     * Filter which pillar to delete.
     */
    where: pillarWhereUniqueInput
  }

  /**
   * pillar deleteMany
   */
  export type pillarDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which pillars to delete
     */
    where?: pillarWhereInput
    /**
     * Limit how many pillars to delete.
     */
    limit?: number
  }

  /**
   * pillar.directional_relationship_directional_relationship_from_pillar_idTopillar
   */
  export type pillar$directional_relationship_directional_relationship_from_pillar_idTopillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    where?: directional_relationshipWhereInput
    orderBy?: directional_relationshipOrderByWithRelationInput | directional_relationshipOrderByWithRelationInput[]
    cursor?: directional_relationshipWhereUniqueInput
    take?: number
    skip?: number
    distinct?: Directional_relationshipScalarFieldEnum | Directional_relationshipScalarFieldEnum[]
  }

  /**
   * pillar.directional_relationship_directional_relationship_to_pillar_idTopillar
   */
  export type pillar$directional_relationship_directional_relationship_to_pillar_idTopillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    where?: directional_relationshipWhereInput
    orderBy?: directional_relationshipOrderByWithRelationInput | directional_relationshipOrderByWithRelationInput[]
    cursor?: directional_relationshipWhereUniqueInput
    take?: number
    skip?: number
    distinct?: Directional_relationshipScalarFieldEnum | Directional_relationshipScalarFieldEnum[]
  }

  /**
   * pillar.parking_lot
   */
  export type pillar$parking_lotArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    where?: parking_lotWhereInput
  }

  /**
   * pillar without action
   */
  export type pillarDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
  }


  /**
   * Model directional_relationship
   */

  export type AggregateDirectional_relationship = {
    _count: Directional_relationshipCountAggregateOutputType | null
    _avg: Directional_relationshipAvgAggregateOutputType | null
    _sum: Directional_relationshipSumAggregateOutputType | null
    _min: Directional_relationshipMinAggregateOutputType | null
    _max: Directional_relationshipMaxAggregateOutputType | null
  }

  export type Directional_relationshipAvgAggregateOutputType = {
    distance_meters: Decimal | null
    direction_angle: number | null
  }

  export type Directional_relationshipSumAggregateOutputType = {
    distance_meters: Decimal | null
    direction_angle: number | null
  }

  export type Directional_relationshipMinAggregateOutputType = {
    directional_relationship_id: string | null
    from_pillar_id: string | null
    to_pillar_id: string | null
    distance_meters: Decimal | null
    direction_angle: number | null
    is_bidirectional: boolean | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type Directional_relationshipMaxAggregateOutputType = {
    directional_relationship_id: string | null
    from_pillar_id: string | null
    to_pillar_id: string | null
    distance_meters: Decimal | null
    direction_angle: number | null
    is_bidirectional: boolean | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type Directional_relationshipCountAggregateOutputType = {
    directional_relationship_id: number
    from_pillar_id: number
    to_pillar_id: number
    distance_meters: number
    direction_angle: number
    is_bidirectional: number
    status: number
    created_at: number
    updated_at: number
    _all: number
  }


  export type Directional_relationshipAvgAggregateInputType = {
    distance_meters?: true
    direction_angle?: true
  }

  export type Directional_relationshipSumAggregateInputType = {
    distance_meters?: true
    direction_angle?: true
  }

  export type Directional_relationshipMinAggregateInputType = {
    directional_relationship_id?: true
    from_pillar_id?: true
    to_pillar_id?: true
    distance_meters?: true
    direction_angle?: true
    is_bidirectional?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type Directional_relationshipMaxAggregateInputType = {
    directional_relationship_id?: true
    from_pillar_id?: true
    to_pillar_id?: true
    distance_meters?: true
    direction_angle?: true
    is_bidirectional?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type Directional_relationshipCountAggregateInputType = {
    directional_relationship_id?: true
    from_pillar_id?: true
    to_pillar_id?: true
    distance_meters?: true
    direction_angle?: true
    is_bidirectional?: true
    status?: true
    created_at?: true
    updated_at?: true
    _all?: true
  }

  export type Directional_relationshipAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which directional_relationship to aggregate.
     */
    where?: directional_relationshipWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of directional_relationships to fetch.
     */
    orderBy?: directional_relationshipOrderByWithRelationInput | directional_relationshipOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: directional_relationshipWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` directional_relationships from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` directional_relationships.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned directional_relationships
    **/
    _count?: true | Directional_relationshipCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: Directional_relationshipAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: Directional_relationshipSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: Directional_relationshipMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: Directional_relationshipMaxAggregateInputType
  }

  export type GetDirectional_relationshipAggregateType<T extends Directional_relationshipAggregateArgs> = {
        [P in keyof T & keyof AggregateDirectional_relationship]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateDirectional_relationship[P]>
      : GetScalarType<T[P], AggregateDirectional_relationship[P]>
  }




  export type directional_relationshipGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: directional_relationshipWhereInput
    orderBy?: directional_relationshipOrderByWithAggregationInput | directional_relationshipOrderByWithAggregationInput[]
    by: Directional_relationshipScalarFieldEnum[] | Directional_relationshipScalarFieldEnum
    having?: directional_relationshipScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: Directional_relationshipCountAggregateInputType | true
    _avg?: Directional_relationshipAvgAggregateInputType
    _sum?: Directional_relationshipSumAggregateInputType
    _min?: Directional_relationshipMinAggregateInputType
    _max?: Directional_relationshipMaxAggregateInputType
  }

  export type Directional_relationshipGroupByOutputType = {
    directional_relationship_id: string
    from_pillar_id: string | null
    to_pillar_id: string | null
    distance_meters: Decimal | null
    direction_angle: number | null
    is_bidirectional: boolean | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    _count: Directional_relationshipCountAggregateOutputType | null
    _avg: Directional_relationshipAvgAggregateOutputType | null
    _sum: Directional_relationshipSumAggregateOutputType | null
    _min: Directional_relationshipMinAggregateOutputType | null
    _max: Directional_relationshipMaxAggregateOutputType | null
  }

  type GetDirectional_relationshipGroupByPayload<T extends directional_relationshipGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<Directional_relationshipGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof Directional_relationshipGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], Directional_relationshipGroupByOutputType[P]>
            : GetScalarType<T[P], Directional_relationshipGroupByOutputType[P]>
        }
      >
    >


  export type directional_relationshipSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    directional_relationship_id?: boolean
    from_pillar_id?: boolean
    to_pillar_id?: boolean
    distance_meters?: boolean
    direction_angle?: boolean
    is_bidirectional?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    pillar_directional_relationship_from_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    pillar_directional_relationship_to_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
  }, ExtArgs["result"]["directional_relationship"]>

  export type directional_relationshipSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    directional_relationship_id?: boolean
    from_pillar_id?: boolean
    to_pillar_id?: boolean
    distance_meters?: boolean
    direction_angle?: boolean
    is_bidirectional?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    pillar_directional_relationship_from_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    pillar_directional_relationship_to_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
  }, ExtArgs["result"]["directional_relationship"]>

  export type directional_relationshipSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    directional_relationship_id?: boolean
    from_pillar_id?: boolean
    to_pillar_id?: boolean
    distance_meters?: boolean
    direction_angle?: boolean
    is_bidirectional?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    pillar_directional_relationship_from_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    pillar_directional_relationship_to_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
  }, ExtArgs["result"]["directional_relationship"]>

  export type directional_relationshipSelectScalar = {
    directional_relationship_id?: boolean
    from_pillar_id?: boolean
    to_pillar_id?: boolean
    distance_meters?: boolean
    direction_angle?: boolean
    is_bidirectional?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }

  export type directional_relationshipOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"directional_relationship_id" | "from_pillar_id" | "to_pillar_id" | "distance_meters" | "direction_angle" | "is_bidirectional" | "status" | "created_at" | "updated_at", ExtArgs["result"]["directional_relationship"]>
  export type directional_relationshipInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    pillar_directional_relationship_from_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    pillar_directional_relationship_to_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
  }
  export type directional_relationshipIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    pillar_directional_relationship_from_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    pillar_directional_relationship_to_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
  }
  export type directional_relationshipIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    pillar_directional_relationship_from_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>
    pillar_directional_relationship_to_pillar_idTopillar?: boolean | directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>
  }

  export type $directional_relationshipPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "directional_relationship"
    objects: {
      pillar_directional_relationship_from_pillar_idTopillar: Prisma.$pillarPayload<ExtArgs> | null
      pillar_directional_relationship_to_pillar_idTopillar: Prisma.$pillarPayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      directional_relationship_id: string
      from_pillar_id: string | null
      to_pillar_id: string | null
      distance_meters: Prisma.Decimal | null
      direction_angle: number | null
      is_bidirectional: boolean | null
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
    }, ExtArgs["result"]["directional_relationship"]>
    composites: {}
  }

  type directional_relationshipGetPayload<S extends boolean | null | undefined | directional_relationshipDefaultArgs> = $Result.GetResult<Prisma.$directional_relationshipPayload, S>

  type directional_relationshipCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<directional_relationshipFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: Directional_relationshipCountAggregateInputType | true
    }

  export interface directional_relationshipDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['directional_relationship'], meta: { name: 'directional_relationship' } }
    /**
     * Find zero or one Directional_relationship that matches the filter.
     * @param {directional_relationshipFindUniqueArgs} args - Arguments to find a Directional_relationship
     * @example
     * // Get one Directional_relationship
     * const directional_relationship = await prisma.directional_relationship.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends directional_relationshipFindUniqueArgs>(args: SelectSubset<T, directional_relationshipFindUniqueArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Directional_relationship that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {directional_relationshipFindUniqueOrThrowArgs} args - Arguments to find a Directional_relationship
     * @example
     * // Get one Directional_relationship
     * const directional_relationship = await prisma.directional_relationship.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends directional_relationshipFindUniqueOrThrowArgs>(args: SelectSubset<T, directional_relationshipFindUniqueOrThrowArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Directional_relationship that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {directional_relationshipFindFirstArgs} args - Arguments to find a Directional_relationship
     * @example
     * // Get one Directional_relationship
     * const directional_relationship = await prisma.directional_relationship.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends directional_relationshipFindFirstArgs>(args?: SelectSubset<T, directional_relationshipFindFirstArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Directional_relationship that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {directional_relationshipFindFirstOrThrowArgs} args - Arguments to find a Directional_relationship
     * @example
     * // Get one Directional_relationship
     * const directional_relationship = await prisma.directional_relationship.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends directional_relationshipFindFirstOrThrowArgs>(args?: SelectSubset<T, directional_relationshipFindFirstOrThrowArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Directional_relationships that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {directional_relationshipFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Directional_relationships
     * const directional_relationships = await prisma.directional_relationship.findMany()
     * 
     * // Get first 10 Directional_relationships
     * const directional_relationships = await prisma.directional_relationship.findMany({ take: 10 })
     * 
     * // Only select the `directional_relationship_id`
     * const directional_relationshipWithDirectional_relationship_idOnly = await prisma.directional_relationship.findMany({ select: { directional_relationship_id: true } })
     * 
     */
    findMany<T extends directional_relationshipFindManyArgs>(args?: SelectSubset<T, directional_relationshipFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Directional_relationship.
     * @param {directional_relationshipCreateArgs} args - Arguments to create a Directional_relationship.
     * @example
     * // Create one Directional_relationship
     * const Directional_relationship = await prisma.directional_relationship.create({
     *   data: {
     *     // ... data to create a Directional_relationship
     *   }
     * })
     * 
     */
    create<T extends directional_relationshipCreateArgs>(args: SelectSubset<T, directional_relationshipCreateArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Directional_relationships.
     * @param {directional_relationshipCreateManyArgs} args - Arguments to create many Directional_relationships.
     * @example
     * // Create many Directional_relationships
     * const directional_relationship = await prisma.directional_relationship.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends directional_relationshipCreateManyArgs>(args?: SelectSubset<T, directional_relationshipCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Directional_relationships and returns the data saved in the database.
     * @param {directional_relationshipCreateManyAndReturnArgs} args - Arguments to create many Directional_relationships.
     * @example
     * // Create many Directional_relationships
     * const directional_relationship = await prisma.directional_relationship.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Directional_relationships and only return the `directional_relationship_id`
     * const directional_relationshipWithDirectional_relationship_idOnly = await prisma.directional_relationship.createManyAndReturn({
     *   select: { directional_relationship_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends directional_relationshipCreateManyAndReturnArgs>(args?: SelectSubset<T, directional_relationshipCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Directional_relationship.
     * @param {directional_relationshipDeleteArgs} args - Arguments to delete one Directional_relationship.
     * @example
     * // Delete one Directional_relationship
     * const Directional_relationship = await prisma.directional_relationship.delete({
     *   where: {
     *     // ... filter to delete one Directional_relationship
     *   }
     * })
     * 
     */
    delete<T extends directional_relationshipDeleteArgs>(args: SelectSubset<T, directional_relationshipDeleteArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Directional_relationship.
     * @param {directional_relationshipUpdateArgs} args - Arguments to update one Directional_relationship.
     * @example
     * // Update one Directional_relationship
     * const directional_relationship = await prisma.directional_relationship.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends directional_relationshipUpdateArgs>(args: SelectSubset<T, directional_relationshipUpdateArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Directional_relationships.
     * @param {directional_relationshipDeleteManyArgs} args - Arguments to filter Directional_relationships to delete.
     * @example
     * // Delete a few Directional_relationships
     * const { count } = await prisma.directional_relationship.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends directional_relationshipDeleteManyArgs>(args?: SelectSubset<T, directional_relationshipDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Directional_relationships.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {directional_relationshipUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Directional_relationships
     * const directional_relationship = await prisma.directional_relationship.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends directional_relationshipUpdateManyArgs>(args: SelectSubset<T, directional_relationshipUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Directional_relationships and returns the data updated in the database.
     * @param {directional_relationshipUpdateManyAndReturnArgs} args - Arguments to update many Directional_relationships.
     * @example
     * // Update many Directional_relationships
     * const directional_relationship = await prisma.directional_relationship.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Directional_relationships and only return the `directional_relationship_id`
     * const directional_relationshipWithDirectional_relationship_idOnly = await prisma.directional_relationship.updateManyAndReturn({
     *   select: { directional_relationship_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends directional_relationshipUpdateManyAndReturnArgs>(args: SelectSubset<T, directional_relationshipUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Directional_relationship.
     * @param {directional_relationshipUpsertArgs} args - Arguments to update or create a Directional_relationship.
     * @example
     * // Update or create a Directional_relationship
     * const directional_relationship = await prisma.directional_relationship.upsert({
     *   create: {
     *     // ... data to create a Directional_relationship
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Directional_relationship we want to update
     *   }
     * })
     */
    upsert<T extends directional_relationshipUpsertArgs>(args: SelectSubset<T, directional_relationshipUpsertArgs<ExtArgs>>): Prisma__directional_relationshipClient<$Result.GetResult<Prisma.$directional_relationshipPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Directional_relationships.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {directional_relationshipCountArgs} args - Arguments to filter Directional_relationships to count.
     * @example
     * // Count the number of Directional_relationships
     * const count = await prisma.directional_relationship.count({
     *   where: {
     *     // ... the filter for the Directional_relationships we want to count
     *   }
     * })
    **/
    count<T extends directional_relationshipCountArgs>(
      args?: Subset<T, directional_relationshipCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], Directional_relationshipCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Directional_relationship.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {Directional_relationshipAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends Directional_relationshipAggregateArgs>(args: Subset<T, Directional_relationshipAggregateArgs>): Prisma.PrismaPromise<GetDirectional_relationshipAggregateType<T>>

    /**
     * Group by Directional_relationship.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {directional_relationshipGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends directional_relationshipGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: directional_relationshipGroupByArgs['orderBy'] }
        : { orderBy?: directional_relationshipGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, directional_relationshipGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetDirectional_relationshipGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the directional_relationship model
   */
  readonly fields: directional_relationshipFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for directional_relationship.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__directional_relationshipClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    pillar_directional_relationship_from_pillar_idTopillar<T extends directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs> = {}>(args?: Subset<T, directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    pillar_directional_relationship_to_pillar_idTopillar<T extends directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs> = {}>(args?: Subset<T, directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs>>): Prisma__pillarClient<$Result.GetResult<Prisma.$pillarPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the directional_relationship model
   */
  interface directional_relationshipFieldRefs {
    readonly directional_relationship_id: FieldRef<"directional_relationship", 'String'>
    readonly from_pillar_id: FieldRef<"directional_relationship", 'String'>
    readonly to_pillar_id: FieldRef<"directional_relationship", 'String'>
    readonly distance_meters: FieldRef<"directional_relationship", 'Decimal'>
    readonly direction_angle: FieldRef<"directional_relationship", 'Int'>
    readonly is_bidirectional: FieldRef<"directional_relationship", 'Boolean'>
    readonly status: FieldRef<"directional_relationship", 'Boolean'>
    readonly created_at: FieldRef<"directional_relationship", 'DateTime'>
    readonly updated_at: FieldRef<"directional_relationship", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * directional_relationship findUnique
   */
  export type directional_relationshipFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * Filter, which directional_relationship to fetch.
     */
    where: directional_relationshipWhereUniqueInput
  }

  /**
   * directional_relationship findUniqueOrThrow
   */
  export type directional_relationshipFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * Filter, which directional_relationship to fetch.
     */
    where: directional_relationshipWhereUniqueInput
  }

  /**
   * directional_relationship findFirst
   */
  export type directional_relationshipFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * Filter, which directional_relationship to fetch.
     */
    where?: directional_relationshipWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of directional_relationships to fetch.
     */
    orderBy?: directional_relationshipOrderByWithRelationInput | directional_relationshipOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for directional_relationships.
     */
    cursor?: directional_relationshipWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` directional_relationships from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` directional_relationships.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of directional_relationships.
     */
    distinct?: Directional_relationshipScalarFieldEnum | Directional_relationshipScalarFieldEnum[]
  }

  /**
   * directional_relationship findFirstOrThrow
   */
  export type directional_relationshipFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * Filter, which directional_relationship to fetch.
     */
    where?: directional_relationshipWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of directional_relationships to fetch.
     */
    orderBy?: directional_relationshipOrderByWithRelationInput | directional_relationshipOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for directional_relationships.
     */
    cursor?: directional_relationshipWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` directional_relationships from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` directional_relationships.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of directional_relationships.
     */
    distinct?: Directional_relationshipScalarFieldEnum | Directional_relationshipScalarFieldEnum[]
  }

  /**
   * directional_relationship findMany
   */
  export type directional_relationshipFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * Filter, which directional_relationships to fetch.
     */
    where?: directional_relationshipWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of directional_relationships to fetch.
     */
    orderBy?: directional_relationshipOrderByWithRelationInput | directional_relationshipOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing directional_relationships.
     */
    cursor?: directional_relationshipWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` directional_relationships from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` directional_relationships.
     */
    skip?: number
    distinct?: Directional_relationshipScalarFieldEnum | Directional_relationshipScalarFieldEnum[]
  }

  /**
   * directional_relationship create
   */
  export type directional_relationshipCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * The data needed to create a directional_relationship.
     */
    data?: XOR<directional_relationshipCreateInput, directional_relationshipUncheckedCreateInput>
  }

  /**
   * directional_relationship createMany
   */
  export type directional_relationshipCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many directional_relationships.
     */
    data: directional_relationshipCreateManyInput | directional_relationshipCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * directional_relationship createManyAndReturn
   */
  export type directional_relationshipCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * The data used to create many directional_relationships.
     */
    data: directional_relationshipCreateManyInput | directional_relationshipCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * directional_relationship update
   */
  export type directional_relationshipUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * The data needed to update a directional_relationship.
     */
    data: XOR<directional_relationshipUpdateInput, directional_relationshipUncheckedUpdateInput>
    /**
     * Choose, which directional_relationship to update.
     */
    where: directional_relationshipWhereUniqueInput
  }

  /**
   * directional_relationship updateMany
   */
  export type directional_relationshipUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update directional_relationships.
     */
    data: XOR<directional_relationshipUpdateManyMutationInput, directional_relationshipUncheckedUpdateManyInput>
    /**
     * Filter which directional_relationships to update
     */
    where?: directional_relationshipWhereInput
    /**
     * Limit how many directional_relationships to update.
     */
    limit?: number
  }

  /**
   * directional_relationship updateManyAndReturn
   */
  export type directional_relationshipUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * The data used to update directional_relationships.
     */
    data: XOR<directional_relationshipUpdateManyMutationInput, directional_relationshipUncheckedUpdateManyInput>
    /**
     * Filter which directional_relationships to update
     */
    where?: directional_relationshipWhereInput
    /**
     * Limit how many directional_relationships to update.
     */
    limit?: number
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipIncludeUpdateManyAndReturn<ExtArgs> | null
  }

  /**
   * directional_relationship upsert
   */
  export type directional_relationshipUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * The filter to search for the directional_relationship to update in case it exists.
     */
    where: directional_relationshipWhereUniqueInput
    /**
     * In case the directional_relationship found by the `where` argument doesn't exist, create a new directional_relationship with this data.
     */
    create: XOR<directional_relationshipCreateInput, directional_relationshipUncheckedCreateInput>
    /**
     * In case the directional_relationship was found with the provided `where` argument, update it with this data.
     */
    update: XOR<directional_relationshipUpdateInput, directional_relationshipUncheckedUpdateInput>
  }

  /**
   * directional_relationship delete
   */
  export type directional_relationshipDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
    /**
     * Filter which directional_relationship to delete.
     */
    where: directional_relationshipWhereUniqueInput
  }

  /**
   * directional_relationship deleteMany
   */
  export type directional_relationshipDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which directional_relationships to delete
     */
    where?: directional_relationshipWhereInput
    /**
     * Limit how many directional_relationships to delete.
     */
    limit?: number
  }

  /**
   * directional_relationship.pillar_directional_relationship_from_pillar_idTopillar
   */
  export type directional_relationship$pillar_directional_relationship_from_pillar_idTopillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    where?: pillarWhereInput
  }

  /**
   * directional_relationship.pillar_directional_relationship_to_pillar_idTopillar
   */
  export type directional_relationship$pillar_directional_relationship_to_pillar_idTopillarArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the pillar
     */
    select?: pillarSelect<ExtArgs> | null
    /**
     * Omit specific fields from the pillar
     */
    omit?: pillarOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: pillarInclude<ExtArgs> | null
    where?: pillarWhereInput
  }

  /**
   * directional_relationship without action
   */
  export type directional_relationshipDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the directional_relationship
     */
    select?: directional_relationshipSelect<ExtArgs> | null
    /**
     * Omit specific fields from the directional_relationship
     */
    omit?: directional_relationshipOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: directional_relationshipInclude<ExtArgs> | null
  }


  /**
   * Model advertisements
   */

  export type AggregateAdvertisements = {
    _count: AdvertisementsCountAggregateOutputType | null
    _avg: AdvertisementsAvgAggregateOutputType | null
    _sum: AdvertisementsSumAggregateOutputType | null
    _min: AdvertisementsMinAggregateOutputType | null
    _max: AdvertisementsMaxAggregateOutputType | null
  }

  export type AdvertisementsAvgAggregateOutputType = {
    priority: number | null
  }

  export type AdvertisementsSumAggregateOutputType = {
    priority: number | null
  }

  export type AdvertisementsMinAggregateOutputType = {
    advertisements_id: string | null
    facility_id: string | null
    parking_lot_id: string | null
    title: string | null
    content_type: string | null
    image: Uint8Array | null
    text_content: string | null
    position: string | null
    priority: number | null
    start_date: Date | null
    end_date: Date | null
    is_active: boolean | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type AdvertisementsMaxAggregateOutputType = {
    advertisements_id: string | null
    facility_id: string | null
    parking_lot_id: string | null
    title: string | null
    content_type: string | null
    image: Uint8Array | null
    text_content: string | null
    position: string | null
    priority: number | null
    start_date: Date | null
    end_date: Date | null
    is_active: boolean | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type AdvertisementsCountAggregateOutputType = {
    advertisements_id: number
    facility_id: number
    parking_lot_id: number
    title: number
    content_type: number
    image: number
    text_content: number
    position: number
    priority: number
    start_date: number
    end_date: number
    is_active: number
    status: number
    created_at: number
    updated_at: number
    _all: number
  }


  export type AdvertisementsAvgAggregateInputType = {
    priority?: true
  }

  export type AdvertisementsSumAggregateInputType = {
    priority?: true
  }

  export type AdvertisementsMinAggregateInputType = {
    advertisements_id?: true
    facility_id?: true
    parking_lot_id?: true
    title?: true
    content_type?: true
    image?: true
    text_content?: true
    position?: true
    priority?: true
    start_date?: true
    end_date?: true
    is_active?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type AdvertisementsMaxAggregateInputType = {
    advertisements_id?: true
    facility_id?: true
    parking_lot_id?: true
    title?: true
    content_type?: true
    image?: true
    text_content?: true
    position?: true
    priority?: true
    start_date?: true
    end_date?: true
    is_active?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type AdvertisementsCountAggregateInputType = {
    advertisements_id?: true
    facility_id?: true
    parking_lot_id?: true
    title?: true
    content_type?: true
    image?: true
    text_content?: true
    position?: true
    priority?: true
    start_date?: true
    end_date?: true
    is_active?: true
    status?: true
    created_at?: true
    updated_at?: true
    _all?: true
  }

  export type AdvertisementsAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which advertisements to aggregate.
     */
    where?: advertisementsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of advertisements to fetch.
     */
    orderBy?: advertisementsOrderByWithRelationInput | advertisementsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: advertisementsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` advertisements from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` advertisements.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned advertisements
    **/
    _count?: true | AdvertisementsCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to average
    **/
    _avg?: AdvertisementsAvgAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to sum
    **/
    _sum?: AdvertisementsSumAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: AdvertisementsMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: AdvertisementsMaxAggregateInputType
  }

  export type GetAdvertisementsAggregateType<T extends AdvertisementsAggregateArgs> = {
        [P in keyof T & keyof AggregateAdvertisements]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateAdvertisements[P]>
      : GetScalarType<T[P], AggregateAdvertisements[P]>
  }




  export type advertisementsGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: advertisementsWhereInput
    orderBy?: advertisementsOrderByWithAggregationInput | advertisementsOrderByWithAggregationInput[]
    by: AdvertisementsScalarFieldEnum[] | AdvertisementsScalarFieldEnum
    having?: advertisementsScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: AdvertisementsCountAggregateInputType | true
    _avg?: AdvertisementsAvgAggregateInputType
    _sum?: AdvertisementsSumAggregateInputType
    _min?: AdvertisementsMinAggregateInputType
    _max?: AdvertisementsMaxAggregateInputType
  }

  export type AdvertisementsGroupByOutputType = {
    advertisements_id: string
    facility_id: string | null
    parking_lot_id: string | null
    title: string
    content_type: string | null
    image: Uint8Array | null
    text_content: string | null
    position: string | null
    priority: number | null
    start_date: Date | null
    end_date: Date | null
    is_active: boolean | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    _count: AdvertisementsCountAggregateOutputType | null
    _avg: AdvertisementsAvgAggregateOutputType | null
    _sum: AdvertisementsSumAggregateOutputType | null
    _min: AdvertisementsMinAggregateOutputType | null
    _max: AdvertisementsMaxAggregateOutputType | null
  }

  type GetAdvertisementsGroupByPayload<T extends advertisementsGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<AdvertisementsGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof AdvertisementsGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], AdvertisementsGroupByOutputType[P]>
            : GetScalarType<T[P], AdvertisementsGroupByOutputType[P]>
        }
      >
    >


  export type advertisementsSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    advertisements_id?: boolean
    facility_id?: boolean
    parking_lot_id?: boolean
    title?: boolean
    content_type?: boolean
    image?: boolean
    text_content?: boolean
    position?: boolean
    priority?: boolean
    start_date?: boolean
    end_date?: boolean
    is_active?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    facilities?: boolean | advertisements$facilitiesArgs<ExtArgs>
    parking_lot?: boolean | advertisements$parking_lotArgs<ExtArgs>
  }, ExtArgs["result"]["advertisements"]>

  export type advertisementsSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    advertisements_id?: boolean
    facility_id?: boolean
    parking_lot_id?: boolean
    title?: boolean
    content_type?: boolean
    image?: boolean
    text_content?: boolean
    position?: boolean
    priority?: boolean
    start_date?: boolean
    end_date?: boolean
    is_active?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    facilities?: boolean | advertisements$facilitiesArgs<ExtArgs>
    parking_lot?: boolean | advertisements$parking_lotArgs<ExtArgs>
  }, ExtArgs["result"]["advertisements"]>

  export type advertisementsSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    advertisements_id?: boolean
    facility_id?: boolean
    parking_lot_id?: boolean
    title?: boolean
    content_type?: boolean
    image?: boolean
    text_content?: boolean
    position?: boolean
    priority?: boolean
    start_date?: boolean
    end_date?: boolean
    is_active?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    facilities?: boolean | advertisements$facilitiesArgs<ExtArgs>
    parking_lot?: boolean | advertisements$parking_lotArgs<ExtArgs>
  }, ExtArgs["result"]["advertisements"]>

  export type advertisementsSelectScalar = {
    advertisements_id?: boolean
    facility_id?: boolean
    parking_lot_id?: boolean
    title?: boolean
    content_type?: boolean
    image?: boolean
    text_content?: boolean
    position?: boolean
    priority?: boolean
    start_date?: boolean
    end_date?: boolean
    is_active?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }

  export type advertisementsOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"advertisements_id" | "facility_id" | "parking_lot_id" | "title" | "content_type" | "image" | "text_content" | "position" | "priority" | "start_date" | "end_date" | "is_active" | "status" | "created_at" | "updated_at", ExtArgs["result"]["advertisements"]>
  export type advertisementsInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    facilities?: boolean | advertisements$facilitiesArgs<ExtArgs>
    parking_lot?: boolean | advertisements$parking_lotArgs<ExtArgs>
  }
  export type advertisementsIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    facilities?: boolean | advertisements$facilitiesArgs<ExtArgs>
    parking_lot?: boolean | advertisements$parking_lotArgs<ExtArgs>
  }
  export type advertisementsIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    facilities?: boolean | advertisements$facilitiesArgs<ExtArgs>
    parking_lot?: boolean | advertisements$parking_lotArgs<ExtArgs>
  }

  export type $advertisementsPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "advertisements"
    objects: {
      facilities: Prisma.$facilitiesPayload<ExtArgs> | null
      parking_lot: Prisma.$parking_lotPayload<ExtArgs> | null
    }
    scalars: $Extensions.GetPayloadResult<{
      advertisements_id: string
      facility_id: string | null
      parking_lot_id: string | null
      title: string
      content_type: string | null
      image: Uint8Array | null
      text_content: string | null
      position: string | null
      priority: number | null
      start_date: Date | null
      end_date: Date | null
      is_active: boolean | null
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
    }, ExtArgs["result"]["advertisements"]>
    composites: {}
  }

  type advertisementsGetPayload<S extends boolean | null | undefined | advertisementsDefaultArgs> = $Result.GetResult<Prisma.$advertisementsPayload, S>

  type advertisementsCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<advertisementsFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: AdvertisementsCountAggregateInputType | true
    }

  export interface advertisementsDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['advertisements'], meta: { name: 'advertisements' } }
    /**
     * Find zero or one Advertisements that matches the filter.
     * @param {advertisementsFindUniqueArgs} args - Arguments to find a Advertisements
     * @example
     * // Get one Advertisements
     * const advertisements = await prisma.advertisements.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends advertisementsFindUniqueArgs>(args: SelectSubset<T, advertisementsFindUniqueArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Advertisements that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {advertisementsFindUniqueOrThrowArgs} args - Arguments to find a Advertisements
     * @example
     * // Get one Advertisements
     * const advertisements = await prisma.advertisements.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends advertisementsFindUniqueOrThrowArgs>(args: SelectSubset<T, advertisementsFindUniqueOrThrowArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Advertisements that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {advertisementsFindFirstArgs} args - Arguments to find a Advertisements
     * @example
     * // Get one Advertisements
     * const advertisements = await prisma.advertisements.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends advertisementsFindFirstArgs>(args?: SelectSubset<T, advertisementsFindFirstArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Advertisements that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {advertisementsFindFirstOrThrowArgs} args - Arguments to find a Advertisements
     * @example
     * // Get one Advertisements
     * const advertisements = await prisma.advertisements.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends advertisementsFindFirstOrThrowArgs>(args?: SelectSubset<T, advertisementsFindFirstOrThrowArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Advertisements that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {advertisementsFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Advertisements
     * const advertisements = await prisma.advertisements.findMany()
     * 
     * // Get first 10 Advertisements
     * const advertisements = await prisma.advertisements.findMany({ take: 10 })
     * 
     * // Only select the `advertisements_id`
     * const advertisementsWithAdvertisements_idOnly = await prisma.advertisements.findMany({ select: { advertisements_id: true } })
     * 
     */
    findMany<T extends advertisementsFindManyArgs>(args?: SelectSubset<T, advertisementsFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Advertisements.
     * @param {advertisementsCreateArgs} args - Arguments to create a Advertisements.
     * @example
     * // Create one Advertisements
     * const Advertisements = await prisma.advertisements.create({
     *   data: {
     *     // ... data to create a Advertisements
     *   }
     * })
     * 
     */
    create<T extends advertisementsCreateArgs>(args: SelectSubset<T, advertisementsCreateArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Advertisements.
     * @param {advertisementsCreateManyArgs} args - Arguments to create many Advertisements.
     * @example
     * // Create many Advertisements
     * const advertisements = await prisma.advertisements.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends advertisementsCreateManyArgs>(args?: SelectSubset<T, advertisementsCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Advertisements and returns the data saved in the database.
     * @param {advertisementsCreateManyAndReturnArgs} args - Arguments to create many Advertisements.
     * @example
     * // Create many Advertisements
     * const advertisements = await prisma.advertisements.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Advertisements and only return the `advertisements_id`
     * const advertisementsWithAdvertisements_idOnly = await prisma.advertisements.createManyAndReturn({
     *   select: { advertisements_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends advertisementsCreateManyAndReturnArgs>(args?: SelectSubset<T, advertisementsCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Advertisements.
     * @param {advertisementsDeleteArgs} args - Arguments to delete one Advertisements.
     * @example
     * // Delete one Advertisements
     * const Advertisements = await prisma.advertisements.delete({
     *   where: {
     *     // ... filter to delete one Advertisements
     *   }
     * })
     * 
     */
    delete<T extends advertisementsDeleteArgs>(args: SelectSubset<T, advertisementsDeleteArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Advertisements.
     * @param {advertisementsUpdateArgs} args - Arguments to update one Advertisements.
     * @example
     * // Update one Advertisements
     * const advertisements = await prisma.advertisements.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends advertisementsUpdateArgs>(args: SelectSubset<T, advertisementsUpdateArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Advertisements.
     * @param {advertisementsDeleteManyArgs} args - Arguments to filter Advertisements to delete.
     * @example
     * // Delete a few Advertisements
     * const { count } = await prisma.advertisements.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends advertisementsDeleteManyArgs>(args?: SelectSubset<T, advertisementsDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Advertisements.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {advertisementsUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Advertisements
     * const advertisements = await prisma.advertisements.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends advertisementsUpdateManyArgs>(args: SelectSubset<T, advertisementsUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Advertisements and returns the data updated in the database.
     * @param {advertisementsUpdateManyAndReturnArgs} args - Arguments to update many Advertisements.
     * @example
     * // Update many Advertisements
     * const advertisements = await prisma.advertisements.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Advertisements and only return the `advertisements_id`
     * const advertisementsWithAdvertisements_idOnly = await prisma.advertisements.updateManyAndReturn({
     *   select: { advertisements_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends advertisementsUpdateManyAndReturnArgs>(args: SelectSubset<T, advertisementsUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Advertisements.
     * @param {advertisementsUpsertArgs} args - Arguments to update or create a Advertisements.
     * @example
     * // Update or create a Advertisements
     * const advertisements = await prisma.advertisements.upsert({
     *   create: {
     *     // ... data to create a Advertisements
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Advertisements we want to update
     *   }
     * })
     */
    upsert<T extends advertisementsUpsertArgs>(args: SelectSubset<T, advertisementsUpsertArgs<ExtArgs>>): Prisma__advertisementsClient<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Advertisements.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {advertisementsCountArgs} args - Arguments to filter Advertisements to count.
     * @example
     * // Count the number of Advertisements
     * const count = await prisma.advertisements.count({
     *   where: {
     *     // ... the filter for the Advertisements we want to count
     *   }
     * })
    **/
    count<T extends advertisementsCountArgs>(
      args?: Subset<T, advertisementsCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], AdvertisementsCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Advertisements.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {AdvertisementsAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends AdvertisementsAggregateArgs>(args: Subset<T, AdvertisementsAggregateArgs>): Prisma.PrismaPromise<GetAdvertisementsAggregateType<T>>

    /**
     * Group by Advertisements.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {advertisementsGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends advertisementsGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: advertisementsGroupByArgs['orderBy'] }
        : { orderBy?: advertisementsGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, advertisementsGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetAdvertisementsGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the advertisements model
   */
  readonly fields: advertisementsFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for advertisements.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__advertisementsClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    facilities<T extends advertisements$facilitiesArgs<ExtArgs> = {}>(args?: Subset<T, advertisements$facilitiesArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    parking_lot<T extends advertisements$parking_lotArgs<ExtArgs> = {}>(args?: Subset<T, advertisements$parking_lotArgs<ExtArgs>>): Prisma__parking_lotClient<$Result.GetResult<Prisma.$parking_lotPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the advertisements model
   */
  interface advertisementsFieldRefs {
    readonly advertisements_id: FieldRef<"advertisements", 'String'>
    readonly facility_id: FieldRef<"advertisements", 'String'>
    readonly parking_lot_id: FieldRef<"advertisements", 'String'>
    readonly title: FieldRef<"advertisements", 'String'>
    readonly content_type: FieldRef<"advertisements", 'String'>
    readonly image: FieldRef<"advertisements", 'Bytes'>
    readonly text_content: FieldRef<"advertisements", 'String'>
    readonly position: FieldRef<"advertisements", 'String'>
    readonly priority: FieldRef<"advertisements", 'Int'>
    readonly start_date: FieldRef<"advertisements", 'DateTime'>
    readonly end_date: FieldRef<"advertisements", 'DateTime'>
    readonly is_active: FieldRef<"advertisements", 'Boolean'>
    readonly status: FieldRef<"advertisements", 'Boolean'>
    readonly created_at: FieldRef<"advertisements", 'DateTime'>
    readonly updated_at: FieldRef<"advertisements", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * advertisements findUnique
   */
  export type advertisementsFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * Filter, which advertisements to fetch.
     */
    where: advertisementsWhereUniqueInput
  }

  /**
   * advertisements findUniqueOrThrow
   */
  export type advertisementsFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * Filter, which advertisements to fetch.
     */
    where: advertisementsWhereUniqueInput
  }

  /**
   * advertisements findFirst
   */
  export type advertisementsFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * Filter, which advertisements to fetch.
     */
    where?: advertisementsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of advertisements to fetch.
     */
    orderBy?: advertisementsOrderByWithRelationInput | advertisementsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for advertisements.
     */
    cursor?: advertisementsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` advertisements from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` advertisements.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of advertisements.
     */
    distinct?: AdvertisementsScalarFieldEnum | AdvertisementsScalarFieldEnum[]
  }

  /**
   * advertisements findFirstOrThrow
   */
  export type advertisementsFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * Filter, which advertisements to fetch.
     */
    where?: advertisementsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of advertisements to fetch.
     */
    orderBy?: advertisementsOrderByWithRelationInput | advertisementsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for advertisements.
     */
    cursor?: advertisementsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` advertisements from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` advertisements.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of advertisements.
     */
    distinct?: AdvertisementsScalarFieldEnum | AdvertisementsScalarFieldEnum[]
  }

  /**
   * advertisements findMany
   */
  export type advertisementsFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * Filter, which advertisements to fetch.
     */
    where?: advertisementsWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of advertisements to fetch.
     */
    orderBy?: advertisementsOrderByWithRelationInput | advertisementsOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing advertisements.
     */
    cursor?: advertisementsWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` advertisements from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` advertisements.
     */
    skip?: number
    distinct?: AdvertisementsScalarFieldEnum | AdvertisementsScalarFieldEnum[]
  }

  /**
   * advertisements create
   */
  export type advertisementsCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * The data needed to create a advertisements.
     */
    data: XOR<advertisementsCreateInput, advertisementsUncheckedCreateInput>
  }

  /**
   * advertisements createMany
   */
  export type advertisementsCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many advertisements.
     */
    data: advertisementsCreateManyInput | advertisementsCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * advertisements createManyAndReturn
   */
  export type advertisementsCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * The data used to create many advertisements.
     */
    data: advertisementsCreateManyInput | advertisementsCreateManyInput[]
    skipDuplicates?: boolean
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsIncludeCreateManyAndReturn<ExtArgs> | null
  }

  /**
   * advertisements update
   */
  export type advertisementsUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * The data needed to update a advertisements.
     */
    data: XOR<advertisementsUpdateInput, advertisementsUncheckedUpdateInput>
    /**
     * Choose, which advertisements to update.
     */
    where: advertisementsWhereUniqueInput
  }

  /**
   * advertisements updateMany
   */
  export type advertisementsUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update advertisements.
     */
    data: XOR<advertisementsUpdateManyMutationInput, advertisementsUncheckedUpdateManyInput>
    /**
     * Filter which advertisements to update
     */
    where?: advertisementsWhereInput
    /**
     * Limit how many advertisements to update.
     */
    limit?: number
  }

  /**
   * advertisements updateManyAndReturn
   */
  export type advertisementsUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * The data used to update advertisements.
     */
    data: XOR<advertisementsUpdateManyMutationInput, advertisementsUncheckedUpdateManyInput>
    /**
     * Filter which advertisements to update
     */
    where?: advertisementsWhereInput
    /**
     * Limit how many advertisements to update.
     */
    limit?: number
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsIncludeUpdateManyAndReturn<ExtArgs> | null
  }

  /**
   * advertisements upsert
   */
  export type advertisementsUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * The filter to search for the advertisements to update in case it exists.
     */
    where: advertisementsWhereUniqueInput
    /**
     * In case the advertisements found by the `where` argument doesn't exist, create a new advertisements with this data.
     */
    create: XOR<advertisementsCreateInput, advertisementsUncheckedCreateInput>
    /**
     * In case the advertisements was found with the provided `where` argument, update it with this data.
     */
    update: XOR<advertisementsUpdateInput, advertisementsUncheckedUpdateInput>
  }

  /**
   * advertisements delete
   */
  export type advertisementsDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    /**
     * Filter which advertisements to delete.
     */
    where: advertisementsWhereUniqueInput
  }

  /**
   * advertisements deleteMany
   */
  export type advertisementsDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which advertisements to delete
     */
    where?: advertisementsWhereInput
    /**
     * Limit how many advertisements to delete.
     */
    limit?: number
  }

  /**
   * advertisements.facilities
   */
  export type advertisements$facilitiesArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    where?: facilitiesWhereInput
  }

  /**
   * advertisements.parking_lot
   */
  export type advertisements$parking_lotArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the parking_lot
     */
    select?: parking_lotSelect<ExtArgs> | null
    /**
     * Omit specific fields from the parking_lot
     */
    omit?: parking_lotOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: parking_lotInclude<ExtArgs> | null
    where?: parking_lotWhereInput
  }

  /**
   * advertisements without action
   */
  export type advertisementsDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
  }


  /**
   * Model facilities
   */

  export type AggregateFacilities = {
    _count: FacilitiesCountAggregateOutputType | null
    _min: FacilitiesMinAggregateOutputType | null
    _max: FacilitiesMaxAggregateOutputType | null
  }

  export type FacilitiesMinAggregateOutputType = {
    facilities_id: string | null
    name: string | null
    timezone: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type FacilitiesMaxAggregateOutputType = {
    facilities_id: string | null
    name: string | null
    timezone: string | null
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
  }

  export type FacilitiesCountAggregateOutputType = {
    facilities_id: number
    name: number
    timezone: number
    status: number
    created_at: number
    updated_at: number
    _all: number
  }


  export type FacilitiesMinAggregateInputType = {
    facilities_id?: true
    name?: true
    timezone?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type FacilitiesMaxAggregateInputType = {
    facilities_id?: true
    name?: true
    timezone?: true
    status?: true
    created_at?: true
    updated_at?: true
  }

  export type FacilitiesCountAggregateInputType = {
    facilities_id?: true
    name?: true
    timezone?: true
    status?: true
    created_at?: true
    updated_at?: true
    _all?: true
  }

  export type FacilitiesAggregateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which facilities to aggregate.
     */
    where?: facilitiesWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of facilities to fetch.
     */
    orderBy?: facilitiesOrderByWithRelationInput | facilitiesOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the start position
     */
    cursor?: facilitiesWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` facilities from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` facilities.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Count returned facilities
    **/
    _count?: true | FacilitiesCountAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the minimum value
    **/
    _min?: FacilitiesMinAggregateInputType
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
     * 
     * Select which fields to find the maximum value
    **/
    _max?: FacilitiesMaxAggregateInputType
  }

  export type GetFacilitiesAggregateType<T extends FacilitiesAggregateArgs> = {
        [P in keyof T & keyof AggregateFacilities]: P extends '_count' | 'count'
      ? T[P] extends true
        ? number
        : GetScalarType<T[P], AggregateFacilities[P]>
      : GetScalarType<T[P], AggregateFacilities[P]>
  }




  export type facilitiesGroupByArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    where?: facilitiesWhereInput
    orderBy?: facilitiesOrderByWithAggregationInput | facilitiesOrderByWithAggregationInput[]
    by: FacilitiesScalarFieldEnum[] | FacilitiesScalarFieldEnum
    having?: facilitiesScalarWhereWithAggregatesInput
    take?: number
    skip?: number
    _count?: FacilitiesCountAggregateInputType | true
    _min?: FacilitiesMinAggregateInputType
    _max?: FacilitiesMaxAggregateInputType
  }

  export type FacilitiesGroupByOutputType = {
    facilities_id: string
    name: string
    timezone: string
    status: boolean | null
    created_at: Date | null
    updated_at: Date | null
    _count: FacilitiesCountAggregateOutputType | null
    _min: FacilitiesMinAggregateOutputType | null
    _max: FacilitiesMaxAggregateOutputType | null
  }

  type GetFacilitiesGroupByPayload<T extends facilitiesGroupByArgs> = Prisma.PrismaPromise<
    Array<
      PickEnumerable<FacilitiesGroupByOutputType, T['by']> &
        {
          [P in ((keyof T) & (keyof FacilitiesGroupByOutputType))]: P extends '_count'
            ? T[P] extends boolean
              ? number
              : GetScalarType<T[P], FacilitiesGroupByOutputType[P]>
            : GetScalarType<T[P], FacilitiesGroupByOutputType[P]>
        }
      >
    >


  export type facilitiesSelect<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    facilities_id?: boolean
    name?: boolean
    timezone?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
    advertisements?: boolean | facilities$advertisementsArgs<ExtArgs>
    _count?: boolean | FacilitiesCountOutputTypeDefaultArgs<ExtArgs>
  }, ExtArgs["result"]["facilities"]>

  export type facilitiesSelectCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    facilities_id?: boolean
    name?: boolean
    timezone?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }, ExtArgs["result"]["facilities"]>

  export type facilitiesSelectUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetSelect<{
    facilities_id?: boolean
    name?: boolean
    timezone?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }, ExtArgs["result"]["facilities"]>

  export type facilitiesSelectScalar = {
    facilities_id?: boolean
    name?: boolean
    timezone?: boolean
    status?: boolean
    created_at?: boolean
    updated_at?: boolean
  }

  export type facilitiesOmit<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = $Extensions.GetOmit<"facilities_id" | "name" | "timezone" | "status" | "created_at" | "updated_at", ExtArgs["result"]["facilities"]>
  export type facilitiesInclude<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    advertisements?: boolean | facilities$advertisementsArgs<ExtArgs>
    _count?: boolean | FacilitiesCountOutputTypeDefaultArgs<ExtArgs>
  }
  export type facilitiesIncludeCreateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}
  export type facilitiesIncludeUpdateManyAndReturn<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {}

  export type $facilitiesPayload<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    name: "facilities"
    objects: {
      advertisements: Prisma.$advertisementsPayload<ExtArgs>[]
    }
    scalars: $Extensions.GetPayloadResult<{
      facilities_id: string
      name: string
      timezone: string
      status: boolean | null
      created_at: Date | null
      updated_at: Date | null
    }, ExtArgs["result"]["facilities"]>
    composites: {}
  }

  type facilitiesGetPayload<S extends boolean | null | undefined | facilitiesDefaultArgs> = $Result.GetResult<Prisma.$facilitiesPayload, S>

  type facilitiesCountArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> =
    Omit<facilitiesFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
      select?: FacilitiesCountAggregateInputType | true
    }

  export interface facilitiesDelegate<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> {
    [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['facilities'], meta: { name: 'facilities' } }
    /**
     * Find zero or one Facilities that matches the filter.
     * @param {facilitiesFindUniqueArgs} args - Arguments to find a Facilities
     * @example
     * // Get one Facilities
     * const facilities = await prisma.facilities.findUnique({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUnique<T extends facilitiesFindUniqueArgs>(args: SelectSubset<T, facilitiesFindUniqueArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find one Facilities that matches the filter or throw an error with `error.code='P2025'`
     * if no matches were found.
     * @param {facilitiesFindUniqueOrThrowArgs} args - Arguments to find a Facilities
     * @example
     * // Get one Facilities
     * const facilities = await prisma.facilities.findUniqueOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findUniqueOrThrow<T extends facilitiesFindUniqueOrThrowArgs>(args: SelectSubset<T, facilitiesFindUniqueOrThrowArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Facilities that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {facilitiesFindFirstArgs} args - Arguments to find a Facilities
     * @example
     * // Get one Facilities
     * const facilities = await prisma.facilities.findFirst({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirst<T extends facilitiesFindFirstArgs>(args?: SelectSubset<T, facilitiesFindFirstArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

    /**
     * Find the first Facilities that matches the filter or
     * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {facilitiesFindFirstOrThrowArgs} args - Arguments to find a Facilities
     * @example
     * // Get one Facilities
     * const facilities = await prisma.facilities.findFirstOrThrow({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     */
    findFirstOrThrow<T extends facilitiesFindFirstOrThrowArgs>(args?: SelectSubset<T, facilitiesFindFirstOrThrowArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Find zero or more Facilities that matches the filter.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {facilitiesFindManyArgs} args - Arguments to filter and select certain fields only.
     * @example
     * // Get all Facilities
     * const facilities = await prisma.facilities.findMany()
     * 
     * // Get first 10 Facilities
     * const facilities = await prisma.facilities.findMany({ take: 10 })
     * 
     * // Only select the `facilities_id`
     * const facilitiesWithFacilities_idOnly = await prisma.facilities.findMany({ select: { facilities_id: true } })
     * 
     */
    findMany<T extends facilitiesFindManyArgs>(args?: SelectSubset<T, facilitiesFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

    /**
     * Create a Facilities.
     * @param {facilitiesCreateArgs} args - Arguments to create a Facilities.
     * @example
     * // Create one Facilities
     * const Facilities = await prisma.facilities.create({
     *   data: {
     *     // ... data to create a Facilities
     *   }
     * })
     * 
     */
    create<T extends facilitiesCreateArgs>(args: SelectSubset<T, facilitiesCreateArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Create many Facilities.
     * @param {facilitiesCreateManyArgs} args - Arguments to create many Facilities.
     * @example
     * // Create many Facilities
     * const facilities = await prisma.facilities.createMany({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     *     
     */
    createMany<T extends facilitiesCreateManyArgs>(args?: SelectSubset<T, facilitiesCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Create many Facilities and returns the data saved in the database.
     * @param {facilitiesCreateManyAndReturnArgs} args - Arguments to create many Facilities.
     * @example
     * // Create many Facilities
     * const facilities = await prisma.facilities.createManyAndReturn({
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Create many Facilities and only return the `facilities_id`
     * const facilitiesWithFacilities_idOnly = await prisma.facilities.createManyAndReturn({
     *   select: { facilities_id: true },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    createManyAndReturn<T extends facilitiesCreateManyAndReturnArgs>(args?: SelectSubset<T, facilitiesCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

    /**
     * Delete a Facilities.
     * @param {facilitiesDeleteArgs} args - Arguments to delete one Facilities.
     * @example
     * // Delete one Facilities
     * const Facilities = await prisma.facilities.delete({
     *   where: {
     *     // ... filter to delete one Facilities
     *   }
     * })
     * 
     */
    delete<T extends facilitiesDeleteArgs>(args: SelectSubset<T, facilitiesDeleteArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Update one Facilities.
     * @param {facilitiesUpdateArgs} args - Arguments to update one Facilities.
     * @example
     * // Update one Facilities
     * const facilities = await prisma.facilities.update({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    update<T extends facilitiesUpdateArgs>(args: SelectSubset<T, facilitiesUpdateArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

    /**
     * Delete zero or more Facilities.
     * @param {facilitiesDeleteManyArgs} args - Arguments to filter Facilities to delete.
     * @example
     * // Delete a few Facilities
     * const { count } = await prisma.facilities.deleteMany({
     *   where: {
     *     // ... provide filter here
     *   }
     * })
     * 
     */
    deleteMany<T extends facilitiesDeleteManyArgs>(args?: SelectSubset<T, facilitiesDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Facilities.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {facilitiesUpdateManyArgs} args - Arguments to update one or more rows.
     * @example
     * // Update many Facilities
     * const facilities = await prisma.facilities.updateMany({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: {
     *     // ... provide data here
     *   }
     * })
     * 
     */
    updateMany<T extends facilitiesUpdateManyArgs>(args: SelectSubset<T, facilitiesUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<BatchPayload>

    /**
     * Update zero or more Facilities and returns the data updated in the database.
     * @param {facilitiesUpdateManyAndReturnArgs} args - Arguments to update many Facilities.
     * @example
     * // Update many Facilities
     * const facilities = await prisma.facilities.updateManyAndReturn({
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * 
     * // Update zero or more Facilities and only return the `facilities_id`
     * const facilitiesWithFacilities_idOnly = await prisma.facilities.updateManyAndReturn({
     *   select: { facilities_id: true },
     *   where: {
     *     // ... provide filter here
     *   },
     *   data: [
     *     // ... provide data here
     *   ]
     * })
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * 
     */
    updateManyAndReturn<T extends facilitiesUpdateManyAndReturnArgs>(args: SelectSubset<T, facilitiesUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

    /**
     * Create or update one Facilities.
     * @param {facilitiesUpsertArgs} args - Arguments to update or create a Facilities.
     * @example
     * // Update or create a Facilities
     * const facilities = await prisma.facilities.upsert({
     *   create: {
     *     // ... data to create a Facilities
     *   },
     *   update: {
     *     // ... in case it already exists, update
     *   },
     *   where: {
     *     // ... the filter for the Facilities we want to update
     *   }
     * })
     */
    upsert<T extends facilitiesUpsertArgs>(args: SelectSubset<T, facilitiesUpsertArgs<ExtArgs>>): Prisma__facilitiesClient<$Result.GetResult<Prisma.$facilitiesPayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


    /**
     * Count the number of Facilities.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {facilitiesCountArgs} args - Arguments to filter Facilities to count.
     * @example
     * // Count the number of Facilities
     * const count = await prisma.facilities.count({
     *   where: {
     *     // ... the filter for the Facilities we want to count
     *   }
     * })
    **/
    count<T extends facilitiesCountArgs>(
      args?: Subset<T, facilitiesCountArgs>,
    ): Prisma.PrismaPromise<
      T extends $Utils.Record<'select', any>
        ? T['select'] extends true
          ? number
          : GetScalarType<T['select'], FacilitiesCountAggregateOutputType>
        : number
    >

    /**
     * Allows you to perform aggregations operations on a Facilities.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {FacilitiesAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
     * @example
     * // Ordered by age ascending
     * // Where email contains prisma.io
     * // Limited to the 10 users
     * const aggregations = await prisma.user.aggregate({
     *   _avg: {
     *     age: true,
     *   },
     *   where: {
     *     email: {
     *       contains: "prisma.io",
     *     },
     *   },
     *   orderBy: {
     *     age: "asc",
     *   },
     *   take: 10,
     * })
    **/
    aggregate<T extends FacilitiesAggregateArgs>(args: Subset<T, FacilitiesAggregateArgs>): Prisma.PrismaPromise<GetFacilitiesAggregateType<T>>

    /**
     * Group by Facilities.
     * Note, that providing `undefined` is treated as the value not being there.
     * Read more here: https://pris.ly/d/null-undefined
     * @param {facilitiesGroupByArgs} args - Group by arguments.
     * @example
     * // Group by city, order by createdAt, get count
     * const result = await prisma.user.groupBy({
     *   by: ['city', 'createdAt'],
     *   orderBy: {
     *     createdAt: true
     *   },
     *   _count: {
     *     _all: true
     *   },
     * })
     * 
    **/
    groupBy<
      T extends facilitiesGroupByArgs,
      HasSelectOrTake extends Or<
        Extends<'skip', Keys<T>>,
        Extends<'take', Keys<T>>
      >,
      OrderByArg extends True extends HasSelectOrTake
        ? { orderBy: facilitiesGroupByArgs['orderBy'] }
        : { orderBy?: facilitiesGroupByArgs['orderBy'] },
      OrderFields extends ExcludeUnderscoreKeys<Keys<MaybeTupleToUnion<T['orderBy']>>>,
      ByFields extends MaybeTupleToUnion<T['by']>,
      ByValid extends Has<ByFields, OrderFields>,
      HavingFields extends GetHavingFields<T['having']>,
      HavingValid extends Has<ByFields, HavingFields>,
      ByEmpty extends T['by'] extends never[] ? True : False,
      InputErrors extends ByEmpty extends True
      ? `Error: "by" must not be empty.`
      : HavingValid extends False
      ? {
          [P in HavingFields]: P extends ByFields
            ? never
            : P extends string
            ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
            : [
                Error,
                'Field ',
                P,
                ` in "having" needs to be provided in "by"`,
              ]
        }[HavingFields]
      : 'take' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "take", you also need to provide "orderBy"'
      : 'skip' extends Keys<T>
      ? 'orderBy' extends Keys<T>
        ? ByValid extends True
          ? {}
          : {
              [P in OrderFields]: P extends ByFields
                ? never
                : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
            }[OrderFields]
        : 'Error: If you provide "skip", you also need to provide "orderBy"'
      : ByValid extends True
      ? {}
      : {
          [P in OrderFields]: P extends ByFields
            ? never
            : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
        }[OrderFields]
    >(args: SubsetIntersection<T, facilitiesGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetFacilitiesGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
  /**
   * Fields of the facilities model
   */
  readonly fields: facilitiesFieldRefs;
  }

  /**
   * The delegate class that acts as a "Promise-like" for facilities.
   * Why is this prefixed with `Prisma__`?
   * Because we want to prevent naming conflicts as mentioned in
   * https://github.com/prisma/prisma-client-js/issues/707
   */
  export interface Prisma__facilitiesClient<T, Null = never, ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
    readonly [Symbol.toStringTag]: "PrismaPromise"
    advertisements<T extends facilities$advertisementsArgs<ExtArgs> = {}>(args?: Subset<T, facilities$advertisementsArgs<ExtArgs>>): Prisma.PrismaPromise<$Result.GetResult<Prisma.$advertisementsPayload<ExtArgs>, T, "findMany", GlobalOmitOptions> | Null>
    /**
     * Attaches callbacks for the resolution and/or rejection of the Promise.
     * @param onfulfilled The callback to execute when the Promise is resolved.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of which ever callback is executed.
     */
    then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): $Utils.JsPromise<TResult1 | TResult2>
    /**
     * Attaches a callback for only the rejection of the Promise.
     * @param onrejected The callback to execute when the Promise is rejected.
     * @returns A Promise for the completion of the callback.
     */
    catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): $Utils.JsPromise<T | TResult>
    /**
     * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
     * resolved value cannot be modified from the callback.
     * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
     * @returns A Promise for the completion of the callback.
     */
    finally(onfinally?: (() => void) | undefined | null): $Utils.JsPromise<T>
  }




  /**
   * Fields of the facilities model
   */
  interface facilitiesFieldRefs {
    readonly facilities_id: FieldRef<"facilities", 'String'>
    readonly name: FieldRef<"facilities", 'String'>
    readonly timezone: FieldRef<"facilities", 'String'>
    readonly status: FieldRef<"facilities", 'Boolean'>
    readonly created_at: FieldRef<"facilities", 'DateTime'>
    readonly updated_at: FieldRef<"facilities", 'DateTime'>
  }
    

  // Custom InputTypes
  /**
   * facilities findUnique
   */
  export type facilitiesFindUniqueArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * Filter, which facilities to fetch.
     */
    where: facilitiesWhereUniqueInput
  }

  /**
   * facilities findUniqueOrThrow
   */
  export type facilitiesFindUniqueOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * Filter, which facilities to fetch.
     */
    where: facilitiesWhereUniqueInput
  }

  /**
   * facilities findFirst
   */
  export type facilitiesFindFirstArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * Filter, which facilities to fetch.
     */
    where?: facilitiesWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of facilities to fetch.
     */
    orderBy?: facilitiesOrderByWithRelationInput | facilitiesOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for facilities.
     */
    cursor?: facilitiesWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` facilities from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` facilities.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of facilities.
     */
    distinct?: FacilitiesScalarFieldEnum | FacilitiesScalarFieldEnum[]
  }

  /**
   * facilities findFirstOrThrow
   */
  export type facilitiesFindFirstOrThrowArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * Filter, which facilities to fetch.
     */
    where?: facilitiesWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of facilities to fetch.
     */
    orderBy?: facilitiesOrderByWithRelationInput | facilitiesOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for searching for facilities.
     */
    cursor?: facilitiesWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` facilities from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` facilities.
     */
    skip?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
     * 
     * Filter by unique combinations of facilities.
     */
    distinct?: FacilitiesScalarFieldEnum | FacilitiesScalarFieldEnum[]
  }

  /**
   * facilities findMany
   */
  export type facilitiesFindManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * Filter, which facilities to fetch.
     */
    where?: facilitiesWhereInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
     * 
     * Determine the order of facilities to fetch.
     */
    orderBy?: facilitiesOrderByWithRelationInput | facilitiesOrderByWithRelationInput[]
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
     * 
     * Sets the position for listing facilities.
     */
    cursor?: facilitiesWhereUniqueInput
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Take `±n` facilities from the position of the cursor.
     */
    take?: number
    /**
     * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
     * 
     * Skip the first `n` facilities.
     */
    skip?: number
    distinct?: FacilitiesScalarFieldEnum | FacilitiesScalarFieldEnum[]
  }

  /**
   * facilities create
   */
  export type facilitiesCreateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * The data needed to create a facilities.
     */
    data: XOR<facilitiesCreateInput, facilitiesUncheckedCreateInput>
  }

  /**
   * facilities createMany
   */
  export type facilitiesCreateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to create many facilities.
     */
    data: facilitiesCreateManyInput | facilitiesCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * facilities createManyAndReturn
   */
  export type facilitiesCreateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelectCreateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * The data used to create many facilities.
     */
    data: facilitiesCreateManyInput | facilitiesCreateManyInput[]
    skipDuplicates?: boolean
  }

  /**
   * facilities update
   */
  export type facilitiesUpdateArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * The data needed to update a facilities.
     */
    data: XOR<facilitiesUpdateInput, facilitiesUncheckedUpdateInput>
    /**
     * Choose, which facilities to update.
     */
    where: facilitiesWhereUniqueInput
  }

  /**
   * facilities updateMany
   */
  export type facilitiesUpdateManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * The data used to update facilities.
     */
    data: XOR<facilitiesUpdateManyMutationInput, facilitiesUncheckedUpdateManyInput>
    /**
     * Filter which facilities to update
     */
    where?: facilitiesWhereInput
    /**
     * Limit how many facilities to update.
     */
    limit?: number
  }

  /**
   * facilities updateManyAndReturn
   */
  export type facilitiesUpdateManyAndReturnArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelectUpdateManyAndReturn<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * The data used to update facilities.
     */
    data: XOR<facilitiesUpdateManyMutationInput, facilitiesUncheckedUpdateManyInput>
    /**
     * Filter which facilities to update
     */
    where?: facilitiesWhereInput
    /**
     * Limit how many facilities to update.
     */
    limit?: number
  }

  /**
   * facilities upsert
   */
  export type facilitiesUpsertArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * The filter to search for the facilities to update in case it exists.
     */
    where: facilitiesWhereUniqueInput
    /**
     * In case the facilities found by the `where` argument doesn't exist, create a new facilities with this data.
     */
    create: XOR<facilitiesCreateInput, facilitiesUncheckedCreateInput>
    /**
     * In case the facilities was found with the provided `where` argument, update it with this data.
     */
    update: XOR<facilitiesUpdateInput, facilitiesUncheckedUpdateInput>
  }

  /**
   * facilities delete
   */
  export type facilitiesDeleteArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
    /**
     * Filter which facilities to delete.
     */
    where: facilitiesWhereUniqueInput
  }

  /**
   * facilities deleteMany
   */
  export type facilitiesDeleteManyArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Filter which facilities to delete
     */
    where?: facilitiesWhereInput
    /**
     * Limit how many facilities to delete.
     */
    limit?: number
  }

  /**
   * facilities.advertisements
   */
  export type facilities$advertisementsArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the advertisements
     */
    select?: advertisementsSelect<ExtArgs> | null
    /**
     * Omit specific fields from the advertisements
     */
    omit?: advertisementsOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: advertisementsInclude<ExtArgs> | null
    where?: advertisementsWhereInput
    orderBy?: advertisementsOrderByWithRelationInput | advertisementsOrderByWithRelationInput[]
    cursor?: advertisementsWhereUniqueInput
    take?: number
    skip?: number
    distinct?: AdvertisementsScalarFieldEnum | AdvertisementsScalarFieldEnum[]
  }

  /**
   * facilities without action
   */
  export type facilitiesDefaultArgs<ExtArgs extends $Extensions.InternalArgs = $Extensions.DefaultArgs> = {
    /**
     * Select specific fields to fetch from the facilities
     */
    select?: facilitiesSelect<ExtArgs> | null
    /**
     * Omit specific fields from the facilities
     */
    omit?: facilitiesOmit<ExtArgs> | null
    /**
     * Choose, which related nodes to fetch as well
     */
    include?: facilitiesInclude<ExtArgs> | null
  }


  /**
   * Enums
   */

  export const TransactionIsolationLevel: {
    ReadUncommitted: 'ReadUncommitted',
    ReadCommitted: 'ReadCommitted',
    RepeatableRead: 'RepeatableRead',
    Serializable: 'Serializable'
  };

  export type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel]


  export const RoleScalarFieldEnum: {
    role_id: 'role_id',
    role_name: 'role_name',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at'
  };

  export type RoleScalarFieldEnum = (typeof RoleScalarFieldEnum)[keyof typeof RoleScalarFieldEnum]


  export const UsersScalarFieldEnum: {
    user_id: 'user_id',
    first_name: 'first_name',
    last_name: 'last_name',
    email: 'email',
    password: 'password',
    role_id: 'role_id',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at'
  };

  export type UsersScalarFieldEnum = (typeof UsersScalarFieldEnum)[keyof typeof UsersScalarFieldEnum]


  export const Parking_lotScalarFieldEnum: {
    parking_lot_id: 'parking_lot_id',
    user_id: 'user_id',
    parking_lot_name: 'parking_lot_name',
    description: 'description',
    image: 'image',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at',
    is_deleted: 'is_deleted',
    north_angle_deg: 'north_angle_deg'
  };

  export type Parking_lotScalarFieldEnum = (typeof Parking_lotScalarFieldEnum)[keyof typeof Parking_lotScalarFieldEnum]


  export const PillarScalarFieldEnum: {
    pillar_id: 'pillar_id',
    parking_lot_id: 'parking_lot_id',
    pillar_code: 'pillar_code',
    reference_x: 'reference_x',
    reference_y: 'reference_y',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at',
    node_type: 'node_type',
    floor_level: 'floor_level'
  };

  export type PillarScalarFieldEnum = (typeof PillarScalarFieldEnum)[keyof typeof PillarScalarFieldEnum]


  export const Directional_relationshipScalarFieldEnum: {
    directional_relationship_id: 'directional_relationship_id',
    from_pillar_id: 'from_pillar_id',
    to_pillar_id: 'to_pillar_id',
    distance_meters: 'distance_meters',
    direction_angle: 'direction_angle',
    is_bidirectional: 'is_bidirectional',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at'
  };

  export type Directional_relationshipScalarFieldEnum = (typeof Directional_relationshipScalarFieldEnum)[keyof typeof Directional_relationshipScalarFieldEnum]


  export const AdvertisementsScalarFieldEnum: {
    advertisements_id: 'advertisements_id',
    facility_id: 'facility_id',
    parking_lot_id: 'parking_lot_id',
    title: 'title',
    content_type: 'content_type',
    image: 'image',
    text_content: 'text_content',
    position: 'position',
    priority: 'priority',
    start_date: 'start_date',
    end_date: 'end_date',
    is_active: 'is_active',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at'
  };

  export type AdvertisementsScalarFieldEnum = (typeof AdvertisementsScalarFieldEnum)[keyof typeof AdvertisementsScalarFieldEnum]


  export const FacilitiesScalarFieldEnum: {
    facilities_id: 'facilities_id',
    name: 'name',
    timezone: 'timezone',
    status: 'status',
    created_at: 'created_at',
    updated_at: 'updated_at'
  };

  export type FacilitiesScalarFieldEnum = (typeof FacilitiesScalarFieldEnum)[keyof typeof FacilitiesScalarFieldEnum]


  export const SortOrder: {
    asc: 'asc',
    desc: 'desc'
  };

  export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder]


  export const QueryMode: {
    default: 'default',
    insensitive: 'insensitive'
  };

  export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]


  export const NullsOrder: {
    first: 'first',
    last: 'last'
  };

  export type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder]


  /**
   * Field references
   */


  /**
   * Reference to a field of type 'String'
   */
  export type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'>
    


  /**
   * Reference to a field of type 'String[]'
   */
  export type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'>
    


  /**
   * Reference to a field of type 'Boolean'
   */
  export type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'>
    


  /**
   * Reference to a field of type 'DateTime'
   */
  export type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'>
    


  /**
   * Reference to a field of type 'DateTime[]'
   */
  export type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'>
    


  /**
   * Reference to a field of type 'Bytes'
   */
  export type BytesFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Bytes'>
    


  /**
   * Reference to a field of type 'Bytes[]'
   */
  export type ListBytesFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Bytes[]'>
    


  /**
   * Reference to a field of type 'Float'
   */
  export type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>
    


  /**
   * Reference to a field of type 'Float[]'
   */
  export type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>
    


  /**
   * Reference to a field of type 'Int'
   */
  export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'>
    


  /**
   * Reference to a field of type 'Int[]'
   */
  export type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'>
    


  /**
   * Reference to a field of type 'Decimal'
   */
  export type DecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal'>
    


  /**
   * Reference to a field of type 'Decimal[]'
   */
  export type ListDecimalFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Decimal[]'>
    
  /**
   * Deep Input Types
   */


  export type roleWhereInput = {
    AND?: roleWhereInput | roleWhereInput[]
    OR?: roleWhereInput[]
    NOT?: roleWhereInput | roleWhereInput[]
    role_id?: UuidFilter<"role"> | string
    role_name?: StringNullableFilter<"role"> | string | null
    status?: BoolNullableFilter<"role"> | boolean | null
    created_at?: DateTimeNullableFilter<"role"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"role"> | Date | string | null
    users?: UsersListRelationFilter
  }

  export type roleOrderByWithRelationInput = {
    role_id?: SortOrder
    role_name?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    users?: usersOrderByRelationAggregateInput
  }

  export type roleWhereUniqueInput = Prisma.AtLeast<{
    role_id?: string
    AND?: roleWhereInput | roleWhereInput[]
    OR?: roleWhereInput[]
    NOT?: roleWhereInput | roleWhereInput[]
    role_name?: StringNullableFilter<"role"> | string | null
    status?: BoolNullableFilter<"role"> | boolean | null
    created_at?: DateTimeNullableFilter<"role"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"role"> | Date | string | null
    users?: UsersListRelationFilter
  }, "role_id">

  export type roleOrderByWithAggregationInput = {
    role_id?: SortOrder
    role_name?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    _count?: roleCountOrderByAggregateInput
    _max?: roleMaxOrderByAggregateInput
    _min?: roleMinOrderByAggregateInput
  }

  export type roleScalarWhereWithAggregatesInput = {
    AND?: roleScalarWhereWithAggregatesInput | roleScalarWhereWithAggregatesInput[]
    OR?: roleScalarWhereWithAggregatesInput[]
    NOT?: roleScalarWhereWithAggregatesInput | roleScalarWhereWithAggregatesInput[]
    role_id?: UuidWithAggregatesFilter<"role"> | string
    role_name?: StringNullableWithAggregatesFilter<"role"> | string | null
    status?: BoolNullableWithAggregatesFilter<"role"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"role"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"role"> | Date | string | null
  }

  export type usersWhereInput = {
    AND?: usersWhereInput | usersWhereInput[]
    OR?: usersWhereInput[]
    NOT?: usersWhereInput | usersWhereInput[]
    user_id?: UuidFilter<"users"> | string
    first_name?: StringNullableFilter<"users"> | string | null
    last_name?: StringNullableFilter<"users"> | string | null
    email?: StringNullableFilter<"users"> | string | null
    password?: StringNullableFilter<"users"> | string | null
    role_id?: UuidNullableFilter<"users"> | string | null
    status?: BoolNullableFilter<"users"> | boolean | null
    created_at?: DateTimeNullableFilter<"users"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"users"> | Date | string | null
    parking_lot?: Parking_lotListRelationFilter
    role?: XOR<RoleNullableScalarRelationFilter, roleWhereInput> | null
  }

  export type usersOrderByWithRelationInput = {
    user_id?: SortOrder
    first_name?: SortOrderInput | SortOrder
    last_name?: SortOrderInput | SortOrder
    email?: SortOrderInput | SortOrder
    password?: SortOrderInput | SortOrder
    role_id?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    parking_lot?: parking_lotOrderByRelationAggregateInput
    role?: roleOrderByWithRelationInput
  }

  export type usersWhereUniqueInput = Prisma.AtLeast<{
    user_id?: string
    AND?: usersWhereInput | usersWhereInput[]
    OR?: usersWhereInput[]
    NOT?: usersWhereInput | usersWhereInput[]
    first_name?: StringNullableFilter<"users"> | string | null
    last_name?: StringNullableFilter<"users"> | string | null
    email?: StringNullableFilter<"users"> | string | null
    password?: StringNullableFilter<"users"> | string | null
    role_id?: UuidNullableFilter<"users"> | string | null
    status?: BoolNullableFilter<"users"> | boolean | null
    created_at?: DateTimeNullableFilter<"users"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"users"> | Date | string | null
    parking_lot?: Parking_lotListRelationFilter
    role?: XOR<RoleNullableScalarRelationFilter, roleWhereInput> | null
  }, "user_id">

  export type usersOrderByWithAggregationInput = {
    user_id?: SortOrder
    first_name?: SortOrderInput | SortOrder
    last_name?: SortOrderInput | SortOrder
    email?: SortOrderInput | SortOrder
    password?: SortOrderInput | SortOrder
    role_id?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    _count?: usersCountOrderByAggregateInput
    _max?: usersMaxOrderByAggregateInput
    _min?: usersMinOrderByAggregateInput
  }

  export type usersScalarWhereWithAggregatesInput = {
    AND?: usersScalarWhereWithAggregatesInput | usersScalarWhereWithAggregatesInput[]
    OR?: usersScalarWhereWithAggregatesInput[]
    NOT?: usersScalarWhereWithAggregatesInput | usersScalarWhereWithAggregatesInput[]
    user_id?: UuidWithAggregatesFilter<"users"> | string
    first_name?: StringNullableWithAggregatesFilter<"users"> | string | null
    last_name?: StringNullableWithAggregatesFilter<"users"> | string | null
    email?: StringNullableWithAggregatesFilter<"users"> | string | null
    password?: StringNullableWithAggregatesFilter<"users"> | string | null
    role_id?: UuidNullableWithAggregatesFilter<"users"> | string | null
    status?: BoolNullableWithAggregatesFilter<"users"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"users"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"users"> | Date | string | null
  }

  export type parking_lotWhereInput = {
    AND?: parking_lotWhereInput | parking_lotWhereInput[]
    OR?: parking_lotWhereInput[]
    NOT?: parking_lotWhereInput | parking_lotWhereInput[]
    parking_lot_id?: UuidFilter<"parking_lot"> | string
    user_id?: UuidNullableFilter<"parking_lot"> | string | null
    parking_lot_name?: StringNullableFilter<"parking_lot"> | string | null
    description?: StringNullableFilter<"parking_lot"> | string | null
    image?: BytesNullableFilter<"parking_lot"> | Uint8Array | null
    status?: BoolNullableFilter<"parking_lot"> | boolean | null
    created_at?: DateTimeNullableFilter<"parking_lot"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"parking_lot"> | Date | string | null
    is_deleted?: BoolNullableFilter<"parking_lot"> | boolean | null
    north_angle_deg?: FloatNullableFilter<"parking_lot"> | number | null
    advertisements?: AdvertisementsListRelationFilter
    users?: XOR<UsersNullableScalarRelationFilter, usersWhereInput> | null
    pillar?: PillarListRelationFilter
  }

  export type parking_lotOrderByWithRelationInput = {
    parking_lot_id?: SortOrder
    user_id?: SortOrderInput | SortOrder
    parking_lot_name?: SortOrderInput | SortOrder
    description?: SortOrderInput | SortOrder
    image?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    is_deleted?: SortOrderInput | SortOrder
    north_angle_deg?: SortOrderInput | SortOrder
    advertisements?: advertisementsOrderByRelationAggregateInput
    users?: usersOrderByWithRelationInput
    pillar?: pillarOrderByRelationAggregateInput
  }

  export type parking_lotWhereUniqueInput = Prisma.AtLeast<{
    parking_lot_id?: string
    AND?: parking_lotWhereInput | parking_lotWhereInput[]
    OR?: parking_lotWhereInput[]
    NOT?: parking_lotWhereInput | parking_lotWhereInput[]
    user_id?: UuidNullableFilter<"parking_lot"> | string | null
    parking_lot_name?: StringNullableFilter<"parking_lot"> | string | null
    description?: StringNullableFilter<"parking_lot"> | string | null
    image?: BytesNullableFilter<"parking_lot"> | Uint8Array | null
    status?: BoolNullableFilter<"parking_lot"> | boolean | null
    created_at?: DateTimeNullableFilter<"parking_lot"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"parking_lot"> | Date | string | null
    is_deleted?: BoolNullableFilter<"parking_lot"> | boolean | null
    north_angle_deg?: FloatNullableFilter<"parking_lot"> | number | null
    advertisements?: AdvertisementsListRelationFilter
    users?: XOR<UsersNullableScalarRelationFilter, usersWhereInput> | null
    pillar?: PillarListRelationFilter
  }, "parking_lot_id">

  export type parking_lotOrderByWithAggregationInput = {
    parking_lot_id?: SortOrder
    user_id?: SortOrderInput | SortOrder
    parking_lot_name?: SortOrderInput | SortOrder
    description?: SortOrderInput | SortOrder
    image?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    is_deleted?: SortOrderInput | SortOrder
    north_angle_deg?: SortOrderInput | SortOrder
    _count?: parking_lotCountOrderByAggregateInput
    _avg?: parking_lotAvgOrderByAggregateInput
    _max?: parking_lotMaxOrderByAggregateInput
    _min?: parking_lotMinOrderByAggregateInput
    _sum?: parking_lotSumOrderByAggregateInput
  }

  export type parking_lotScalarWhereWithAggregatesInput = {
    AND?: parking_lotScalarWhereWithAggregatesInput | parking_lotScalarWhereWithAggregatesInput[]
    OR?: parking_lotScalarWhereWithAggregatesInput[]
    NOT?: parking_lotScalarWhereWithAggregatesInput | parking_lotScalarWhereWithAggregatesInput[]
    parking_lot_id?: UuidWithAggregatesFilter<"parking_lot"> | string
    user_id?: UuidNullableWithAggregatesFilter<"parking_lot"> | string | null
    parking_lot_name?: StringNullableWithAggregatesFilter<"parking_lot"> | string | null
    description?: StringNullableWithAggregatesFilter<"parking_lot"> | string | null
    image?: BytesNullableWithAggregatesFilter<"parking_lot"> | Uint8Array | null
    status?: BoolNullableWithAggregatesFilter<"parking_lot"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"parking_lot"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"parking_lot"> | Date | string | null
    is_deleted?: BoolNullableWithAggregatesFilter<"parking_lot"> | boolean | null
    north_angle_deg?: FloatNullableWithAggregatesFilter<"parking_lot"> | number | null
  }

  export type pillarWhereInput = {
    AND?: pillarWhereInput | pillarWhereInput[]
    OR?: pillarWhereInput[]
    NOT?: pillarWhereInput | pillarWhereInput[]
    pillar_id?: UuidFilter<"pillar"> | string
    parking_lot_id?: UuidNullableFilter<"pillar"> | string | null
    pillar_code?: StringNullableFilter<"pillar"> | string | null
    reference_x?: FloatNullableFilter<"pillar"> | number | null
    reference_y?: FloatNullableFilter<"pillar"> | number | null
    status?: BoolNullableFilter<"pillar"> | boolean | null
    created_at?: DateTimeNullableFilter<"pillar"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"pillar"> | Date | string | null
    node_type?: StringNullableFilter<"pillar"> | string | null
    floor_level?: IntNullableFilter<"pillar"> | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: Directional_relationshipListRelationFilter
    directional_relationship_directional_relationship_to_pillar_idTopillar?: Directional_relationshipListRelationFilter
    parking_lot?: XOR<Parking_lotNullableScalarRelationFilter, parking_lotWhereInput> | null
  }

  export type pillarOrderByWithRelationInput = {
    pillar_id?: SortOrder
    parking_lot_id?: SortOrderInput | SortOrder
    pillar_code?: SortOrderInput | SortOrder
    reference_x?: SortOrderInput | SortOrder
    reference_y?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    node_type?: SortOrderInput | SortOrder
    floor_level?: SortOrderInput | SortOrder
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipOrderByRelationAggregateInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipOrderByRelationAggregateInput
    parking_lot?: parking_lotOrderByWithRelationInput
  }

  export type pillarWhereUniqueInput = Prisma.AtLeast<{
    pillar_id?: string
    AND?: pillarWhereInput | pillarWhereInput[]
    OR?: pillarWhereInput[]
    NOT?: pillarWhereInput | pillarWhereInput[]
    parking_lot_id?: UuidNullableFilter<"pillar"> | string | null
    pillar_code?: StringNullableFilter<"pillar"> | string | null
    reference_x?: FloatNullableFilter<"pillar"> | number | null
    reference_y?: FloatNullableFilter<"pillar"> | number | null
    status?: BoolNullableFilter<"pillar"> | boolean | null
    created_at?: DateTimeNullableFilter<"pillar"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"pillar"> | Date | string | null
    node_type?: StringNullableFilter<"pillar"> | string | null
    floor_level?: IntNullableFilter<"pillar"> | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: Directional_relationshipListRelationFilter
    directional_relationship_directional_relationship_to_pillar_idTopillar?: Directional_relationshipListRelationFilter
    parking_lot?: XOR<Parking_lotNullableScalarRelationFilter, parking_lotWhereInput> | null
  }, "pillar_id">

  export type pillarOrderByWithAggregationInput = {
    pillar_id?: SortOrder
    parking_lot_id?: SortOrderInput | SortOrder
    pillar_code?: SortOrderInput | SortOrder
    reference_x?: SortOrderInput | SortOrder
    reference_y?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    node_type?: SortOrderInput | SortOrder
    floor_level?: SortOrderInput | SortOrder
    _count?: pillarCountOrderByAggregateInput
    _avg?: pillarAvgOrderByAggregateInput
    _max?: pillarMaxOrderByAggregateInput
    _min?: pillarMinOrderByAggregateInput
    _sum?: pillarSumOrderByAggregateInput
  }

  export type pillarScalarWhereWithAggregatesInput = {
    AND?: pillarScalarWhereWithAggregatesInput | pillarScalarWhereWithAggregatesInput[]
    OR?: pillarScalarWhereWithAggregatesInput[]
    NOT?: pillarScalarWhereWithAggregatesInput | pillarScalarWhereWithAggregatesInput[]
    pillar_id?: UuidWithAggregatesFilter<"pillar"> | string
    parking_lot_id?: UuidNullableWithAggregatesFilter<"pillar"> | string | null
    pillar_code?: StringNullableWithAggregatesFilter<"pillar"> | string | null
    reference_x?: FloatNullableWithAggregatesFilter<"pillar"> | number | null
    reference_y?: FloatNullableWithAggregatesFilter<"pillar"> | number | null
    status?: BoolNullableWithAggregatesFilter<"pillar"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"pillar"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"pillar"> | Date | string | null
    node_type?: StringNullableWithAggregatesFilter<"pillar"> | string | null
    floor_level?: IntNullableWithAggregatesFilter<"pillar"> | number | null
  }

  export type directional_relationshipWhereInput = {
    AND?: directional_relationshipWhereInput | directional_relationshipWhereInput[]
    OR?: directional_relationshipWhereInput[]
    NOT?: directional_relationshipWhereInput | directional_relationshipWhereInput[]
    directional_relationship_id?: UuidFilter<"directional_relationship"> | string
    from_pillar_id?: UuidNullableFilter<"directional_relationship"> | string | null
    to_pillar_id?: UuidNullableFilter<"directional_relationship"> | string | null
    distance_meters?: DecimalNullableFilter<"directional_relationship"> | Decimal | DecimalJsLike | number | string | null
    direction_angle?: IntNullableFilter<"directional_relationship"> | number | null
    is_bidirectional?: BoolNullableFilter<"directional_relationship"> | boolean | null
    status?: BoolNullableFilter<"directional_relationship"> | boolean | null
    created_at?: DateTimeNullableFilter<"directional_relationship"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"directional_relationship"> | Date | string | null
    pillar_directional_relationship_from_pillar_idTopillar?: XOR<PillarNullableScalarRelationFilter, pillarWhereInput> | null
    pillar_directional_relationship_to_pillar_idTopillar?: XOR<PillarNullableScalarRelationFilter, pillarWhereInput> | null
  }

  export type directional_relationshipOrderByWithRelationInput = {
    directional_relationship_id?: SortOrder
    from_pillar_id?: SortOrderInput | SortOrder
    to_pillar_id?: SortOrderInput | SortOrder
    distance_meters?: SortOrderInput | SortOrder
    direction_angle?: SortOrderInput | SortOrder
    is_bidirectional?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    pillar_directional_relationship_from_pillar_idTopillar?: pillarOrderByWithRelationInput
    pillar_directional_relationship_to_pillar_idTopillar?: pillarOrderByWithRelationInput
  }

  export type directional_relationshipWhereUniqueInput = Prisma.AtLeast<{
    directional_relationship_id?: string
    AND?: directional_relationshipWhereInput | directional_relationshipWhereInput[]
    OR?: directional_relationshipWhereInput[]
    NOT?: directional_relationshipWhereInput | directional_relationshipWhereInput[]
    from_pillar_id?: UuidNullableFilter<"directional_relationship"> | string | null
    to_pillar_id?: UuidNullableFilter<"directional_relationship"> | string | null
    distance_meters?: DecimalNullableFilter<"directional_relationship"> | Decimal | DecimalJsLike | number | string | null
    direction_angle?: IntNullableFilter<"directional_relationship"> | number | null
    is_bidirectional?: BoolNullableFilter<"directional_relationship"> | boolean | null
    status?: BoolNullableFilter<"directional_relationship"> | boolean | null
    created_at?: DateTimeNullableFilter<"directional_relationship"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"directional_relationship"> | Date | string | null
    pillar_directional_relationship_from_pillar_idTopillar?: XOR<PillarNullableScalarRelationFilter, pillarWhereInput> | null
    pillar_directional_relationship_to_pillar_idTopillar?: XOR<PillarNullableScalarRelationFilter, pillarWhereInput> | null
  }, "directional_relationship_id">

  export type directional_relationshipOrderByWithAggregationInput = {
    directional_relationship_id?: SortOrder
    from_pillar_id?: SortOrderInput | SortOrder
    to_pillar_id?: SortOrderInput | SortOrder
    distance_meters?: SortOrderInput | SortOrder
    direction_angle?: SortOrderInput | SortOrder
    is_bidirectional?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    _count?: directional_relationshipCountOrderByAggregateInput
    _avg?: directional_relationshipAvgOrderByAggregateInput
    _max?: directional_relationshipMaxOrderByAggregateInput
    _min?: directional_relationshipMinOrderByAggregateInput
    _sum?: directional_relationshipSumOrderByAggregateInput
  }

  export type directional_relationshipScalarWhereWithAggregatesInput = {
    AND?: directional_relationshipScalarWhereWithAggregatesInput | directional_relationshipScalarWhereWithAggregatesInput[]
    OR?: directional_relationshipScalarWhereWithAggregatesInput[]
    NOT?: directional_relationshipScalarWhereWithAggregatesInput | directional_relationshipScalarWhereWithAggregatesInput[]
    directional_relationship_id?: UuidWithAggregatesFilter<"directional_relationship"> | string
    from_pillar_id?: UuidNullableWithAggregatesFilter<"directional_relationship"> | string | null
    to_pillar_id?: UuidNullableWithAggregatesFilter<"directional_relationship"> | string | null
    distance_meters?: DecimalNullableWithAggregatesFilter<"directional_relationship"> | Decimal | DecimalJsLike | number | string | null
    direction_angle?: IntNullableWithAggregatesFilter<"directional_relationship"> | number | null
    is_bidirectional?: BoolNullableWithAggregatesFilter<"directional_relationship"> | boolean | null
    status?: BoolNullableWithAggregatesFilter<"directional_relationship"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"directional_relationship"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"directional_relationship"> | Date | string | null
  }

  export type advertisementsWhereInput = {
    AND?: advertisementsWhereInput | advertisementsWhereInput[]
    OR?: advertisementsWhereInput[]
    NOT?: advertisementsWhereInput | advertisementsWhereInput[]
    advertisements_id?: UuidFilter<"advertisements"> | string
    facility_id?: UuidNullableFilter<"advertisements"> | string | null
    parking_lot_id?: UuidNullableFilter<"advertisements"> | string | null
    title?: StringFilter<"advertisements"> | string
    content_type?: StringNullableFilter<"advertisements"> | string | null
    image?: BytesNullableFilter<"advertisements"> | Uint8Array | null
    text_content?: StringNullableFilter<"advertisements"> | string | null
    position?: StringNullableFilter<"advertisements"> | string | null
    priority?: IntNullableFilter<"advertisements"> | number | null
    start_date?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    end_date?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    is_active?: BoolNullableFilter<"advertisements"> | boolean | null
    status?: BoolNullableFilter<"advertisements"> | boolean | null
    created_at?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    facilities?: XOR<FacilitiesNullableScalarRelationFilter, facilitiesWhereInput> | null
    parking_lot?: XOR<Parking_lotNullableScalarRelationFilter, parking_lotWhereInput> | null
  }

  export type advertisementsOrderByWithRelationInput = {
    advertisements_id?: SortOrder
    facility_id?: SortOrderInput | SortOrder
    parking_lot_id?: SortOrderInput | SortOrder
    title?: SortOrder
    content_type?: SortOrderInput | SortOrder
    image?: SortOrderInput | SortOrder
    text_content?: SortOrderInput | SortOrder
    position?: SortOrderInput | SortOrder
    priority?: SortOrderInput | SortOrder
    start_date?: SortOrderInput | SortOrder
    end_date?: SortOrderInput | SortOrder
    is_active?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    facilities?: facilitiesOrderByWithRelationInput
    parking_lot?: parking_lotOrderByWithRelationInput
  }

  export type advertisementsWhereUniqueInput = Prisma.AtLeast<{
    advertisements_id?: string
    AND?: advertisementsWhereInput | advertisementsWhereInput[]
    OR?: advertisementsWhereInput[]
    NOT?: advertisementsWhereInput | advertisementsWhereInput[]
    facility_id?: UuidNullableFilter<"advertisements"> | string | null
    parking_lot_id?: UuidNullableFilter<"advertisements"> | string | null
    title?: StringFilter<"advertisements"> | string
    content_type?: StringNullableFilter<"advertisements"> | string | null
    image?: BytesNullableFilter<"advertisements"> | Uint8Array | null
    text_content?: StringNullableFilter<"advertisements"> | string | null
    position?: StringNullableFilter<"advertisements"> | string | null
    priority?: IntNullableFilter<"advertisements"> | number | null
    start_date?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    end_date?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    is_active?: BoolNullableFilter<"advertisements"> | boolean | null
    status?: BoolNullableFilter<"advertisements"> | boolean | null
    created_at?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    facilities?: XOR<FacilitiesNullableScalarRelationFilter, facilitiesWhereInput> | null
    parking_lot?: XOR<Parking_lotNullableScalarRelationFilter, parking_lotWhereInput> | null
  }, "advertisements_id">

  export type advertisementsOrderByWithAggregationInput = {
    advertisements_id?: SortOrder
    facility_id?: SortOrderInput | SortOrder
    parking_lot_id?: SortOrderInput | SortOrder
    title?: SortOrder
    content_type?: SortOrderInput | SortOrder
    image?: SortOrderInput | SortOrder
    text_content?: SortOrderInput | SortOrder
    position?: SortOrderInput | SortOrder
    priority?: SortOrderInput | SortOrder
    start_date?: SortOrderInput | SortOrder
    end_date?: SortOrderInput | SortOrder
    is_active?: SortOrderInput | SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    _count?: advertisementsCountOrderByAggregateInput
    _avg?: advertisementsAvgOrderByAggregateInput
    _max?: advertisementsMaxOrderByAggregateInput
    _min?: advertisementsMinOrderByAggregateInput
    _sum?: advertisementsSumOrderByAggregateInput
  }

  export type advertisementsScalarWhereWithAggregatesInput = {
    AND?: advertisementsScalarWhereWithAggregatesInput | advertisementsScalarWhereWithAggregatesInput[]
    OR?: advertisementsScalarWhereWithAggregatesInput[]
    NOT?: advertisementsScalarWhereWithAggregatesInput | advertisementsScalarWhereWithAggregatesInput[]
    advertisements_id?: UuidWithAggregatesFilter<"advertisements"> | string
    facility_id?: UuidNullableWithAggregatesFilter<"advertisements"> | string | null
    parking_lot_id?: UuidNullableWithAggregatesFilter<"advertisements"> | string | null
    title?: StringWithAggregatesFilter<"advertisements"> | string
    content_type?: StringNullableWithAggregatesFilter<"advertisements"> | string | null
    image?: BytesNullableWithAggregatesFilter<"advertisements"> | Uint8Array | null
    text_content?: StringNullableWithAggregatesFilter<"advertisements"> | string | null
    position?: StringNullableWithAggregatesFilter<"advertisements"> | string | null
    priority?: IntNullableWithAggregatesFilter<"advertisements"> | number | null
    start_date?: DateTimeNullableWithAggregatesFilter<"advertisements"> | Date | string | null
    end_date?: DateTimeNullableWithAggregatesFilter<"advertisements"> | Date | string | null
    is_active?: BoolNullableWithAggregatesFilter<"advertisements"> | boolean | null
    status?: BoolNullableWithAggregatesFilter<"advertisements"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"advertisements"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"advertisements"> | Date | string | null
  }

  export type facilitiesWhereInput = {
    AND?: facilitiesWhereInput | facilitiesWhereInput[]
    OR?: facilitiesWhereInput[]
    NOT?: facilitiesWhereInput | facilitiesWhereInput[]
    facilities_id?: UuidFilter<"facilities"> | string
    name?: StringFilter<"facilities"> | string
    timezone?: StringFilter<"facilities"> | string
    status?: BoolNullableFilter<"facilities"> | boolean | null
    created_at?: DateTimeNullableFilter<"facilities"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"facilities"> | Date | string | null
    advertisements?: AdvertisementsListRelationFilter
  }

  export type facilitiesOrderByWithRelationInput = {
    facilities_id?: SortOrder
    name?: SortOrder
    timezone?: SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    advertisements?: advertisementsOrderByRelationAggregateInput
  }

  export type facilitiesWhereUniqueInput = Prisma.AtLeast<{
    facilities_id?: string
    AND?: facilitiesWhereInput | facilitiesWhereInput[]
    OR?: facilitiesWhereInput[]
    NOT?: facilitiesWhereInput | facilitiesWhereInput[]
    name?: StringFilter<"facilities"> | string
    timezone?: StringFilter<"facilities"> | string
    status?: BoolNullableFilter<"facilities"> | boolean | null
    created_at?: DateTimeNullableFilter<"facilities"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"facilities"> | Date | string | null
    advertisements?: AdvertisementsListRelationFilter
  }, "facilities_id">

  export type facilitiesOrderByWithAggregationInput = {
    facilities_id?: SortOrder
    name?: SortOrder
    timezone?: SortOrder
    status?: SortOrderInput | SortOrder
    created_at?: SortOrderInput | SortOrder
    updated_at?: SortOrderInput | SortOrder
    _count?: facilitiesCountOrderByAggregateInput
    _max?: facilitiesMaxOrderByAggregateInput
    _min?: facilitiesMinOrderByAggregateInput
  }

  export type facilitiesScalarWhereWithAggregatesInput = {
    AND?: facilitiesScalarWhereWithAggregatesInput | facilitiesScalarWhereWithAggregatesInput[]
    OR?: facilitiesScalarWhereWithAggregatesInput[]
    NOT?: facilitiesScalarWhereWithAggregatesInput | facilitiesScalarWhereWithAggregatesInput[]
    facilities_id?: UuidWithAggregatesFilter<"facilities"> | string
    name?: StringWithAggregatesFilter<"facilities"> | string
    timezone?: StringWithAggregatesFilter<"facilities"> | string
    status?: BoolNullableWithAggregatesFilter<"facilities"> | boolean | null
    created_at?: DateTimeNullableWithAggregatesFilter<"facilities"> | Date | string | null
    updated_at?: DateTimeNullableWithAggregatesFilter<"facilities"> | Date | string | null
  }

  export type roleCreateInput = {
    role_id?: string
    role_name?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    users?: usersCreateNestedManyWithoutRoleInput
  }

  export type roleUncheckedCreateInput = {
    role_id?: string
    role_name?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    users?: usersUncheckedCreateNestedManyWithoutRoleInput
  }

  export type roleUpdateInput = {
    role_id?: StringFieldUpdateOperationsInput | string
    role_name?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    users?: usersUpdateManyWithoutRoleNestedInput
  }

  export type roleUncheckedUpdateInput = {
    role_id?: StringFieldUpdateOperationsInput | string
    role_name?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    users?: usersUncheckedUpdateManyWithoutRoleNestedInput
  }

  export type roleCreateManyInput = {
    role_id?: string
    role_name?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type roleUpdateManyMutationInput = {
    role_id?: StringFieldUpdateOperationsInput | string
    role_name?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type roleUncheckedUpdateManyInput = {
    role_id?: StringFieldUpdateOperationsInput | string
    role_name?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type usersCreateInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    parking_lot?: parking_lotCreateNestedManyWithoutUsersInput
    role?: roleCreateNestedOneWithoutUsersInput
  }

  export type usersUncheckedCreateInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    role_id?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    parking_lot?: parking_lotUncheckedCreateNestedManyWithoutUsersInput
  }

  export type usersUpdateInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    parking_lot?: parking_lotUpdateManyWithoutUsersNestedInput
    role?: roleUpdateOneWithoutUsersNestedInput
  }

  export type usersUncheckedUpdateInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    role_id?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    parking_lot?: parking_lotUncheckedUpdateManyWithoutUsersNestedInput
  }

  export type usersCreateManyInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    role_id?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type usersUpdateManyMutationInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type usersUncheckedUpdateManyInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    role_id?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type parking_lotCreateInput = {
    parking_lot_id?: string
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    advertisements?: advertisementsCreateNestedManyWithoutParking_lotInput
    users?: usersCreateNestedOneWithoutParking_lotInput
    pillar?: pillarCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotUncheckedCreateInput = {
    parking_lot_id?: string
    user_id?: string | null
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    advertisements?: advertisementsUncheckedCreateNestedManyWithoutParking_lotInput
    pillar?: pillarUncheckedCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotUpdateInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    advertisements?: advertisementsUpdateManyWithoutParking_lotNestedInput
    users?: usersUpdateOneWithoutParking_lotNestedInput
    pillar?: pillarUpdateManyWithoutParking_lotNestedInput
  }

  export type parking_lotUncheckedUpdateInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    user_id?: NullableStringFieldUpdateOperationsInput | string | null
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    advertisements?: advertisementsUncheckedUpdateManyWithoutParking_lotNestedInput
    pillar?: pillarUncheckedUpdateManyWithoutParking_lotNestedInput
  }

  export type parking_lotCreateManyInput = {
    parking_lot_id?: string
    user_id?: string | null
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
  }

  export type parking_lotUpdateManyMutationInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
  }

  export type parking_lotUncheckedUpdateManyInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    user_id?: NullableStringFieldUpdateOperationsInput | string | null
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
  }

  export type pillarCreateInput = {
    pillar_id?: string
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput
    parking_lot?: parking_lotCreateNestedOneWithoutPillarInput
  }

  export type pillarUncheckedCreateInput = {
    pillar_id?: string
    parking_lot_id?: string | null
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput
  }

  export type pillarUpdateInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput
    parking_lot?: parking_lotUpdateOneWithoutPillarNestedInput
  }

  export type pillarUncheckedUpdateInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput
  }

  export type pillarCreateManyInput = {
    pillar_id?: string
    parking_lot_id?: string | null
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
  }

  export type pillarUpdateManyMutationInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type pillarUncheckedUpdateManyInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type directional_relationshipCreateInput = {
    directional_relationship_id?: string
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    pillar_directional_relationship_from_pillar_idTopillar?: pillarCreateNestedOneWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput
    pillar_directional_relationship_to_pillar_idTopillar?: pillarCreateNestedOneWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput
  }

  export type directional_relationshipUncheckedCreateInput = {
    directional_relationship_id?: string
    from_pillar_id?: string | null
    to_pillar_id?: string | null
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type directional_relationshipUpdateInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    pillar_directional_relationship_from_pillar_idTopillar?: pillarUpdateOneWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarNestedInput
    pillar_directional_relationship_to_pillar_idTopillar?: pillarUpdateOneWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarNestedInput
  }

  export type directional_relationshipUncheckedUpdateInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    from_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    to_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type directional_relationshipCreateManyInput = {
    directional_relationship_id?: string
    from_pillar_id?: string | null
    to_pillar_id?: string | null
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type directional_relationshipUpdateManyMutationInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type directional_relationshipUncheckedUpdateManyInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    from_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    to_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsCreateInput = {
    advertisements_id?: string
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    facilities?: facilitiesCreateNestedOneWithoutAdvertisementsInput
    parking_lot?: parking_lotCreateNestedOneWithoutAdvertisementsInput
  }

  export type advertisementsUncheckedCreateInput = {
    advertisements_id?: string
    facility_id?: string | null
    parking_lot_id?: string | null
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type advertisementsUpdateInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    facilities?: facilitiesUpdateOneWithoutAdvertisementsNestedInput
    parking_lot?: parking_lotUpdateOneWithoutAdvertisementsNestedInput
  }

  export type advertisementsUncheckedUpdateInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    facility_id?: NullableStringFieldUpdateOperationsInput | string | null
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsCreateManyInput = {
    advertisements_id?: string
    facility_id?: string | null
    parking_lot_id?: string | null
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type advertisementsUpdateManyMutationInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsUncheckedUpdateManyInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    facility_id?: NullableStringFieldUpdateOperationsInput | string | null
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type facilitiesCreateInput = {
    facilities_id?: string
    name: string
    timezone: string
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    advertisements?: advertisementsCreateNestedManyWithoutFacilitiesInput
  }

  export type facilitiesUncheckedCreateInput = {
    facilities_id?: string
    name: string
    timezone: string
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    advertisements?: advertisementsUncheckedCreateNestedManyWithoutFacilitiesInput
  }

  export type facilitiesUpdateInput = {
    facilities_id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    timezone?: StringFieldUpdateOperationsInput | string
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    advertisements?: advertisementsUpdateManyWithoutFacilitiesNestedInput
  }

  export type facilitiesUncheckedUpdateInput = {
    facilities_id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    timezone?: StringFieldUpdateOperationsInput | string
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    advertisements?: advertisementsUncheckedUpdateManyWithoutFacilitiesNestedInput
  }

  export type facilitiesCreateManyInput = {
    facilities_id?: string
    name: string
    timezone: string
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type facilitiesUpdateManyMutationInput = {
    facilities_id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    timezone?: StringFieldUpdateOperationsInput | string
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type facilitiesUncheckedUpdateManyInput = {
    facilities_id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    timezone?: StringFieldUpdateOperationsInput | string
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type UuidFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedUuidFilter<$PrismaModel> | string
  }

  export type StringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringNullableFilter<$PrismaModel> | string | null
  }

  export type BoolNullableFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null
  }

  export type DateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
  }

  export type UsersListRelationFilter = {
    every?: usersWhereInput
    some?: usersWhereInput
    none?: usersWhereInput
  }

  export type SortOrderInput = {
    sort: SortOrder
    nulls?: NullsOrder
  }

  export type usersOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type roleCountOrderByAggregateInput = {
    role_id?: SortOrder
    role_name?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type roleMaxOrderByAggregateInput = {
    role_id?: SortOrder
    role_name?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type roleMinOrderByAggregateInput = {
    role_id?: SortOrder
    role_name?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type UuidWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedUuidWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type StringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type BoolNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedBoolNullableFilter<$PrismaModel>
    _max?: NestedBoolNullableFilter<$PrismaModel>
  }

  export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedDateTimeNullableFilter<$PrismaModel>
    _max?: NestedDateTimeNullableFilter<$PrismaModel>
  }

  export type UuidNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedUuidNullableFilter<$PrismaModel> | string | null
  }

  export type Parking_lotListRelationFilter = {
    every?: parking_lotWhereInput
    some?: parking_lotWhereInput
    none?: parking_lotWhereInput
  }

  export type RoleNullableScalarRelationFilter = {
    is?: roleWhereInput | null
    isNot?: roleWhereInput | null
  }

  export type parking_lotOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type usersCountOrderByAggregateInput = {
    user_id?: SortOrder
    first_name?: SortOrder
    last_name?: SortOrder
    email?: SortOrder
    password?: SortOrder
    role_id?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type usersMaxOrderByAggregateInput = {
    user_id?: SortOrder
    first_name?: SortOrder
    last_name?: SortOrder
    email?: SortOrder
    password?: SortOrder
    role_id?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type usersMinOrderByAggregateInput = {
    user_id?: SortOrder
    first_name?: SortOrder
    last_name?: SortOrder
    email?: SortOrder
    password?: SortOrder
    role_id?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type UuidNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedUuidNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type BytesNullableFilter<$PrismaModel = never> = {
    equals?: Uint8Array | BytesFieldRefInput<$PrismaModel> | null
    in?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    notIn?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    not?: NestedBytesNullableFilter<$PrismaModel> | Uint8Array | null
  }

  export type FloatNullableFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableFilter<$PrismaModel> | number | null
  }

  export type AdvertisementsListRelationFilter = {
    every?: advertisementsWhereInput
    some?: advertisementsWhereInput
    none?: advertisementsWhereInput
  }

  export type UsersNullableScalarRelationFilter = {
    is?: usersWhereInput | null
    isNot?: usersWhereInput | null
  }

  export type PillarListRelationFilter = {
    every?: pillarWhereInput
    some?: pillarWhereInput
    none?: pillarWhereInput
  }

  export type advertisementsOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type pillarOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type parking_lotCountOrderByAggregateInput = {
    parking_lot_id?: SortOrder
    user_id?: SortOrder
    parking_lot_name?: SortOrder
    description?: SortOrder
    image?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
    is_deleted?: SortOrder
    north_angle_deg?: SortOrder
  }

  export type parking_lotAvgOrderByAggregateInput = {
    north_angle_deg?: SortOrder
  }

  export type parking_lotMaxOrderByAggregateInput = {
    parking_lot_id?: SortOrder
    user_id?: SortOrder
    parking_lot_name?: SortOrder
    description?: SortOrder
    image?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
    is_deleted?: SortOrder
    north_angle_deg?: SortOrder
  }

  export type parking_lotMinOrderByAggregateInput = {
    parking_lot_id?: SortOrder
    user_id?: SortOrder
    parking_lot_name?: SortOrder
    description?: SortOrder
    image?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
    is_deleted?: SortOrder
    north_angle_deg?: SortOrder
  }

  export type parking_lotSumOrderByAggregateInput = {
    north_angle_deg?: SortOrder
  }

  export type BytesNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Uint8Array | BytesFieldRefInput<$PrismaModel> | null
    in?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    notIn?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    not?: NestedBytesNullableWithAggregatesFilter<$PrismaModel> | Uint8Array | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedBytesNullableFilter<$PrismaModel>
    _max?: NestedBytesNullableFilter<$PrismaModel>
  }

  export type FloatNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedFloatNullableFilter<$PrismaModel>
    _min?: NestedFloatNullableFilter<$PrismaModel>
    _max?: NestedFloatNullableFilter<$PrismaModel>
  }

  export type IntNullableFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type Directional_relationshipListRelationFilter = {
    every?: directional_relationshipWhereInput
    some?: directional_relationshipWhereInput
    none?: directional_relationshipWhereInput
  }

  export type Parking_lotNullableScalarRelationFilter = {
    is?: parking_lotWhereInput | null
    isNot?: parking_lotWhereInput | null
  }

  export type directional_relationshipOrderByRelationAggregateInput = {
    _count?: SortOrder
  }

  export type pillarCountOrderByAggregateInput = {
    pillar_id?: SortOrder
    parking_lot_id?: SortOrder
    pillar_code?: SortOrder
    reference_x?: SortOrder
    reference_y?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
    node_type?: SortOrder
    floor_level?: SortOrder
  }

  export type pillarAvgOrderByAggregateInput = {
    reference_x?: SortOrder
    reference_y?: SortOrder
    floor_level?: SortOrder
  }

  export type pillarMaxOrderByAggregateInput = {
    pillar_id?: SortOrder
    parking_lot_id?: SortOrder
    pillar_code?: SortOrder
    reference_x?: SortOrder
    reference_y?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
    node_type?: SortOrder
    floor_level?: SortOrder
  }

  export type pillarMinOrderByAggregateInput = {
    pillar_id?: SortOrder
    parking_lot_id?: SortOrder
    pillar_code?: SortOrder
    reference_x?: SortOrder
    reference_y?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
    node_type?: SortOrder
    floor_level?: SortOrder
  }

  export type pillarSumOrderByAggregateInput = {
    reference_x?: SortOrder
    reference_y?: SortOrder
    floor_level?: SortOrder
  }

  export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedIntNullableFilter<$PrismaModel>
    _max?: NestedIntNullableFilter<$PrismaModel>
  }

  export type DecimalNullableFilter<$PrismaModel = never> = {
    equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null
    in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    not?: NestedDecimalNullableFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null
  }

  export type PillarNullableScalarRelationFilter = {
    is?: pillarWhereInput | null
    isNot?: pillarWhereInput | null
  }

  export type directional_relationshipCountOrderByAggregateInput = {
    directional_relationship_id?: SortOrder
    from_pillar_id?: SortOrder
    to_pillar_id?: SortOrder
    distance_meters?: SortOrder
    direction_angle?: SortOrder
    is_bidirectional?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type directional_relationshipAvgOrderByAggregateInput = {
    distance_meters?: SortOrder
    direction_angle?: SortOrder
  }

  export type directional_relationshipMaxOrderByAggregateInput = {
    directional_relationship_id?: SortOrder
    from_pillar_id?: SortOrder
    to_pillar_id?: SortOrder
    distance_meters?: SortOrder
    direction_angle?: SortOrder
    is_bidirectional?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type directional_relationshipMinOrderByAggregateInput = {
    directional_relationship_id?: SortOrder
    from_pillar_id?: SortOrder
    to_pillar_id?: SortOrder
    distance_meters?: SortOrder
    direction_angle?: SortOrder
    is_bidirectional?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type directional_relationshipSumOrderByAggregateInput = {
    distance_meters?: SortOrder
    direction_angle?: SortOrder
  }

  export type DecimalNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null
    in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    not?: NestedDecimalNullableWithAggregatesFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedDecimalNullableFilter<$PrismaModel>
    _sum?: NestedDecimalNullableFilter<$PrismaModel>
    _min?: NestedDecimalNullableFilter<$PrismaModel>
    _max?: NestedDecimalNullableFilter<$PrismaModel>
  }

  export type StringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringFilter<$PrismaModel> | string
  }

  export type FacilitiesNullableScalarRelationFilter = {
    is?: facilitiesWhereInput | null
    isNot?: facilitiesWhereInput | null
  }

  export type advertisementsCountOrderByAggregateInput = {
    advertisements_id?: SortOrder
    facility_id?: SortOrder
    parking_lot_id?: SortOrder
    title?: SortOrder
    content_type?: SortOrder
    image?: SortOrder
    text_content?: SortOrder
    position?: SortOrder
    priority?: SortOrder
    start_date?: SortOrder
    end_date?: SortOrder
    is_active?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type advertisementsAvgOrderByAggregateInput = {
    priority?: SortOrder
  }

  export type advertisementsMaxOrderByAggregateInput = {
    advertisements_id?: SortOrder
    facility_id?: SortOrder
    parking_lot_id?: SortOrder
    title?: SortOrder
    content_type?: SortOrder
    image?: SortOrder
    text_content?: SortOrder
    position?: SortOrder
    priority?: SortOrder
    start_date?: SortOrder
    end_date?: SortOrder
    is_active?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type advertisementsMinOrderByAggregateInput = {
    advertisements_id?: SortOrder
    facility_id?: SortOrder
    parking_lot_id?: SortOrder
    title?: SortOrder
    content_type?: SortOrder
    image?: SortOrder
    text_content?: SortOrder
    position?: SortOrder
    priority?: SortOrder
    start_date?: SortOrder
    end_date?: SortOrder
    is_active?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type advertisementsSumOrderByAggregateInput = {
    priority?: SortOrder
  }

  export type StringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    mode?: QueryMode
    not?: NestedStringWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type facilitiesCountOrderByAggregateInput = {
    facilities_id?: SortOrder
    name?: SortOrder
    timezone?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type facilitiesMaxOrderByAggregateInput = {
    facilities_id?: SortOrder
    name?: SortOrder
    timezone?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type facilitiesMinOrderByAggregateInput = {
    facilities_id?: SortOrder
    name?: SortOrder
    timezone?: SortOrder
    status?: SortOrder
    created_at?: SortOrder
    updated_at?: SortOrder
  }

  export type usersCreateNestedManyWithoutRoleInput = {
    create?: XOR<usersCreateWithoutRoleInput, usersUncheckedCreateWithoutRoleInput> | usersCreateWithoutRoleInput[] | usersUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: usersCreateOrConnectWithoutRoleInput | usersCreateOrConnectWithoutRoleInput[]
    createMany?: usersCreateManyRoleInputEnvelope
    connect?: usersWhereUniqueInput | usersWhereUniqueInput[]
  }

  export type usersUncheckedCreateNestedManyWithoutRoleInput = {
    create?: XOR<usersCreateWithoutRoleInput, usersUncheckedCreateWithoutRoleInput> | usersCreateWithoutRoleInput[] | usersUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: usersCreateOrConnectWithoutRoleInput | usersCreateOrConnectWithoutRoleInput[]
    createMany?: usersCreateManyRoleInputEnvelope
    connect?: usersWhereUniqueInput | usersWhereUniqueInput[]
  }

  export type StringFieldUpdateOperationsInput = {
    set?: string
  }

  export type NullableStringFieldUpdateOperationsInput = {
    set?: string | null
  }

  export type NullableBoolFieldUpdateOperationsInput = {
    set?: boolean | null
  }

  export type NullableDateTimeFieldUpdateOperationsInput = {
    set?: Date | string | null
  }

  export type usersUpdateManyWithoutRoleNestedInput = {
    create?: XOR<usersCreateWithoutRoleInput, usersUncheckedCreateWithoutRoleInput> | usersCreateWithoutRoleInput[] | usersUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: usersCreateOrConnectWithoutRoleInput | usersCreateOrConnectWithoutRoleInput[]
    upsert?: usersUpsertWithWhereUniqueWithoutRoleInput | usersUpsertWithWhereUniqueWithoutRoleInput[]
    createMany?: usersCreateManyRoleInputEnvelope
    set?: usersWhereUniqueInput | usersWhereUniqueInput[]
    disconnect?: usersWhereUniqueInput | usersWhereUniqueInput[]
    delete?: usersWhereUniqueInput | usersWhereUniqueInput[]
    connect?: usersWhereUniqueInput | usersWhereUniqueInput[]
    update?: usersUpdateWithWhereUniqueWithoutRoleInput | usersUpdateWithWhereUniqueWithoutRoleInput[]
    updateMany?: usersUpdateManyWithWhereWithoutRoleInput | usersUpdateManyWithWhereWithoutRoleInput[]
    deleteMany?: usersScalarWhereInput | usersScalarWhereInput[]
  }

  export type usersUncheckedUpdateManyWithoutRoleNestedInput = {
    create?: XOR<usersCreateWithoutRoleInput, usersUncheckedCreateWithoutRoleInput> | usersCreateWithoutRoleInput[] | usersUncheckedCreateWithoutRoleInput[]
    connectOrCreate?: usersCreateOrConnectWithoutRoleInput | usersCreateOrConnectWithoutRoleInput[]
    upsert?: usersUpsertWithWhereUniqueWithoutRoleInput | usersUpsertWithWhereUniqueWithoutRoleInput[]
    createMany?: usersCreateManyRoleInputEnvelope
    set?: usersWhereUniqueInput | usersWhereUniqueInput[]
    disconnect?: usersWhereUniqueInput | usersWhereUniqueInput[]
    delete?: usersWhereUniqueInput | usersWhereUniqueInput[]
    connect?: usersWhereUniqueInput | usersWhereUniqueInput[]
    update?: usersUpdateWithWhereUniqueWithoutRoleInput | usersUpdateWithWhereUniqueWithoutRoleInput[]
    updateMany?: usersUpdateManyWithWhereWithoutRoleInput | usersUpdateManyWithWhereWithoutRoleInput[]
    deleteMany?: usersScalarWhereInput | usersScalarWhereInput[]
  }

  export type parking_lotCreateNestedManyWithoutUsersInput = {
    create?: XOR<parking_lotCreateWithoutUsersInput, parking_lotUncheckedCreateWithoutUsersInput> | parking_lotCreateWithoutUsersInput[] | parking_lotUncheckedCreateWithoutUsersInput[]
    connectOrCreate?: parking_lotCreateOrConnectWithoutUsersInput | parking_lotCreateOrConnectWithoutUsersInput[]
    createMany?: parking_lotCreateManyUsersInputEnvelope
    connect?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
  }

  export type roleCreateNestedOneWithoutUsersInput = {
    create?: XOR<roleCreateWithoutUsersInput, roleUncheckedCreateWithoutUsersInput>
    connectOrCreate?: roleCreateOrConnectWithoutUsersInput
    connect?: roleWhereUniqueInput
  }

  export type parking_lotUncheckedCreateNestedManyWithoutUsersInput = {
    create?: XOR<parking_lotCreateWithoutUsersInput, parking_lotUncheckedCreateWithoutUsersInput> | parking_lotCreateWithoutUsersInput[] | parking_lotUncheckedCreateWithoutUsersInput[]
    connectOrCreate?: parking_lotCreateOrConnectWithoutUsersInput | parking_lotCreateOrConnectWithoutUsersInput[]
    createMany?: parking_lotCreateManyUsersInputEnvelope
    connect?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
  }

  export type parking_lotUpdateManyWithoutUsersNestedInput = {
    create?: XOR<parking_lotCreateWithoutUsersInput, parking_lotUncheckedCreateWithoutUsersInput> | parking_lotCreateWithoutUsersInput[] | parking_lotUncheckedCreateWithoutUsersInput[]
    connectOrCreate?: parking_lotCreateOrConnectWithoutUsersInput | parking_lotCreateOrConnectWithoutUsersInput[]
    upsert?: parking_lotUpsertWithWhereUniqueWithoutUsersInput | parking_lotUpsertWithWhereUniqueWithoutUsersInput[]
    createMany?: parking_lotCreateManyUsersInputEnvelope
    set?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    disconnect?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    delete?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    connect?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    update?: parking_lotUpdateWithWhereUniqueWithoutUsersInput | parking_lotUpdateWithWhereUniqueWithoutUsersInput[]
    updateMany?: parking_lotUpdateManyWithWhereWithoutUsersInput | parking_lotUpdateManyWithWhereWithoutUsersInput[]
    deleteMany?: parking_lotScalarWhereInput | parking_lotScalarWhereInput[]
  }

  export type roleUpdateOneWithoutUsersNestedInput = {
    create?: XOR<roleCreateWithoutUsersInput, roleUncheckedCreateWithoutUsersInput>
    connectOrCreate?: roleCreateOrConnectWithoutUsersInput
    upsert?: roleUpsertWithoutUsersInput
    disconnect?: roleWhereInput | boolean
    delete?: roleWhereInput | boolean
    connect?: roleWhereUniqueInput
    update?: XOR<XOR<roleUpdateToOneWithWhereWithoutUsersInput, roleUpdateWithoutUsersInput>, roleUncheckedUpdateWithoutUsersInput>
  }

  export type parking_lotUncheckedUpdateManyWithoutUsersNestedInput = {
    create?: XOR<parking_lotCreateWithoutUsersInput, parking_lotUncheckedCreateWithoutUsersInput> | parking_lotCreateWithoutUsersInput[] | parking_lotUncheckedCreateWithoutUsersInput[]
    connectOrCreate?: parking_lotCreateOrConnectWithoutUsersInput | parking_lotCreateOrConnectWithoutUsersInput[]
    upsert?: parking_lotUpsertWithWhereUniqueWithoutUsersInput | parking_lotUpsertWithWhereUniqueWithoutUsersInput[]
    createMany?: parking_lotCreateManyUsersInputEnvelope
    set?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    disconnect?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    delete?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    connect?: parking_lotWhereUniqueInput | parking_lotWhereUniqueInput[]
    update?: parking_lotUpdateWithWhereUniqueWithoutUsersInput | parking_lotUpdateWithWhereUniqueWithoutUsersInput[]
    updateMany?: parking_lotUpdateManyWithWhereWithoutUsersInput | parking_lotUpdateManyWithWhereWithoutUsersInput[]
    deleteMany?: parking_lotScalarWhereInput | parking_lotScalarWhereInput[]
  }

  export type advertisementsCreateNestedManyWithoutParking_lotInput = {
    create?: XOR<advertisementsCreateWithoutParking_lotInput, advertisementsUncheckedCreateWithoutParking_lotInput> | advertisementsCreateWithoutParking_lotInput[] | advertisementsUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutParking_lotInput | advertisementsCreateOrConnectWithoutParking_lotInput[]
    createMany?: advertisementsCreateManyParking_lotInputEnvelope
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
  }

  export type usersCreateNestedOneWithoutParking_lotInput = {
    create?: XOR<usersCreateWithoutParking_lotInput, usersUncheckedCreateWithoutParking_lotInput>
    connectOrCreate?: usersCreateOrConnectWithoutParking_lotInput
    connect?: usersWhereUniqueInput
  }

  export type pillarCreateNestedManyWithoutParking_lotInput = {
    create?: XOR<pillarCreateWithoutParking_lotInput, pillarUncheckedCreateWithoutParking_lotInput> | pillarCreateWithoutParking_lotInput[] | pillarUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: pillarCreateOrConnectWithoutParking_lotInput | pillarCreateOrConnectWithoutParking_lotInput[]
    createMany?: pillarCreateManyParking_lotInputEnvelope
    connect?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
  }

  export type advertisementsUncheckedCreateNestedManyWithoutParking_lotInput = {
    create?: XOR<advertisementsCreateWithoutParking_lotInput, advertisementsUncheckedCreateWithoutParking_lotInput> | advertisementsCreateWithoutParking_lotInput[] | advertisementsUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutParking_lotInput | advertisementsCreateOrConnectWithoutParking_lotInput[]
    createMany?: advertisementsCreateManyParking_lotInputEnvelope
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
  }

  export type pillarUncheckedCreateNestedManyWithoutParking_lotInput = {
    create?: XOR<pillarCreateWithoutParking_lotInput, pillarUncheckedCreateWithoutParking_lotInput> | pillarCreateWithoutParking_lotInput[] | pillarUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: pillarCreateOrConnectWithoutParking_lotInput | pillarCreateOrConnectWithoutParking_lotInput[]
    createMany?: pillarCreateManyParking_lotInputEnvelope
    connect?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
  }

  export type NullableBytesFieldUpdateOperationsInput = {
    set?: Uint8Array | null
  }

  export type NullableFloatFieldUpdateOperationsInput = {
    set?: number | null
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type advertisementsUpdateManyWithoutParking_lotNestedInput = {
    create?: XOR<advertisementsCreateWithoutParking_lotInput, advertisementsUncheckedCreateWithoutParking_lotInput> | advertisementsCreateWithoutParking_lotInput[] | advertisementsUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutParking_lotInput | advertisementsCreateOrConnectWithoutParking_lotInput[]
    upsert?: advertisementsUpsertWithWhereUniqueWithoutParking_lotInput | advertisementsUpsertWithWhereUniqueWithoutParking_lotInput[]
    createMany?: advertisementsCreateManyParking_lotInputEnvelope
    set?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    disconnect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    delete?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    update?: advertisementsUpdateWithWhereUniqueWithoutParking_lotInput | advertisementsUpdateWithWhereUniqueWithoutParking_lotInput[]
    updateMany?: advertisementsUpdateManyWithWhereWithoutParking_lotInput | advertisementsUpdateManyWithWhereWithoutParking_lotInput[]
    deleteMany?: advertisementsScalarWhereInput | advertisementsScalarWhereInput[]
  }

  export type usersUpdateOneWithoutParking_lotNestedInput = {
    create?: XOR<usersCreateWithoutParking_lotInput, usersUncheckedCreateWithoutParking_lotInput>
    connectOrCreate?: usersCreateOrConnectWithoutParking_lotInput
    upsert?: usersUpsertWithoutParking_lotInput
    disconnect?: usersWhereInput | boolean
    delete?: usersWhereInput | boolean
    connect?: usersWhereUniqueInput
    update?: XOR<XOR<usersUpdateToOneWithWhereWithoutParking_lotInput, usersUpdateWithoutParking_lotInput>, usersUncheckedUpdateWithoutParking_lotInput>
  }

  export type pillarUpdateManyWithoutParking_lotNestedInput = {
    create?: XOR<pillarCreateWithoutParking_lotInput, pillarUncheckedCreateWithoutParking_lotInput> | pillarCreateWithoutParking_lotInput[] | pillarUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: pillarCreateOrConnectWithoutParking_lotInput | pillarCreateOrConnectWithoutParking_lotInput[]
    upsert?: pillarUpsertWithWhereUniqueWithoutParking_lotInput | pillarUpsertWithWhereUniqueWithoutParking_lotInput[]
    createMany?: pillarCreateManyParking_lotInputEnvelope
    set?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    disconnect?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    delete?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    connect?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    update?: pillarUpdateWithWhereUniqueWithoutParking_lotInput | pillarUpdateWithWhereUniqueWithoutParking_lotInput[]
    updateMany?: pillarUpdateManyWithWhereWithoutParking_lotInput | pillarUpdateManyWithWhereWithoutParking_lotInput[]
    deleteMany?: pillarScalarWhereInput | pillarScalarWhereInput[]
  }

  export type advertisementsUncheckedUpdateManyWithoutParking_lotNestedInput = {
    create?: XOR<advertisementsCreateWithoutParking_lotInput, advertisementsUncheckedCreateWithoutParking_lotInput> | advertisementsCreateWithoutParking_lotInput[] | advertisementsUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutParking_lotInput | advertisementsCreateOrConnectWithoutParking_lotInput[]
    upsert?: advertisementsUpsertWithWhereUniqueWithoutParking_lotInput | advertisementsUpsertWithWhereUniqueWithoutParking_lotInput[]
    createMany?: advertisementsCreateManyParking_lotInputEnvelope
    set?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    disconnect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    delete?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    update?: advertisementsUpdateWithWhereUniqueWithoutParking_lotInput | advertisementsUpdateWithWhereUniqueWithoutParking_lotInput[]
    updateMany?: advertisementsUpdateManyWithWhereWithoutParking_lotInput | advertisementsUpdateManyWithWhereWithoutParking_lotInput[]
    deleteMany?: advertisementsScalarWhereInput | advertisementsScalarWhereInput[]
  }

  export type pillarUncheckedUpdateManyWithoutParking_lotNestedInput = {
    create?: XOR<pillarCreateWithoutParking_lotInput, pillarUncheckedCreateWithoutParking_lotInput> | pillarCreateWithoutParking_lotInput[] | pillarUncheckedCreateWithoutParking_lotInput[]
    connectOrCreate?: pillarCreateOrConnectWithoutParking_lotInput | pillarCreateOrConnectWithoutParking_lotInput[]
    upsert?: pillarUpsertWithWhereUniqueWithoutParking_lotInput | pillarUpsertWithWhereUniqueWithoutParking_lotInput[]
    createMany?: pillarCreateManyParking_lotInputEnvelope
    set?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    disconnect?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    delete?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    connect?: pillarWhereUniqueInput | pillarWhereUniqueInput[]
    update?: pillarUpdateWithWhereUniqueWithoutParking_lotInput | pillarUpdateWithWhereUniqueWithoutParking_lotInput[]
    updateMany?: pillarUpdateManyWithWhereWithoutParking_lotInput | pillarUpdateManyWithWhereWithoutParking_lotInput[]
    deleteMany?: pillarScalarWhereInput | pillarScalarWhereInput[]
  }

  export type directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInputEnvelope
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
  }

  export type directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInputEnvelope
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
  }

  export type parking_lotCreateNestedOneWithoutPillarInput = {
    create?: XOR<parking_lotCreateWithoutPillarInput, parking_lotUncheckedCreateWithoutPillarInput>
    connectOrCreate?: parking_lotCreateOrConnectWithoutPillarInput
    connect?: parking_lotWhereUniqueInput
  }

  export type directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInputEnvelope
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
  }

  export type directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInputEnvelope
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
  }

  export type NullableIntFieldUpdateOperationsInput = {
    set?: number | null
    increment?: number
    decrement?: number
    multiply?: number
    divide?: number
  }

  export type directional_relationshipUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    upsert?: directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInputEnvelope
    set?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    disconnect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    delete?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    update?: directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    updateMany?: directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    deleteMany?: directional_relationshipScalarWhereInput | directional_relationshipScalarWhereInput[]
  }

  export type directional_relationshipUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    upsert?: directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInputEnvelope
    set?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    disconnect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    delete?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    update?: directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    updateMany?: directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    deleteMany?: directional_relationshipScalarWhereInput | directional_relationshipScalarWhereInput[]
  }

  export type parking_lotUpdateOneWithoutPillarNestedInput = {
    create?: XOR<parking_lotCreateWithoutPillarInput, parking_lotUncheckedCreateWithoutPillarInput>
    connectOrCreate?: parking_lotCreateOrConnectWithoutPillarInput
    upsert?: parking_lotUpsertWithoutPillarInput
    disconnect?: parking_lotWhereInput | boolean
    delete?: parking_lotWhereInput | boolean
    connect?: parking_lotWhereUniqueInput
    update?: XOR<XOR<parking_lotUpdateToOneWithWhereWithoutPillarInput, parking_lotUpdateWithoutPillarInput>, parking_lotUncheckedUpdateWithoutPillarInput>
  }

  export type directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    upsert?: directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInputEnvelope
    set?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    disconnect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    delete?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    update?: directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    updateMany?: directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_from_pillar_idTopillarInput[]
    deleteMany?: directional_relationshipScalarWhereInput | directional_relationshipScalarWhereInput[]
  }

  export type directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput = {
    create?: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput> | directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[] | directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    connectOrCreate?: directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    upsert?: directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    createMany?: directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInputEnvelope
    set?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    disconnect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    delete?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    connect?: directional_relationshipWhereUniqueInput | directional_relationshipWhereUniqueInput[]
    update?: directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    updateMany?: directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_to_pillar_idTopillarInput[]
    deleteMany?: directional_relationshipScalarWhereInput | directional_relationshipScalarWhereInput[]
  }

  export type pillarCreateNestedOneWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    create?: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
    connectOrCreate?: pillarCreateOrConnectWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput
    connect?: pillarWhereUniqueInput
  }

  export type pillarCreateNestedOneWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    create?: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
    connectOrCreate?: pillarCreateOrConnectWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput
    connect?: pillarWhereUniqueInput
  }

  export type NullableDecimalFieldUpdateOperationsInput = {
    set?: Decimal | DecimalJsLike | number | string | null
    increment?: Decimal | DecimalJsLike | number | string
    decrement?: Decimal | DecimalJsLike | number | string
    multiply?: Decimal | DecimalJsLike | number | string
    divide?: Decimal | DecimalJsLike | number | string
  }

  export type pillarUpdateOneWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarNestedInput = {
    create?: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
    connectOrCreate?: pillarCreateOrConnectWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput
    upsert?: pillarUpsertWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput
    disconnect?: pillarWhereInput | boolean
    delete?: pillarWhereInput | boolean
    connect?: pillarWhereUniqueInput
    update?: XOR<XOR<pillarUpdateToOneWithWhereWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>, pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
  }

  export type pillarUpdateOneWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarNestedInput = {
    create?: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
    connectOrCreate?: pillarCreateOrConnectWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput
    upsert?: pillarUpsertWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput
    disconnect?: pillarWhereInput | boolean
    delete?: pillarWhereInput | boolean
    connect?: pillarWhereUniqueInput
    update?: XOR<XOR<pillarUpdateToOneWithWhereWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>, pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
  }

  export type facilitiesCreateNestedOneWithoutAdvertisementsInput = {
    create?: XOR<facilitiesCreateWithoutAdvertisementsInput, facilitiesUncheckedCreateWithoutAdvertisementsInput>
    connectOrCreate?: facilitiesCreateOrConnectWithoutAdvertisementsInput
    connect?: facilitiesWhereUniqueInput
  }

  export type parking_lotCreateNestedOneWithoutAdvertisementsInput = {
    create?: XOR<parking_lotCreateWithoutAdvertisementsInput, parking_lotUncheckedCreateWithoutAdvertisementsInput>
    connectOrCreate?: parking_lotCreateOrConnectWithoutAdvertisementsInput
    connect?: parking_lotWhereUniqueInput
  }

  export type facilitiesUpdateOneWithoutAdvertisementsNestedInput = {
    create?: XOR<facilitiesCreateWithoutAdvertisementsInput, facilitiesUncheckedCreateWithoutAdvertisementsInput>
    connectOrCreate?: facilitiesCreateOrConnectWithoutAdvertisementsInput
    upsert?: facilitiesUpsertWithoutAdvertisementsInput
    disconnect?: facilitiesWhereInput | boolean
    delete?: facilitiesWhereInput | boolean
    connect?: facilitiesWhereUniqueInput
    update?: XOR<XOR<facilitiesUpdateToOneWithWhereWithoutAdvertisementsInput, facilitiesUpdateWithoutAdvertisementsInput>, facilitiesUncheckedUpdateWithoutAdvertisementsInput>
  }

  export type parking_lotUpdateOneWithoutAdvertisementsNestedInput = {
    create?: XOR<parking_lotCreateWithoutAdvertisementsInput, parking_lotUncheckedCreateWithoutAdvertisementsInput>
    connectOrCreate?: parking_lotCreateOrConnectWithoutAdvertisementsInput
    upsert?: parking_lotUpsertWithoutAdvertisementsInput
    disconnect?: parking_lotWhereInput | boolean
    delete?: parking_lotWhereInput | boolean
    connect?: parking_lotWhereUniqueInput
    update?: XOR<XOR<parking_lotUpdateToOneWithWhereWithoutAdvertisementsInput, parking_lotUpdateWithoutAdvertisementsInput>, parking_lotUncheckedUpdateWithoutAdvertisementsInput>
  }

  export type advertisementsCreateNestedManyWithoutFacilitiesInput = {
    create?: XOR<advertisementsCreateWithoutFacilitiesInput, advertisementsUncheckedCreateWithoutFacilitiesInput> | advertisementsCreateWithoutFacilitiesInput[] | advertisementsUncheckedCreateWithoutFacilitiesInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutFacilitiesInput | advertisementsCreateOrConnectWithoutFacilitiesInput[]
    createMany?: advertisementsCreateManyFacilitiesInputEnvelope
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
  }

  export type advertisementsUncheckedCreateNestedManyWithoutFacilitiesInput = {
    create?: XOR<advertisementsCreateWithoutFacilitiesInput, advertisementsUncheckedCreateWithoutFacilitiesInput> | advertisementsCreateWithoutFacilitiesInput[] | advertisementsUncheckedCreateWithoutFacilitiesInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutFacilitiesInput | advertisementsCreateOrConnectWithoutFacilitiesInput[]
    createMany?: advertisementsCreateManyFacilitiesInputEnvelope
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
  }

  export type advertisementsUpdateManyWithoutFacilitiesNestedInput = {
    create?: XOR<advertisementsCreateWithoutFacilitiesInput, advertisementsUncheckedCreateWithoutFacilitiesInput> | advertisementsCreateWithoutFacilitiesInput[] | advertisementsUncheckedCreateWithoutFacilitiesInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutFacilitiesInput | advertisementsCreateOrConnectWithoutFacilitiesInput[]
    upsert?: advertisementsUpsertWithWhereUniqueWithoutFacilitiesInput | advertisementsUpsertWithWhereUniqueWithoutFacilitiesInput[]
    createMany?: advertisementsCreateManyFacilitiesInputEnvelope
    set?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    disconnect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    delete?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    update?: advertisementsUpdateWithWhereUniqueWithoutFacilitiesInput | advertisementsUpdateWithWhereUniqueWithoutFacilitiesInput[]
    updateMany?: advertisementsUpdateManyWithWhereWithoutFacilitiesInput | advertisementsUpdateManyWithWhereWithoutFacilitiesInput[]
    deleteMany?: advertisementsScalarWhereInput | advertisementsScalarWhereInput[]
  }

  export type advertisementsUncheckedUpdateManyWithoutFacilitiesNestedInput = {
    create?: XOR<advertisementsCreateWithoutFacilitiesInput, advertisementsUncheckedCreateWithoutFacilitiesInput> | advertisementsCreateWithoutFacilitiesInput[] | advertisementsUncheckedCreateWithoutFacilitiesInput[]
    connectOrCreate?: advertisementsCreateOrConnectWithoutFacilitiesInput | advertisementsCreateOrConnectWithoutFacilitiesInput[]
    upsert?: advertisementsUpsertWithWhereUniqueWithoutFacilitiesInput | advertisementsUpsertWithWhereUniqueWithoutFacilitiesInput[]
    createMany?: advertisementsCreateManyFacilitiesInputEnvelope
    set?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    disconnect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    delete?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    connect?: advertisementsWhereUniqueInput | advertisementsWhereUniqueInput[]
    update?: advertisementsUpdateWithWhereUniqueWithoutFacilitiesInput | advertisementsUpdateWithWhereUniqueWithoutFacilitiesInput[]
    updateMany?: advertisementsUpdateManyWithWhereWithoutFacilitiesInput | advertisementsUpdateManyWithWhereWithoutFacilitiesInput[]
    deleteMany?: advertisementsScalarWhereInput | advertisementsScalarWhereInput[]
  }

  export type NestedUuidFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedUuidFilter<$PrismaModel> | string
  }

  export type NestedStringNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringNullableFilter<$PrismaModel> | string | null
  }

  export type NestedBoolNullableFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableFilter<$PrismaModel> | boolean | null
  }

  export type NestedDateTimeNullableFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableFilter<$PrismaModel> | Date | string | null
  }

  export type NestedUuidWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedUuidWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type NestedIntFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel>
    in?: number[] | ListIntFieldRefInput<$PrismaModel>
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel>
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntFilter<$PrismaModel> | number
  }

  export type NestedStringFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringFilter<$PrismaModel> | string
  }

  export type NestedStringNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type NestedIntNullableFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableFilter<$PrismaModel> | number | null
  }

  export type NestedBoolNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: boolean | BooleanFieldRefInput<$PrismaModel> | null
    not?: NestedBoolNullableWithAggregatesFilter<$PrismaModel> | boolean | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedBoolNullableFilter<$PrismaModel>
    _max?: NestedBoolNullableFilter<$PrismaModel>
  }

  export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Date | string | DateTimeFieldRefInput<$PrismaModel> | null
    in?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    notIn?: Date[] | string[] | ListDateTimeFieldRefInput<$PrismaModel> | null
    lt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    lte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gt?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    gte?: Date | string | DateTimeFieldRefInput<$PrismaModel>
    not?: NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedDateTimeNullableFilter<$PrismaModel>
    _max?: NestedDateTimeNullableFilter<$PrismaModel>
  }

  export type NestedUuidNullableFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedUuidNullableFilter<$PrismaModel> | string | null
  }

  export type NestedUuidNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel> | null
    in?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel> | null
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedUuidNullableWithAggregatesFilter<$PrismaModel> | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedStringNullableFilter<$PrismaModel>
    _max?: NestedStringNullableFilter<$PrismaModel>
  }

  export type NestedBytesNullableFilter<$PrismaModel = never> = {
    equals?: Uint8Array | BytesFieldRefInput<$PrismaModel> | null
    in?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    notIn?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    not?: NestedBytesNullableFilter<$PrismaModel> | Uint8Array | null
  }

  export type NestedFloatNullableFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableFilter<$PrismaModel> | number | null
  }

  export type NestedBytesNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Uint8Array | BytesFieldRefInput<$PrismaModel> | null
    in?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    notIn?: Uint8Array[] | ListBytesFieldRefInput<$PrismaModel> | null
    not?: NestedBytesNullableWithAggregatesFilter<$PrismaModel> | Uint8Array | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedBytesNullableFilter<$PrismaModel>
    _max?: NestedBytesNullableFilter<$PrismaModel>
  }

  export type NestedFloatNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | FloatFieldRefInput<$PrismaModel> | null
    in?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListFloatFieldRefInput<$PrismaModel> | null
    lt?: number | FloatFieldRefInput<$PrismaModel>
    lte?: number | FloatFieldRefInput<$PrismaModel>
    gt?: number | FloatFieldRefInput<$PrismaModel>
    gte?: number | FloatFieldRefInput<$PrismaModel>
    not?: NestedFloatNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedFloatNullableFilter<$PrismaModel>
    _min?: NestedFloatNullableFilter<$PrismaModel>
    _max?: NestedFloatNullableFilter<$PrismaModel>
  }

  export type NestedIntNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: number | IntFieldRefInput<$PrismaModel> | null
    in?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    notIn?: number[] | ListIntFieldRefInput<$PrismaModel> | null
    lt?: number | IntFieldRefInput<$PrismaModel>
    lte?: number | IntFieldRefInput<$PrismaModel>
    gt?: number | IntFieldRefInput<$PrismaModel>
    gte?: number | IntFieldRefInput<$PrismaModel>
    not?: NestedIntNullableWithAggregatesFilter<$PrismaModel> | number | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedFloatNullableFilter<$PrismaModel>
    _sum?: NestedIntNullableFilter<$PrismaModel>
    _min?: NestedIntNullableFilter<$PrismaModel>
    _max?: NestedIntNullableFilter<$PrismaModel>
  }

  export type NestedDecimalNullableFilter<$PrismaModel = never> = {
    equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null
    in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    not?: NestedDecimalNullableFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null
  }

  export type NestedDecimalNullableWithAggregatesFilter<$PrismaModel = never> = {
    equals?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel> | null
    in?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    notIn?: Decimal[] | DecimalJsLike[] | number[] | string[] | ListDecimalFieldRefInput<$PrismaModel> | null
    lt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    lte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gt?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    gte?: Decimal | DecimalJsLike | number | string | DecimalFieldRefInput<$PrismaModel>
    not?: NestedDecimalNullableWithAggregatesFilter<$PrismaModel> | Decimal | DecimalJsLike | number | string | null
    _count?: NestedIntNullableFilter<$PrismaModel>
    _avg?: NestedDecimalNullableFilter<$PrismaModel>
    _sum?: NestedDecimalNullableFilter<$PrismaModel>
    _min?: NestedDecimalNullableFilter<$PrismaModel>
    _max?: NestedDecimalNullableFilter<$PrismaModel>
  }

  export type NestedStringWithAggregatesFilter<$PrismaModel = never> = {
    equals?: string | StringFieldRefInput<$PrismaModel>
    in?: string[] | ListStringFieldRefInput<$PrismaModel>
    notIn?: string[] | ListStringFieldRefInput<$PrismaModel>
    lt?: string | StringFieldRefInput<$PrismaModel>
    lte?: string | StringFieldRefInput<$PrismaModel>
    gt?: string | StringFieldRefInput<$PrismaModel>
    gte?: string | StringFieldRefInput<$PrismaModel>
    contains?: string | StringFieldRefInput<$PrismaModel>
    startsWith?: string | StringFieldRefInput<$PrismaModel>
    endsWith?: string | StringFieldRefInput<$PrismaModel>
    not?: NestedStringWithAggregatesFilter<$PrismaModel> | string
    _count?: NestedIntFilter<$PrismaModel>
    _min?: NestedStringFilter<$PrismaModel>
    _max?: NestedStringFilter<$PrismaModel>
  }

  export type usersCreateWithoutRoleInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    parking_lot?: parking_lotCreateNestedManyWithoutUsersInput
  }

  export type usersUncheckedCreateWithoutRoleInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    parking_lot?: parking_lotUncheckedCreateNestedManyWithoutUsersInput
  }

  export type usersCreateOrConnectWithoutRoleInput = {
    where: usersWhereUniqueInput
    create: XOR<usersCreateWithoutRoleInput, usersUncheckedCreateWithoutRoleInput>
  }

  export type usersCreateManyRoleInputEnvelope = {
    data: usersCreateManyRoleInput | usersCreateManyRoleInput[]
    skipDuplicates?: boolean
  }

  export type usersUpsertWithWhereUniqueWithoutRoleInput = {
    where: usersWhereUniqueInput
    update: XOR<usersUpdateWithoutRoleInput, usersUncheckedUpdateWithoutRoleInput>
    create: XOR<usersCreateWithoutRoleInput, usersUncheckedCreateWithoutRoleInput>
  }

  export type usersUpdateWithWhereUniqueWithoutRoleInput = {
    where: usersWhereUniqueInput
    data: XOR<usersUpdateWithoutRoleInput, usersUncheckedUpdateWithoutRoleInput>
  }

  export type usersUpdateManyWithWhereWithoutRoleInput = {
    where: usersScalarWhereInput
    data: XOR<usersUpdateManyMutationInput, usersUncheckedUpdateManyWithoutRoleInput>
  }

  export type usersScalarWhereInput = {
    AND?: usersScalarWhereInput | usersScalarWhereInput[]
    OR?: usersScalarWhereInput[]
    NOT?: usersScalarWhereInput | usersScalarWhereInput[]
    user_id?: UuidFilter<"users"> | string
    first_name?: StringNullableFilter<"users"> | string | null
    last_name?: StringNullableFilter<"users"> | string | null
    email?: StringNullableFilter<"users"> | string | null
    password?: StringNullableFilter<"users"> | string | null
    role_id?: UuidNullableFilter<"users"> | string | null
    status?: BoolNullableFilter<"users"> | boolean | null
    created_at?: DateTimeNullableFilter<"users"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"users"> | Date | string | null
  }

  export type parking_lotCreateWithoutUsersInput = {
    parking_lot_id?: string
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    advertisements?: advertisementsCreateNestedManyWithoutParking_lotInput
    pillar?: pillarCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotUncheckedCreateWithoutUsersInput = {
    parking_lot_id?: string
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    advertisements?: advertisementsUncheckedCreateNestedManyWithoutParking_lotInput
    pillar?: pillarUncheckedCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotCreateOrConnectWithoutUsersInput = {
    where: parking_lotWhereUniqueInput
    create: XOR<parking_lotCreateWithoutUsersInput, parking_lotUncheckedCreateWithoutUsersInput>
  }

  export type parking_lotCreateManyUsersInputEnvelope = {
    data: parking_lotCreateManyUsersInput | parking_lotCreateManyUsersInput[]
    skipDuplicates?: boolean
  }

  export type roleCreateWithoutUsersInput = {
    role_id?: string
    role_name?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type roleUncheckedCreateWithoutUsersInput = {
    role_id?: string
    role_name?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type roleCreateOrConnectWithoutUsersInput = {
    where: roleWhereUniqueInput
    create: XOR<roleCreateWithoutUsersInput, roleUncheckedCreateWithoutUsersInput>
  }

  export type parking_lotUpsertWithWhereUniqueWithoutUsersInput = {
    where: parking_lotWhereUniqueInput
    update: XOR<parking_lotUpdateWithoutUsersInput, parking_lotUncheckedUpdateWithoutUsersInput>
    create: XOR<parking_lotCreateWithoutUsersInput, parking_lotUncheckedCreateWithoutUsersInput>
  }

  export type parking_lotUpdateWithWhereUniqueWithoutUsersInput = {
    where: parking_lotWhereUniqueInput
    data: XOR<parking_lotUpdateWithoutUsersInput, parking_lotUncheckedUpdateWithoutUsersInput>
  }

  export type parking_lotUpdateManyWithWhereWithoutUsersInput = {
    where: parking_lotScalarWhereInput
    data: XOR<parking_lotUpdateManyMutationInput, parking_lotUncheckedUpdateManyWithoutUsersInput>
  }

  export type parking_lotScalarWhereInput = {
    AND?: parking_lotScalarWhereInput | parking_lotScalarWhereInput[]
    OR?: parking_lotScalarWhereInput[]
    NOT?: parking_lotScalarWhereInput | parking_lotScalarWhereInput[]
    parking_lot_id?: UuidFilter<"parking_lot"> | string
    user_id?: UuidNullableFilter<"parking_lot"> | string | null
    parking_lot_name?: StringNullableFilter<"parking_lot"> | string | null
    description?: StringNullableFilter<"parking_lot"> | string | null
    image?: BytesNullableFilter<"parking_lot"> | Uint8Array | null
    status?: BoolNullableFilter<"parking_lot"> | boolean | null
    created_at?: DateTimeNullableFilter<"parking_lot"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"parking_lot"> | Date | string | null
    is_deleted?: BoolNullableFilter<"parking_lot"> | boolean | null
    north_angle_deg?: FloatNullableFilter<"parking_lot"> | number | null
  }

  export type roleUpsertWithoutUsersInput = {
    update: XOR<roleUpdateWithoutUsersInput, roleUncheckedUpdateWithoutUsersInput>
    create: XOR<roleCreateWithoutUsersInput, roleUncheckedCreateWithoutUsersInput>
    where?: roleWhereInput
  }

  export type roleUpdateToOneWithWhereWithoutUsersInput = {
    where?: roleWhereInput
    data: XOR<roleUpdateWithoutUsersInput, roleUncheckedUpdateWithoutUsersInput>
  }

  export type roleUpdateWithoutUsersInput = {
    role_id?: StringFieldUpdateOperationsInput | string
    role_name?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type roleUncheckedUpdateWithoutUsersInput = {
    role_id?: StringFieldUpdateOperationsInput | string
    role_name?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsCreateWithoutParking_lotInput = {
    advertisements_id?: string
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    facilities?: facilitiesCreateNestedOneWithoutAdvertisementsInput
  }

  export type advertisementsUncheckedCreateWithoutParking_lotInput = {
    advertisements_id?: string
    facility_id?: string | null
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type advertisementsCreateOrConnectWithoutParking_lotInput = {
    where: advertisementsWhereUniqueInput
    create: XOR<advertisementsCreateWithoutParking_lotInput, advertisementsUncheckedCreateWithoutParking_lotInput>
  }

  export type advertisementsCreateManyParking_lotInputEnvelope = {
    data: advertisementsCreateManyParking_lotInput | advertisementsCreateManyParking_lotInput[]
    skipDuplicates?: boolean
  }

  export type usersCreateWithoutParking_lotInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    role?: roleCreateNestedOneWithoutUsersInput
  }

  export type usersUncheckedCreateWithoutParking_lotInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    role_id?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type usersCreateOrConnectWithoutParking_lotInput = {
    where: usersWhereUniqueInput
    create: XOR<usersCreateWithoutParking_lotInput, usersUncheckedCreateWithoutParking_lotInput>
  }

  export type pillarCreateWithoutParking_lotInput = {
    pillar_id?: string
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput
  }

  export type pillarUncheckedCreateWithoutParking_lotInput = {
    pillar_id?: string
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput
  }

  export type pillarCreateOrConnectWithoutParking_lotInput = {
    where: pillarWhereUniqueInput
    create: XOR<pillarCreateWithoutParking_lotInput, pillarUncheckedCreateWithoutParking_lotInput>
  }

  export type pillarCreateManyParking_lotInputEnvelope = {
    data: pillarCreateManyParking_lotInput | pillarCreateManyParking_lotInput[]
    skipDuplicates?: boolean
  }

  export type advertisementsUpsertWithWhereUniqueWithoutParking_lotInput = {
    where: advertisementsWhereUniqueInput
    update: XOR<advertisementsUpdateWithoutParking_lotInput, advertisementsUncheckedUpdateWithoutParking_lotInput>
    create: XOR<advertisementsCreateWithoutParking_lotInput, advertisementsUncheckedCreateWithoutParking_lotInput>
  }

  export type advertisementsUpdateWithWhereUniqueWithoutParking_lotInput = {
    where: advertisementsWhereUniqueInput
    data: XOR<advertisementsUpdateWithoutParking_lotInput, advertisementsUncheckedUpdateWithoutParking_lotInput>
  }

  export type advertisementsUpdateManyWithWhereWithoutParking_lotInput = {
    where: advertisementsScalarWhereInput
    data: XOR<advertisementsUpdateManyMutationInput, advertisementsUncheckedUpdateManyWithoutParking_lotInput>
  }

  export type advertisementsScalarWhereInput = {
    AND?: advertisementsScalarWhereInput | advertisementsScalarWhereInput[]
    OR?: advertisementsScalarWhereInput[]
    NOT?: advertisementsScalarWhereInput | advertisementsScalarWhereInput[]
    advertisements_id?: UuidFilter<"advertisements"> | string
    facility_id?: UuidNullableFilter<"advertisements"> | string | null
    parking_lot_id?: UuidNullableFilter<"advertisements"> | string | null
    title?: StringFilter<"advertisements"> | string
    content_type?: StringNullableFilter<"advertisements"> | string | null
    image?: BytesNullableFilter<"advertisements"> | Uint8Array | null
    text_content?: StringNullableFilter<"advertisements"> | string | null
    position?: StringNullableFilter<"advertisements"> | string | null
    priority?: IntNullableFilter<"advertisements"> | number | null
    start_date?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    end_date?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    is_active?: BoolNullableFilter<"advertisements"> | boolean | null
    status?: BoolNullableFilter<"advertisements"> | boolean | null
    created_at?: DateTimeNullableFilter<"advertisements"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"advertisements"> | Date | string | null
  }

  export type usersUpsertWithoutParking_lotInput = {
    update: XOR<usersUpdateWithoutParking_lotInput, usersUncheckedUpdateWithoutParking_lotInput>
    create: XOR<usersCreateWithoutParking_lotInput, usersUncheckedCreateWithoutParking_lotInput>
    where?: usersWhereInput
  }

  export type usersUpdateToOneWithWhereWithoutParking_lotInput = {
    where?: usersWhereInput
    data: XOR<usersUpdateWithoutParking_lotInput, usersUncheckedUpdateWithoutParking_lotInput>
  }

  export type usersUpdateWithoutParking_lotInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    role?: roleUpdateOneWithoutUsersNestedInput
  }

  export type usersUncheckedUpdateWithoutParking_lotInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    role_id?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type pillarUpsertWithWhereUniqueWithoutParking_lotInput = {
    where: pillarWhereUniqueInput
    update: XOR<pillarUpdateWithoutParking_lotInput, pillarUncheckedUpdateWithoutParking_lotInput>
    create: XOR<pillarCreateWithoutParking_lotInput, pillarUncheckedCreateWithoutParking_lotInput>
  }

  export type pillarUpdateWithWhereUniqueWithoutParking_lotInput = {
    where: pillarWhereUniqueInput
    data: XOR<pillarUpdateWithoutParking_lotInput, pillarUncheckedUpdateWithoutParking_lotInput>
  }

  export type pillarUpdateManyWithWhereWithoutParking_lotInput = {
    where: pillarScalarWhereInput
    data: XOR<pillarUpdateManyMutationInput, pillarUncheckedUpdateManyWithoutParking_lotInput>
  }

  export type pillarScalarWhereInput = {
    AND?: pillarScalarWhereInput | pillarScalarWhereInput[]
    OR?: pillarScalarWhereInput[]
    NOT?: pillarScalarWhereInput | pillarScalarWhereInput[]
    pillar_id?: UuidFilter<"pillar"> | string
    parking_lot_id?: UuidNullableFilter<"pillar"> | string | null
    pillar_code?: StringNullableFilter<"pillar"> | string | null
    reference_x?: FloatNullableFilter<"pillar"> | number | null
    reference_y?: FloatNullableFilter<"pillar"> | number | null
    status?: BoolNullableFilter<"pillar"> | boolean | null
    created_at?: DateTimeNullableFilter<"pillar"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"pillar"> | Date | string | null
    node_type?: StringNullableFilter<"pillar"> | string | null
    floor_level?: IntNullableFilter<"pillar"> | number | null
  }

  export type directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    directional_relationship_id?: string
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    pillar_directional_relationship_to_pillar_idTopillar?: pillarCreateNestedOneWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput
  }

  export type directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    directional_relationship_id?: string
    to_pillar_id?: string | null
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    where: directional_relationshipWhereUniqueInput
    create: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput>
  }

  export type directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInputEnvelope = {
    data: directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInput | directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInput[]
    skipDuplicates?: boolean
  }

  export type directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    directional_relationship_id?: string
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    pillar_directional_relationship_from_pillar_idTopillar?: pillarCreateNestedOneWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput
  }

  export type directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    directional_relationship_id?: string
    from_pillar_id?: string | null
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type directional_relationshipCreateOrConnectWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    where: directional_relationshipWhereUniqueInput
    create: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput>
  }

  export type directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInputEnvelope = {
    data: directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInput | directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInput[]
    skipDuplicates?: boolean
  }

  export type parking_lotCreateWithoutPillarInput = {
    parking_lot_id?: string
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    advertisements?: advertisementsCreateNestedManyWithoutParking_lotInput
    users?: usersCreateNestedOneWithoutParking_lotInput
  }

  export type parking_lotUncheckedCreateWithoutPillarInput = {
    parking_lot_id?: string
    user_id?: string | null
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    advertisements?: advertisementsUncheckedCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotCreateOrConnectWithoutPillarInput = {
    where: parking_lotWhereUniqueInput
    create: XOR<parking_lotCreateWithoutPillarInput, parking_lotUncheckedCreateWithoutPillarInput>
  }

  export type directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    where: directional_relationshipWhereUniqueInput
    update: XOR<directional_relationshipUpdateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedUpdateWithoutPillar_directional_relationship_from_pillar_idTopillarInput>
    create: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_from_pillar_idTopillarInput>
  }

  export type directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    where: directional_relationshipWhereUniqueInput
    data: XOR<directional_relationshipUpdateWithoutPillar_directional_relationship_from_pillar_idTopillarInput, directional_relationshipUncheckedUpdateWithoutPillar_directional_relationship_from_pillar_idTopillarInput>
  }

  export type directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    where: directional_relationshipScalarWhereInput
    data: XOR<directional_relationshipUpdateManyMutationInput, directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput>
  }

  export type directional_relationshipScalarWhereInput = {
    AND?: directional_relationshipScalarWhereInput | directional_relationshipScalarWhereInput[]
    OR?: directional_relationshipScalarWhereInput[]
    NOT?: directional_relationshipScalarWhereInput | directional_relationshipScalarWhereInput[]
    directional_relationship_id?: UuidFilter<"directional_relationship"> | string
    from_pillar_id?: UuidNullableFilter<"directional_relationship"> | string | null
    to_pillar_id?: UuidNullableFilter<"directional_relationship"> | string | null
    distance_meters?: DecimalNullableFilter<"directional_relationship"> | Decimal | DecimalJsLike | number | string | null
    direction_angle?: IntNullableFilter<"directional_relationship"> | number | null
    is_bidirectional?: BoolNullableFilter<"directional_relationship"> | boolean | null
    status?: BoolNullableFilter<"directional_relationship"> | boolean | null
    created_at?: DateTimeNullableFilter<"directional_relationship"> | Date | string | null
    updated_at?: DateTimeNullableFilter<"directional_relationship"> | Date | string | null
  }

  export type directional_relationshipUpsertWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    where: directional_relationshipWhereUniqueInput
    update: XOR<directional_relationshipUpdateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedUpdateWithoutPillar_directional_relationship_to_pillar_idTopillarInput>
    create: XOR<directional_relationshipCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedCreateWithoutPillar_directional_relationship_to_pillar_idTopillarInput>
  }

  export type directional_relationshipUpdateWithWhereUniqueWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    where: directional_relationshipWhereUniqueInput
    data: XOR<directional_relationshipUpdateWithoutPillar_directional_relationship_to_pillar_idTopillarInput, directional_relationshipUncheckedUpdateWithoutPillar_directional_relationship_to_pillar_idTopillarInput>
  }

  export type directional_relationshipUpdateManyWithWhereWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    where: directional_relationshipScalarWhereInput
    data: XOR<directional_relationshipUpdateManyMutationInput, directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput>
  }

  export type parking_lotUpsertWithoutPillarInput = {
    update: XOR<parking_lotUpdateWithoutPillarInput, parking_lotUncheckedUpdateWithoutPillarInput>
    create: XOR<parking_lotCreateWithoutPillarInput, parking_lotUncheckedCreateWithoutPillarInput>
    where?: parking_lotWhereInput
  }

  export type parking_lotUpdateToOneWithWhereWithoutPillarInput = {
    where?: parking_lotWhereInput
    data: XOR<parking_lotUpdateWithoutPillarInput, parking_lotUncheckedUpdateWithoutPillarInput>
  }

  export type parking_lotUpdateWithoutPillarInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    advertisements?: advertisementsUpdateManyWithoutParking_lotNestedInput
    users?: usersUpdateOneWithoutParking_lotNestedInput
  }

  export type parking_lotUncheckedUpdateWithoutPillarInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    user_id?: NullableStringFieldUpdateOperationsInput | string | null
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    advertisements?: advertisementsUncheckedUpdateManyWithoutParking_lotNestedInput
  }

  export type pillarCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    pillar_id?: string
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput
    parking_lot?: parking_lotCreateNestedOneWithoutPillarInput
  }

  export type pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    pillar_id?: string
    parking_lot_id?: string | null
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput
  }

  export type pillarCreateOrConnectWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    where: pillarWhereUniqueInput
    create: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
  }

  export type pillarCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    pillar_id?: string
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput
    parking_lot?: parking_lotCreateNestedOneWithoutPillarInput
  }

  export type pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    pillar_id?: string
    parking_lot_id?: string | null
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUncheckedCreateNestedManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput
  }

  export type pillarCreateOrConnectWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    where: pillarWhereUniqueInput
    create: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
  }

  export type pillarUpsertWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    update: XOR<pillarUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
    create: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
    where?: pillarWhereInput
  }

  export type pillarUpdateToOneWithWhereWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    where?: pillarWhereInput
    data: XOR<pillarUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput, pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput>
  }

  export type pillarUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput
    parking_lot?: parking_lotUpdateOneWithoutPillarNestedInput
  }

  export type pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput
  }

  export type pillarUpsertWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    update: XOR<pillarUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
    create: XOR<pillarCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUncheckedCreateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
    where?: pillarWhereInput
  }

  export type pillarUpdateToOneWithWhereWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    where?: pillarWhereInput
    data: XOR<pillarUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput, pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput>
  }

  export type pillarUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput
    parking_lot?: parking_lotUpdateOneWithoutPillarNestedInput
  }

  export type pillarUncheckedUpdateWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput
  }

  export type facilitiesCreateWithoutAdvertisementsInput = {
    facilities_id?: string
    name: string
    timezone: string
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type facilitiesUncheckedCreateWithoutAdvertisementsInput = {
    facilities_id?: string
    name: string
    timezone: string
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type facilitiesCreateOrConnectWithoutAdvertisementsInput = {
    where: facilitiesWhereUniqueInput
    create: XOR<facilitiesCreateWithoutAdvertisementsInput, facilitiesUncheckedCreateWithoutAdvertisementsInput>
  }

  export type parking_lotCreateWithoutAdvertisementsInput = {
    parking_lot_id?: string
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    users?: usersCreateNestedOneWithoutParking_lotInput
    pillar?: pillarCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotUncheckedCreateWithoutAdvertisementsInput = {
    parking_lot_id?: string
    user_id?: string | null
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
    pillar?: pillarUncheckedCreateNestedManyWithoutParking_lotInput
  }

  export type parking_lotCreateOrConnectWithoutAdvertisementsInput = {
    where: parking_lotWhereUniqueInput
    create: XOR<parking_lotCreateWithoutAdvertisementsInput, parking_lotUncheckedCreateWithoutAdvertisementsInput>
  }

  export type facilitiesUpsertWithoutAdvertisementsInput = {
    update: XOR<facilitiesUpdateWithoutAdvertisementsInput, facilitiesUncheckedUpdateWithoutAdvertisementsInput>
    create: XOR<facilitiesCreateWithoutAdvertisementsInput, facilitiesUncheckedCreateWithoutAdvertisementsInput>
    where?: facilitiesWhereInput
  }

  export type facilitiesUpdateToOneWithWhereWithoutAdvertisementsInput = {
    where?: facilitiesWhereInput
    data: XOR<facilitiesUpdateWithoutAdvertisementsInput, facilitiesUncheckedUpdateWithoutAdvertisementsInput>
  }

  export type facilitiesUpdateWithoutAdvertisementsInput = {
    facilities_id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    timezone?: StringFieldUpdateOperationsInput | string
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type facilitiesUncheckedUpdateWithoutAdvertisementsInput = {
    facilities_id?: StringFieldUpdateOperationsInput | string
    name?: StringFieldUpdateOperationsInput | string
    timezone?: StringFieldUpdateOperationsInput | string
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type parking_lotUpsertWithoutAdvertisementsInput = {
    update: XOR<parking_lotUpdateWithoutAdvertisementsInput, parking_lotUncheckedUpdateWithoutAdvertisementsInput>
    create: XOR<parking_lotCreateWithoutAdvertisementsInput, parking_lotUncheckedCreateWithoutAdvertisementsInput>
    where?: parking_lotWhereInput
  }

  export type parking_lotUpdateToOneWithWhereWithoutAdvertisementsInput = {
    where?: parking_lotWhereInput
    data: XOR<parking_lotUpdateWithoutAdvertisementsInput, parking_lotUncheckedUpdateWithoutAdvertisementsInput>
  }

  export type parking_lotUpdateWithoutAdvertisementsInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    users?: usersUpdateOneWithoutParking_lotNestedInput
    pillar?: pillarUpdateManyWithoutParking_lotNestedInput
  }

  export type parking_lotUncheckedUpdateWithoutAdvertisementsInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    user_id?: NullableStringFieldUpdateOperationsInput | string | null
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    pillar?: pillarUncheckedUpdateManyWithoutParking_lotNestedInput
  }

  export type advertisementsCreateWithoutFacilitiesInput = {
    advertisements_id?: string
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    parking_lot?: parking_lotCreateNestedOneWithoutAdvertisementsInput
  }

  export type advertisementsUncheckedCreateWithoutFacilitiesInput = {
    advertisements_id?: string
    parking_lot_id?: string | null
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type advertisementsCreateOrConnectWithoutFacilitiesInput = {
    where: advertisementsWhereUniqueInput
    create: XOR<advertisementsCreateWithoutFacilitiesInput, advertisementsUncheckedCreateWithoutFacilitiesInput>
  }

  export type advertisementsCreateManyFacilitiesInputEnvelope = {
    data: advertisementsCreateManyFacilitiesInput | advertisementsCreateManyFacilitiesInput[]
    skipDuplicates?: boolean
  }

  export type advertisementsUpsertWithWhereUniqueWithoutFacilitiesInput = {
    where: advertisementsWhereUniqueInput
    update: XOR<advertisementsUpdateWithoutFacilitiesInput, advertisementsUncheckedUpdateWithoutFacilitiesInput>
    create: XOR<advertisementsCreateWithoutFacilitiesInput, advertisementsUncheckedCreateWithoutFacilitiesInput>
  }

  export type advertisementsUpdateWithWhereUniqueWithoutFacilitiesInput = {
    where: advertisementsWhereUniqueInput
    data: XOR<advertisementsUpdateWithoutFacilitiesInput, advertisementsUncheckedUpdateWithoutFacilitiesInput>
  }

  export type advertisementsUpdateManyWithWhereWithoutFacilitiesInput = {
    where: advertisementsScalarWhereInput
    data: XOR<advertisementsUpdateManyMutationInput, advertisementsUncheckedUpdateManyWithoutFacilitiesInput>
  }

  export type usersCreateManyRoleInput = {
    user_id?: string
    first_name?: string | null
    last_name?: string | null
    email?: string | null
    password?: string | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type usersUpdateWithoutRoleInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    parking_lot?: parking_lotUpdateManyWithoutUsersNestedInput
  }

  export type usersUncheckedUpdateWithoutRoleInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    parking_lot?: parking_lotUncheckedUpdateManyWithoutUsersNestedInput
  }

  export type usersUncheckedUpdateManyWithoutRoleInput = {
    user_id?: StringFieldUpdateOperationsInput | string
    first_name?: NullableStringFieldUpdateOperationsInput | string | null
    last_name?: NullableStringFieldUpdateOperationsInput | string | null
    email?: NullableStringFieldUpdateOperationsInput | string | null
    password?: NullableStringFieldUpdateOperationsInput | string | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type parking_lotCreateManyUsersInput = {
    parking_lot_id?: string
    parking_lot_name?: string | null
    description?: string | null
    image?: Uint8Array | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    is_deleted?: boolean | null
    north_angle_deg?: number | null
  }

  export type parking_lotUpdateWithoutUsersInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    advertisements?: advertisementsUpdateManyWithoutParking_lotNestedInput
    pillar?: pillarUpdateManyWithoutParking_lotNestedInput
  }

  export type parking_lotUncheckedUpdateWithoutUsersInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
    advertisements?: advertisementsUncheckedUpdateManyWithoutParking_lotNestedInput
    pillar?: pillarUncheckedUpdateManyWithoutParking_lotNestedInput
  }

  export type parking_lotUncheckedUpdateManyWithoutUsersInput = {
    parking_lot_id?: StringFieldUpdateOperationsInput | string
    parking_lot_name?: NullableStringFieldUpdateOperationsInput | string | null
    description?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_deleted?: NullableBoolFieldUpdateOperationsInput | boolean | null
    north_angle_deg?: NullableFloatFieldUpdateOperationsInput | number | null
  }

  export type advertisementsCreateManyParking_lotInput = {
    advertisements_id?: string
    facility_id?: string | null
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type pillarCreateManyParking_lotInput = {
    pillar_id?: string
    pillar_code?: string | null
    reference_x?: number | null
    reference_y?: number | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
    node_type?: string | null
    floor_level?: number | null
  }

  export type advertisementsUpdateWithoutParking_lotInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    facilities?: facilitiesUpdateOneWithoutAdvertisementsNestedInput
  }

  export type advertisementsUncheckedUpdateWithoutParking_lotInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    facility_id?: NullableStringFieldUpdateOperationsInput | string | null
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsUncheckedUpdateManyWithoutParking_lotInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    facility_id?: NullableStringFieldUpdateOperationsInput | string | null
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type pillarUpdateWithoutParking_lotInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput
  }

  export type pillarUncheckedUpdateWithoutParking_lotInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
    directional_relationship_directional_relationship_from_pillar_idTopillar?: directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarNestedInput
    directional_relationship_directional_relationship_to_pillar_idTopillar?: directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarNestedInput
  }

  export type pillarUncheckedUpdateManyWithoutParking_lotInput = {
    pillar_id?: StringFieldUpdateOperationsInput | string
    pillar_code?: NullableStringFieldUpdateOperationsInput | string | null
    reference_x?: NullableFloatFieldUpdateOperationsInput | number | null
    reference_y?: NullableFloatFieldUpdateOperationsInput | number | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    node_type?: NullableStringFieldUpdateOperationsInput | string | null
    floor_level?: NullableIntFieldUpdateOperationsInput | number | null
  }

  export type directional_relationshipCreateManyPillar_directional_relationship_from_pillar_idTopillarInput = {
    directional_relationship_id?: string
    to_pillar_id?: string | null
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type directional_relationshipCreateManyPillar_directional_relationship_to_pillar_idTopillarInput = {
    directional_relationship_id?: string
    from_pillar_id?: string | null
    distance_meters?: Decimal | DecimalJsLike | number | string | null
    direction_angle?: number | null
    is_bidirectional?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type directional_relationshipUpdateWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    pillar_directional_relationship_to_pillar_idTopillar?: pillarUpdateOneWithoutDirectional_relationship_directional_relationship_to_pillar_idTopillarNestedInput
  }

  export type directional_relationshipUncheckedUpdateWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    to_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_from_pillar_idTopillarInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    to_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type directional_relationshipUpdateWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    pillar_directional_relationship_from_pillar_idTopillar?: pillarUpdateOneWithoutDirectional_relationship_directional_relationship_from_pillar_idTopillarNestedInput
  }

  export type directional_relationshipUncheckedUpdateWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    from_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type directional_relationshipUncheckedUpdateManyWithoutPillar_directional_relationship_to_pillar_idTopillarInput = {
    directional_relationship_id?: StringFieldUpdateOperationsInput | string
    from_pillar_id?: NullableStringFieldUpdateOperationsInput | string | null
    distance_meters?: NullableDecimalFieldUpdateOperationsInput | Decimal | DecimalJsLike | number | string | null
    direction_angle?: NullableIntFieldUpdateOperationsInput | number | null
    is_bidirectional?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsCreateManyFacilitiesInput = {
    advertisements_id?: string
    parking_lot_id?: string | null
    title: string
    content_type?: string | null
    image?: Uint8Array | null
    text_content?: string | null
    position?: string | null
    priority?: number | null
    start_date?: Date | string | null
    end_date?: Date | string | null
    is_active?: boolean | null
    status?: boolean | null
    created_at?: Date | string | null
    updated_at?: Date | string | null
  }

  export type advertisementsUpdateWithoutFacilitiesInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    parking_lot?: parking_lotUpdateOneWithoutAdvertisementsNestedInput
  }

  export type advertisementsUncheckedUpdateWithoutFacilitiesInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }

  export type advertisementsUncheckedUpdateManyWithoutFacilitiesInput = {
    advertisements_id?: StringFieldUpdateOperationsInput | string
    parking_lot_id?: NullableStringFieldUpdateOperationsInput | string | null
    title?: StringFieldUpdateOperationsInput | string
    content_type?: NullableStringFieldUpdateOperationsInput | string | null
    image?: NullableBytesFieldUpdateOperationsInput | Uint8Array | null
    text_content?: NullableStringFieldUpdateOperationsInput | string | null
    position?: NullableStringFieldUpdateOperationsInput | string | null
    priority?: NullableIntFieldUpdateOperationsInput | number | null
    start_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    end_date?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    is_active?: NullableBoolFieldUpdateOperationsInput | boolean | null
    status?: NullableBoolFieldUpdateOperationsInput | boolean | null
    created_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
    updated_at?: NullableDateTimeFieldUpdateOperationsInput | Date | string | null
  }



  /**
   * Batch Payload for updateMany & deleteMany & createMany
   */

  export type BatchPayload = {
    count: number
  }

  /**
   * DMMF
   */
  export const dmmf: runtime.BaseDMMF
}