/**
 * Generate the per-site runtime services for a server-app box: queue workers
 * (systemd), the app scheduler (cron), and arbitrary daemons (systemd).
 * Reconciled on every deploy so units track the config — units no longer in the
 * config are stopped and removed.
 *
 * HOW the scheduler + queue workers are invoked (Stacks/Bun vs Laravel/PHP) is
 * delegated to an {@link AppFrameworkDriver} selected by `site.framework`
 * (Stacks-first default). This file only owns unit/cron plumbing + pruning.
 *
 * Unit naming (so a site's units can be globbed for pruning):
 *   <slug>-<site>-queue-<i>.service
 *   <slug>-<site>-daemon-<slug-of-name>.service
 * Scheduler cron lives at /etc/cron.d/<slug>-<site>-scheduler.
 *
 * ExecStart commands target `<base>/current/...` (the active-release symlink),
 * so workers/daemons always run the live code; `queue:restart` (run by the
 * deploy's $RESTART_QUEUES macro) cycles them onto the new release.
 */
import type { SiteConfig } from '@ts-cloud/core';
export interface SiteServicesOptions {
    slug: string;
    siteName: string;
    site: SiteConfig;
    /** PHP version selecting the `phpX.Y` binary (Laravel only). @default '8.3' */
    phpVersion?: string;
    /** Site base dir. @default `/var/www/<siteName>` */
    appBase?: string;
}
export declare function queueUnitName(slug: string, siteName: string, index: number): string;
export declare function daemonUnitName(slug: string, siteName: string, daemon: {
    name?: string;
    command: string;
}, index: number): string;
/** Path of the scheduler cron file for a site. */
export declare function schedulerCronPath(slug: string, siteName: string): string;
/**
 * Build the full reconcile script: (re)write desired queue/daemon units +
 * scheduler cron, prune stale units for this site, and reload systemd.
 */
export declare function buildSiteServicesScript(options: SiteServicesOptions): string[];
/** Whether a site declares any runtime services (avoids emitting an empty reconcile). */
export declare function siteHasServices(site: SiteConfig): boolean;
