/**
 * Shared structural types + tiny helpers used across the apply pipeline
 * (desired-state IR, wire client, diff, apply-cmd).
 *
 * Only shapes that are genuinely IDENTICAL on both sides of the wire belong
 * here — anything that encodes a server-specific response shape stays a
 * `Remote*` type in client.ts.
 */
/**
 * SQL-view backing for a derived entity type. Identical in the desired IR and
 * the wire snapshot: present only for derived (SQL-view-backed) entity types;
 * absent ⇒ stored (the default). `connection` (a slug) is present only for an
 * external-backed view; both sides omit it for an internal view, so it never
 * churns the diff.
 */
export interface EntityBacking {
    sql: string;
    connection?: string;
}
/** One relationship-type rule (source/target entity-type slugs). */
export interface RelationshipRule {
    source: string;
    target: string;
}
/** One watcher SQL data source. */
export interface WatcherSource {
    name: string;
    query: string;
}
export declare function isRecord(value: unknown): value is Record<string, unknown>;
/**
 * Keys of locally-declared connector definitions whose key is already known.
 * A `null` key (an auto-discovered `*.connector.ts` the server compiles) can't
 * be in the set — the key is only resolved at install time.
 */
export declare function declaredConnectorKeys(definitions: ReadonlyArray<{
    key: string | null;
}>): Set<string>;
/** Connector keys referenced by desired auth profiles and connections. */
export declare function referencedConnectorKeys(connectors: {
    authProfiles: ReadonlyArray<{
        connector: string;
    }>;
    connections: ReadonlyArray<{
        connector: string;
    }>;
}): Set<string>;
//# sourceMappingURL=shared.d.ts.map