export interface CreateSiteData {
    name: string;
    slug: string;
    domain?: string;
    subdomain?: string;
    description?: string;
    templateId: string;
    ownerId: string;
}
export interface UpdateSiteData {
    name?: string;
    description?: string;
    domain?: string;
    subdomain?: string;
    status?: "DRAFT" | "ACTIVE" | "INACTIVE" | "ARCHIVED";
    isPublished?: boolean;
    settings?: Record<string, unknown>;
    templateData?: Record<string, unknown>;
}
export interface SiteListOptions {
    ownerId?: string;
    status?: "DRAFT" | "ACTIVE" | "INACTIVE" | "ARCHIVED";
    search?: string;
    page?: number;
    pageSize?: number;
    sortBy?: "name" | "createdAt" | "updatedAt";
    sortOrder?: "asc" | "desc";
}
export interface Site {
    id: string;
    name: string;
    slug: string;
    domain?: string | null;
    subdomain?: string | null;
    description?: string | null;
    templateId: string;
    templateData?: Record<string, unknown> | null;
    status: "DRAFT" | "ACTIVE" | "INACTIVE" | "ARCHIVED";
    isPublished: boolean;
    publishedAt?: Date | null;
    ownerId: string;
    settings?: Record<string, unknown> | null;
    createdAt: Date;
    updatedAt: Date;
    _count?: {
        siteSections: number;
        pages: number;
        assets: number;
        siteUsers: number;
    };
}
export declare class SiteApiService {
    getSites(options?: SiteListOptions): Promise<{
        sites: Site[];
        totalCount: number;
        page: number;
        pageSize: number;
        totalPages: number;
    }>;
    getSite(siteId: string, includeRelations?: boolean): Promise<Site | null>;
    getSiteBySlug(slug: string): Promise<Site | null>;
    getSiteByDomain(domain: string): Promise<Site | null>;
    createSite(data: CreateSiteData): Promise<Site>;
    updateSite(siteId: string, data: UpdateSiteData): Promise<Site>;
    deleteSite(siteId: string): Promise<void>;
    publishSite(siteId: string): Promise<Site>;
    unpublishSite(siteId: string): Promise<Site>;
    cloneSite(siteId: string, newData: {
        name: string;
        slug: string;
        ownerId: string;
    }): Promise<Site>;
    getSiteStats(ownerId?: string): Promise<{
        total: number;
        published: number;
        draft: number;
        active: number;
        inactive: number;
        byTemplate: Record<string, number>;
    }>;
    searchSites(query: string, ownerId?: string, limit?: number): Promise<{
        id: string;
        name: string;
        slug: string;
        domain?: string | null;
    }[]>;
}
export declare const siteApiService: SiteApiService;
export declare const createSite: (data: CreateSiteData) => Promise<Site>;
export declare const getSites: (options?: SiteListOptions) => Promise<{
    sites: Site[];
    totalCount: number;
    page: number;
    pageSize: number;
    totalPages: number;
}>;
export declare const getSite: (id: string, includeRelations?: boolean) => Promise<Site>;
export declare const getSiteBySlug: (slug: string) => Promise<Site>;
export declare const getSiteByDomain: (domain: string) => Promise<Site>;
export declare const updateSite: (id: string, data: UpdateSiteData) => Promise<Site>;
export declare const deleteSite: (id: string) => Promise<void>;
export declare const publishSite: (id: string) => Promise<Site>;
export declare const unpublishSite: (id: string) => Promise<Site>;
export declare const cloneSite: (id: string, newData: Parameters<typeof siteApiService.cloneSite>[1]) => Promise<Site>;
export declare const getSiteStats: (ownerId?: string) => Promise<{
    total: number;
    published: number;
    draft: number;
    active: number;
    inactive: number;
    byTemplate: Record<string, number>;
}>;
export declare const searchSites: (query: string, ownerId?: string, limit?: number) => Promise<{
    id: string;
    name: string;
    slug: string;
    domain?: string | null;
}[]>;
//# sourceMappingURL=site-api.d.ts.map