import { P as PhotoAttachment, a as Photo } from './photos-CmBdWiuZ.js';

/** Nested under `service_items[].offers` and `packages[].offers` in public API. */
interface OfferPublic {
    id: number;
    name: string;
    description: string | null;
    value_terms: string | null;
    active?: boolean;
    expires_at?: string | null;
    expired?: boolean;
    photo_attachments?: PhotoAttachment[];
}

interface Service {
    id: number;
    name: string;
    slug: string;
    description_markdown: string;
    summary?: string;
    pricing_info?: string;
    features_markdown?: string;
    featured: boolean;
    sort_order: number;
    photo_attachments?: PhotoAttachment[];
    service_items?: ServiceItem[];
    created_at: string;
    updated_at: string;
}
interface ServiceItem {
    id: number;
    name: string;
    slug: string;
    summary?: string | null;
    description_markdown?: string | null;
    pricing_info?: string | null;
    price_cents?: number | null;
    duration_minutes?: number | null;
    sort_order: number;
    service_id?: number;
    photo_attachments?: PhotoAttachment[];
    offers?: OfferPublic[];
}
interface ServiceParams {
    featured?: boolean;
    q?: string;
    page?: number;
    per_page?: number;
}
type ServiceResponse = Service[];

interface CompanyInformation {
    id: number;
    company_name: string;
    tagline: string;
    mission_statement_markdown?: string;
    about_text_markdown?: string;
    description_markdown?: string;
    values_markdown?: string;
    stats_markdown?: string;
    founded_year?: number;
    logo_photo?: Photo;
    favicon_url?: string;
    facebook_url?: string;
    instagram_url?: string;
    tiktok_url?: string;
    linkedin_url?: string;
    twitter_url?: string;
    youtube_url?: string;
    pinterest_url?: string;
    google_my_business_url?: string;
    yelp_url?: string;
    tripadvisor_url?: string;
    google_reviews_url?: string;
    primary_phone?: string;
    primary_email?: string;
    primary_address_line_1?: string;
    primary_address_line_2?: string;
    primary_city?: string;
    primary_state?: string;
    primary_zip_code?: string;
    primary_country?: string;
    support_email?: string;
    sales_email?: string;
    business_hours?: string;
    external_management_url?: string;
    /** Member portal URL for this account. When set, used as the primary CTA instead of external_management_url. */
    portal_url?: string | null;
    created_at: string;
    updated_at: string;
    photo_attachments?: PhotoAttachment[];
    account_status?: string;
    chat_enabled?: boolean;
}
type CompanyInformationResponse = CompanyInformation | null;

/**
 * Form definition from API (GET /public/forms/:form_type).
 * fields is an ordered array; each item is a single field or an array of fields (inline row). Max depth 2.
 */
interface FormFieldDefinition {
    name: string;
    type: string;
    label: string;
    required?: boolean;
    placeholder?: string;
    /** For hidden fields, optional value to submit. */
    value?: string;
}
/** One item in the fields array: either a single field or a row of fields (inline). */
type FormFieldItem = FormFieldDefinition | FormFieldDefinition[];
interface FormDefinition {
    id: number;
    name: string;
    form_type: string;
    /** Ordered array; each element is a field or an array of fields (inline row). */
    fields: FormFieldItem[];
    settings?: Record<string, unknown>;
    /** Business name for consent copy (e.g. "{{company_name}}" in checkbox labels). */
    company_name?: string;
    created_at?: string;
    updated_at?: string;
}
type FormType = 'lead' | 'job_application' | 'marketing_list_signup';

interface PackageItem {
    quantity: number;
    service_item?: {
        id: number;
        name: string;
        slug: string;
        summary?: string | null;
    };
}
interface Package {
    id: number;
    name: string;
    slug: string;
    summary?: string | null;
    description_markdown?: string | null;
    pricing_info?: string | null;
    price_cents?: number | null;
    photo_attachments?: PhotoAttachment[];
    package_items?: PackageItem[];
    offers?: OfferPublic[];
}

export type { CompanyInformation as C, FormDefinition as F, OfferPublic as O, Package as P, Service as S, CompanyInformationResponse as a, FormFieldDefinition as b, FormFieldItem as c, FormType as d, PackageItem as e, ServiceItem as f, ServiceParams as g, ServiceResponse as h };
