/**
 * This file was generated by kysely-codegen.
 * Please do not edit it manually.
 */

import type { ColumnType } from "kysely";

export type Generated<T> = T extends ColumnType<infer S, infer I, infer U>
  ? ColumnType<S, I | undefined, U>
  : ColumnType<T, T | undefined, T>;

export type Int8 = ColumnType<string, bigint | number | string, bigint | number | string>;

export type Json = JsonValue;

export type JsonArray = JsonValue[];

export type JsonObject = {
  [x: string]: JsonValue | undefined;
};

export type JsonPrimitive = boolean | number | string | null;

export type JsonValue = JsonArray | JsonObject | JsonPrimitive;

export type Numeric = ColumnType<string, number | string, number | string>;

export type Timestamp = ColumnType<Date, Date | string, Date | string>;

export interface AdRewardEvents {
  ad_network: Generated<string>;
  ad_unit_id: string | null;
  claimed_at: Timestamp | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  expires_at: Timestamp | null;
  id: Generated<string>;
  idempotency_key: string | null;
  intent_token: string;
  reward_type: string;
  reward_value: Generated<number>;
  status: Generated<string>;
  updated_at: Generated<Timestamp>;
  user_id: string | null;
  verification_hash: string | null;
  verification_key_id: string | null;
  verification_payload: Generated<Json>;
  verification_signature: string | null;
  verified_at: Timestamp | null;
}

export interface Ads {
  ad_image_uri: string | null;
  approved_at: Timestamp | null;
  approved_by: string | null;
  business_name: string;
  business_type: Generated<string | null>;
  contact_email: string | null;
  contact_name: string | null;
  contact_phone: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string | null;
  duration_days: Generated<number | null>;
  end_date: Timestamp | null;
  id: Generated<string>;
  image_uri: string;
  is_reward_enabled: Generated<boolean>;
  link_type: Generated<string>;
  link_url: string | null;
  logo_uri: string | null;
  placement: Generated<string | null>;
  reward_type: Generated<string>;
  reward_value: Generated<number>;
  reward_watch_seconds: Generated<number>;
  start_date: Timestamp | null;
  status: Generated<string | null>;
  user_id: string | null;
  video_url: string | null;
  website: string | null;
}

export interface Admins {
  created_at: Generated<Timestamp>;
  created_by: string | null;
  deleted_at: Timestamp | null;
  display_name: string;
  email: string;
  id: Generated<string>;
  is_active: Generated<boolean>;
  last_login_at: Timestamp | null;
  password_hash: string;
  role: Generated<string>;
  updated_at: Generated<Timestamp>;
}

export interface AnalyticsEvents {
  created_at: Generated<Timestamp | null>;
  deleted_at: Timestamp | null;
  event_name: string;
  id: Generated<Int8>;
  ip_address: string | null;
  metadata: Json | null;
  page_url: string | null;
  platform: string | null;
  properties: Generated<Json | null>;
  referrer: string | null;
  session_id: string | null;
  user_agent: string | null;
  user_id: string | null;
}

export interface AppSettings {
  deleted_at: Timestamp | null;
  key: string;
  updated_at: Generated<Timestamp>;
  value: string;
}

export interface BlockedUsers {
  blocked_id: string;
  blocker_id: string;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
}

export interface Blogs {
  author_name: Generated<string>;
  category: string | null;
  content: string;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  excerpt: string;
  featured_image_url: string | null;
  id: Generated<string>;
  is_published: Generated<boolean | null>;
  published_at: Timestamp | null;
  slug: string;
  tags: Generated<Json | null>;
  title: string;
  updated_at: Generated<Timestamp>;
  view_count: Generated<number | null>;
}

export interface ClaimRequests {
  claimer_user_id: string;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  found_report_id: string;
  found_user_id: string;
  id: Generated<string>;
  lost_report_id: string;
  status: Generated<string>;
}

export interface Comments {
  author: string;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  report_id: string;
  text: string;
  user_id: string | null;
}

export interface ContentReports {
  comment_id: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  details: string | null;
  id: Generated<string>;
  reason: string;
  report_id: string | null;
  reporter_id: string;
  status: Generated<string>;
}

export interface Conversations {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  last_message_at: Generated<Timestamp>;
  last_message_text: Generated<string>;
  participant1_id: string;
  participant2_id: string;
  report_id: string | null;
}

export interface CreditLedger {
  balance_after: number;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  delta: number;
  id: Generated<string>;
  idempotency_key: string;
  metadata: Generated<Json>;
  reason: string;
  reference_id: string | null;
  reference_type: string;
  user_id: string | null;
}

export interface CreditPurchaseLogs {
  created_at: Generated<Timestamp>;
  credits_amount: number;
  currency: Generated<string>;
  deleted_at: Timestamp | null;
  environment: Generated<string>;
  id: Generated<string>;
  original_transaction_id: string | null;
  platform: string;
  price_usd: Numeric | null;
  product_id: string;
  purchase_token: string | null;
  store_payload: Generated<Json | null>;
  transaction_id: string | null;
  updated_at: Generated<Timestamp>;
  user_id: string | null;
}

export interface Devices {
  app_version: string;
  build_number: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  device_id: string;
  expo_push_token: string | null;
  id: Generated<string>;
  ip_city: string | null;
  ip_country: string | null;
  ip_country_code: string | null;
  ip_latitude: number | null;
  ip_longitude: number | null;
  last_active_at: Generated<Timestamp>;
  last_ip: string | null;
  latitude: number | null;
  location_accuracy_m: number | null;
  location_updated_at: Timestamp | null;
  longitude: number | null;
  platform: string;
  updated_at: Generated<Timestamp>;
  user_id: string | null;
}

export interface Faqs {
  answer: string;
  category: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  display_order: Generated<number | null>;
  id: Generated<string>;
  is_active: Generated<boolean | null>;
  is_published: Generated<boolean | null>;
  order_index: Generated<number | null>;
  question: string;
  updated_at: Generated<Timestamp>;
}

export interface Features {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string;
  display_order: Generated<number | null>;
  icon_name: string | null;
  icon_url: string | null;
  id: Generated<string>;
  is_active: Generated<boolean | null>;
  is_published: Generated<boolean | null>;
  order_index: Generated<number | null>;
  title: string;
  updated_at: Generated<Timestamp>;
}

export interface FlaggedReports {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  detected_object: string | null;
  detected_object_confidence: Numeric | null;
  detection_payload: Generated<Json>;
  flag_source: Generated<string>;
  flag_status: Generated<string>;
  id: Generated<string>;
  resolved_at: Timestamp | null;
  review_status: Generated<string>;
  source_table: string;
  system_reason: string | null;
  target_id: string | null;
  target_type: string;
  updated_at: Generated<Timestamp>;
  user_id: string | null;
  user_reason: string | null;
}

export interface FoundReportBonusTokens {
  consumed_at: Timestamp | null;
  consumed_report_id: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  expires_at: Timestamp;
  id: Generated<string>;
  source_event_id: string | null;
  status: Generated<string>;
  token: string;
  updated_at: Generated<Timestamp>;
  user_id: string | null;
}

export interface HowItWorksSteps {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string;
  icon_name: string | null;
  icon_url: string | null;
  id: Generated<string>;
  is_active: Generated<boolean | null>;
  step_number: number;
  title: string;
  updated_at: Generated<Timestamp>;
}

export interface Messages {
  conversation_id: string;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  read_at: Timestamp | null;
  sender_id: string;
  text: string;
}

export interface Notifications {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  message: string;
  profile_id: string | null;
  quick_snap_id: string | null;
  read: Generated<boolean>;
  read_at: Timestamp | null;
  report_id: string | null;
  source_event_id: string | null;
  title: string;
  type: string;
  user_id: string;
}

export interface OrganisationAnimals {
  breed: Generated<string>;
  color: Generated<string>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: Generated<string>;
  desexed: Generated<boolean>;
  id: Generated<string>;
  intake_date: Timestamp | null;
  intake_type: Generated<string>;
  markings: Generated<string>;
  microchip_number: string | null;
  org_id: string;
  pet_name: Generated<string>;
  pet_type: string;
  photo_uris: Generated<Json>;
  size: Generated<string>;
  status: Generated<string>;
  updated_at: Generated<Timestamp>;
}

export interface Organisations {
  abn: string | null;
  address: string;
  approved_at: Timestamp | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string | null;
  email: string;
  id: Generated<string>;
  latitude: Generated<number>;
  logo_uri: string | null;
  longitude: Generated<number>;
  name: string;
  phone: string;
  status: Generated<string>;
  type: string;
  updated_at: Generated<Timestamp>;
  user_id: string;
  website: string | null;
}

export interface PetFlyers {
  created_at: Generated<Timestamp | null>;
  flyer_url: string;
  pet_id: string;
  updated_at: Generated<Timestamp | null>;
}

export interface PetProfiles {
  biometric_photo_uris: Generated<Json>;
  breed: Generated<string>;
  color: Generated<string>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  is_active: Generated<boolean>;
  lost_id: string | null;
  markings: Generated<string>;
  medical_notes: Generated<string>;
  microchip_number: Generated<string>;
  owner_name: Generated<string>;
  owner_phone: Generated<string>;
  pet_name: string;
  pet_type: string;
  photo_uris: Generated<Json>;
  size: Generated<string>;
  suburb: Generated<string>;
  updated_at: Generated<Timestamp>;
  user_id: string;
}

export interface PetReports {
  boost_expires_at: Timestamp | null;
  boosted_at: Timestamp | null;
  breed: Generated<string>;
  color: Generated<string>;
  contact_name: Generated<string>;
  contact_phone: Generated<string>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: Generated<string>;
  flag_id: string | null;
  id: Generated<string>;
  is_active: Generated<boolean>;
  is_boosted: Generated<boolean>;
  is_flagged: Generated<boolean>;
  is_reunited: Generated<boolean | null>;
  last_seen_date: Generated<string>;
  latitude: Generated<number>;
  location_name: Generated<string>;
  longitude: Generated<number>;
  markings: Generated<string>;
  pet_id: string | null;
  pet_name: string;
  pet_reunited_id: string | null;
  pet_type: string;
  photo_uri: Generated<string>;
  photo_uris: Generated<Json>;
  reunion_date: Timestamp | null;
  reunion_message: string | null;
  reward: Generated<string>;
  reward_pool: Generated<number>;
  show_contact_public: Generated<boolean>;
  size: Generated<string>;
  status: Generated<string>;
  updated_at: Generated<Timestamp>;
  user_id: string;
}

export interface PricingFeatures {
  created_at: Generated<Timestamp | null>;
  deleted_at: Timestamp | null;
  display_order: Generated<number | null>;
  free_value: string;
  icon: string;
  id: Generated<number>;
  label: string;
  premium_value: string;
  updated_at: Generated<Timestamp | null>;
}

export interface PricingPlans {
  apple_product_id: string | null;
  billing_period: Generated<string>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string | null;
  display_order: Generated<number | null>;
  features: Generated<Json | null>;
  google_product_id: string | null;
  id: Generated<string>;
  is_active: Generated<boolean | null>;
  is_popular: Generated<boolean | null>;
  name: string;
  price_aud: Numeric;
  stripe_price_id: string | null;
  updated_at: Generated<Timestamp>;
}

export interface PurchaseEvents {
  app_bundle_id: string | null;
  country_code: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  environment: Generated<string>;
  event_type: string;
  expires_at: Timestamp | null;
  expires_date_ms: Int8 | null;
  id: Generated<string>;
  original_purchase_date_ms: Int8 | null;
  original_transaction_id: string | null;
  ownership_type: string | null;
  platform: string;
  product_id: string | null;
  purchase_date_ms: Int8 | null;
  store_payload: Generated<Json | null>;
  storefront_country_code: string | null;
  subscription_group_id: string | null;
  transaction_id: string | null;
  transaction_reason: string | null;
  user_id: string | null;
  web_order_line_item_id: string | null;
}

export interface QuickSnaps {
  breed: Generated<string | null>;
  color: Generated<string | null>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  flag_id: string | null;
  id: Generated<string>;
  image_url: string;
  is_flagged: Generated<boolean>;
  latitude: Generated<number>;
  location_name: Generated<string>;
  longitude: Generated<number>;
  pet_type: Generated<string | null>;
  photo_uri: string;
  size: Generated<string | null>;
  type: Generated<string>;
  updated_at: Generated<Timestamp>;
  user_id: string;
  visibility: Generated<string>;
}

export interface ReferralAttributions {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  fraud_reasons: Generated<Json>;
  fraud_score: Generated<number>;
  id: Generated<string>;
  last_checked_at: Timestamp | null;
  meaningful_action_at: Timestamp | null;
  referee_user_id: string;
  referral_code_used: string | null;
  referrer_user_id: string;
  rewarded_at: Timestamp | null;
  signup_device_id: string | null;
  signup_ip_hash: string | null;
  signup_user_agent: string | null;
  status: Generated<string>;
  updated_at: Generated<Timestamp>;
  validated_at: Timestamp | null;
  validation_reason: string | null;
  wait_until: Timestamp;
}

export interface ReferralRewards {
  created_at: Generated<Timestamp>;
  days_awarded: number;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  reason: string;
  type: string;
  user_id: string;
}

export interface ReportLikes {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  report_id: string;
  user_id: string;
}

export interface ReunitedStories {
  after_image_url: string | null;
  before_image_url: string | null;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  featured_on_homepage: Generated<boolean | null>;
  how_they_reunited: string | null;
  id: Generated<string>;
  is_featured: Generated<boolean | null>;
  is_published: Generated<boolean | null>;
  location_found: string | null;
  location_lost: string | null;
  lost_duration_days: number | null;
  owner_name: string;
  pet_name: string;
  pet_type: string;
  reunion_date: Timestamp;
  slug: string;
  story_content: string;
  story_title: string;
  updated_at: Generated<Timestamp>;
  view_count: Generated<number | null>;
}

export interface RewardGrants {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  granted_at: Generated<Timestamp>;
  granted_days: Generated<number>;
  id: Generated<string>;
  metadata: Generated<Json>;
  reason: string;
  requested_days: number;
  reward_key: string;
  reward_type: string;
  source_event_id: string | null;
  status: string;
  updated_at: Generated<Timestamp>;
  user_id: string;
}

export interface SavedPets {
  created_at: Generated<Timestamp | null>;
  deleted_at: Timestamp | null;
  id: Generated<string>;
  /**
   * Unified report id. May reference pet_reports.id or scrapped_pet_report.id.
   */
  pet_id: string | null;
  user_id: string | null;
}

export interface ScraperRunLog {
  created_at: Generated<Timestamp>;
  error_detail: string | null;
  finished_at: Timestamp | null;
  id: Generated<string>;
  message: Generated<string>;
  records_inserted: Generated<number>;
  scraper_name: string;
  started_at: Timestamp | null;
  status: string;
  trigger: string;
}

export interface ScrappedPetReport {
  boost_expires_at: Timestamp | null;
  boosted_at: Timestamp | null;
  breed: Generated<string>;
  color: Generated<string>;
  contact_email: Generated<string>;
  contact_name: Generated<string>;
  contact_phone: Generated<string>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: Generated<string>;
  details_url: Generated<string>;
  detected_breed: Generated<string>;
  detected_color: Generated<string>;
  detected_is_animal: boolean | null;
  detected_object: Generated<string>;
  detected_object_confidence: number | null;
  detected_type: Generated<string>;
  detection_reason: Generated<string>;
  found_location: Generated<string>;
  id: Generated<string>;
  is_active: Generated<boolean>;
  is_boosted: Generated<boolean>;
  is_reunited: Generated<boolean | null>;
  last_seen_date: Generated<string>;
  latitude: Generated<number>;
  location_name: Generated<string>;
  longitude: Generated<number>;
  markings: Generated<string>;
  microchip_number: string | null;
  pet_name: Generated<string>;
  pet_reunited_id: string | null;
  pet_type: Generated<string>;
  photo_uri: Generated<string>;
  photo_uris: Generated<Json>;
  raw_text: Generated<string>;
  reunion_date: Timestamp | null;
  reunion_message: string | null;
  reward: Generated<string>;
  reward_pool: Generated<number>;
  scraped_animal_id: Generated<string>;
  scraped_at: Generated<Timestamp>;
  sex: Generated<string>;
  show_contact_public: Generated<boolean>;
  size: Generated<string>;
  status: Generated<string>;
  updated_at: Generated<Timestamp>;
  website_id: string;
}

export interface SocialShares {
  activity_quality_score: Generated<number>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  device_id: string | null;
  fraud_reasons: Generated<Json>;
  fraud_score: Generated<number>;
  id: Generated<string>;
  ip_hash: string | null;
  platform: string;
  share_duration_ms: number | null;
  share_intent_token: string | null;
  shared_date: Generated<Timestamp>;
  status: Generated<string>;
  user_id: string;
  validated_at: Timestamp | null;
  validation_reason: string | null;
}

export interface Subscriptions {
  cancelled_at: Timestamp | null;
  created_at: Generated<Timestamp>;
  current_period_end: Timestamp | null;
  current_period_start: Timestamp | null;
  deleted_at: Timestamp | null;
  expires_at: Timestamp | null;
  id: Generated<string>;
  latest_transaction_id: string | null;
  original_transaction_id: string | null;
  plan: Generated<string>;
  product_id: string | null;
  revenuecat_customer_id: string | null;
  source: string;
  started_at: Generated<Timestamp>;
  status: Generated<string>;
  store_product_id: string | null;
  updated_at: Generated<Timestamp>;
  user_id: string;
}

export interface TimelineEvents {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string;
  id: Generated<string>;
  report_id: string;
  type: string;
}

export interface Users {
  additional_credits: Generated<number>;
  apple_subject: string | null;
  basic_credits: Generated<number>;
  consent_ai: Generated<boolean>;
  consent_data_storage: Generated<boolean>;
  consent_date: Timestamp | null;
  consent_privacy: Generated<boolean>;
  consent_terms: Generated<boolean>;
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  display_name: string;
  email: string;
  email_verified_at: Timestamp | null;
  email_verify_otp: string | null;
  email_verify_otp_expires_at: Timestamp | null;
  google_subject: string | null;
  id: Generated<string>;
  last_seen_at: Timestamp | null;
  password_hash: string;
  phone: string | null;
  premium_source: string | null;
  premium_until: Timestamp | null;
  push_token: string | null;
  referral_code: string | null;
  referred_by: string | null;
  reset_otp: string | null;
  reset_otp_expires_at: Timestamp | null;
  role: Generated<string>;
  social_auth_provider: string | null;
  updated_at: Generated<Timestamp>;
}

export interface WebhookEvents {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  event_id: string;
  id: Generated<string>;
  payload: Generated<Json | null>;
  processed: Generated<boolean>;
  processed_at: Timestamp | null;
  source: string;
}

export interface Websites {
  base_url: Generated<string>;
  created_at: Generated<Timestamp>;
  id: Generated<string>;
  is_active: Generated<boolean>;
  key: string;
  last_scrape_message: string | null;
  last_scrape_started_at: Timestamp | null;
  last_scrape_status: string | null;
  last_scraped_at: Timestamp | null;
  list_url: Generated<string>;
  name: string;
  next_scrape_at: Timestamp | null;
  requested_by: string | null;
  scraper_run_hour: Generated<number>;
  scraper_run_minute: Generated<number>;
  scraper_timezone: Generated<string>;
  status: Generated<string>;
  updated_at: Generated<Timestamp>;
}

export interface WhoItsForSegments {
  created_at: Generated<Timestamp>;
  deleted_at: Timestamp | null;
  description: string;
  display_order: Generated<number | null>;
  icon_name: string | null;
  icon_url: string | null;
  id: Generated<string>;
  is_active: Generated<boolean | null>;
  title: string;
  updated_at: Generated<Timestamp>;
  use_cases: Generated<Json | null>;
}

export interface DB {
  ad_reward_events: AdRewardEvents;
  admins: Admins;
  ads: Ads;
  analytics_events: AnalyticsEvents;
  app_settings: AppSettings;
  blocked_users: BlockedUsers;
  blogs: Blogs;
  claim_requests: ClaimRequests;
  comments: Comments;
  content_reports: ContentReports;
  conversations: Conversations;
  credit_ledger: CreditLedger;
  credit_purchase_logs: CreditPurchaseLogs;
  devices: Devices;
  faqs: Faqs;
  features: Features;
  flagged_reports: FlaggedReports;
  found_report_bonus_tokens: FoundReportBonusTokens;
  how_it_works_steps: HowItWorksSteps;
  messages: Messages;
  notifications: Notifications;
  organisation_animals: OrganisationAnimals;
  organisations: Organisations;
  pet_flyers: PetFlyers;
  pet_profiles: PetProfiles;
  pet_reports: PetReports;
  pricing_features: PricingFeatures;
  pricing_plans: PricingPlans;
  purchase_events: PurchaseEvents;
  quick_snaps: QuickSnaps;
  referral_attributions: ReferralAttributions;
  referral_rewards: ReferralRewards;
  report_likes: ReportLikes;
  reunited_stories: ReunitedStories;
  reward_grants: RewardGrants;
  saved_pets: SavedPets;
  scraper_run_log: ScraperRunLog;
  scrapped_pet_report: ScrappedPetReport;
  social_shares: SocialShares;
  subscriptions: Subscriptions;
  timeline_events: TimelineEvents;
  users: Users;
  webhook_events: WebhookEvents;
  websites: Websites;
  who_its_for_segments: WhoItsForSegments;
}
