import { A as ApiData } from '../ApiData-DPKNfY-9.js';
import { M as ModuleWithPermissions, A as Action } from '../notification.interface-DEW8hR8g.js';
import { A as ApiRequestDataTypeInterface } from '../ApiRequestDataTypeInterface-CYEcRUrh.js';
import { A as ApiResponseInterface } from '../ApiResponseInterface-CAIAeP5d.js';
export { b as ServerAuthService, C as ServerCompanyService, e as ServerContentService, F as ServerFeatureService, f as ServerNotificationService, h as ServerPushService, R as ServerRoleService, k as ServerS3Service, U as ServerUserService } from '../s3.service-C_K1VHyx.js';
import 'lucide-react';
import '../ApiDataInterface-DPP8s46n.js';
import '../feature.interface-CIWxo8NP.js';
import '../auth.interface-C4kEZscm.js';
import '../content.interface-Czin-YRh.js';

type CacheProfile = "seconds" | "minutes" | "hours" | "days" | "weeks" | "max" | "default";
/**
 * Revalidate a cache tag to invalidate cached data.
 * Next.js 16+ requires a profile parameter.
 *
 * @param tag - The cache tag to invalidate
 * @param profile - The cache profile (defaults to "max" for immediate invalidation)
 */
declare function invalidateCacheTag(tag: string, profile?: CacheProfile): Promise<void>;
/**
 * Revalidate multiple cache tags.
 *
 * @param tags - Array of cache tags to invalidate
 * @param profile - The cache profile (defaults to "max" for immediate invalidation)
 */
declare function invalidateCacheTags(tags: string[], profile?: CacheProfile): Promise<void>;

interface ServerRequestParams {
    method: string;
    url: string;
    token?: string;
    cache?: string;
    body?: any;
    files?: {
        [key: string]: File | Blob;
    } | File | Blob;
    companyId?: string;
    language: string;
    additionalHeaders?: Record<string, string>;
}
/**
 * Server-side request with Next.js caching support.
 * Uses fetch's native caching options for Next.js compatibility.
 */
declare function serverRequest(params: ServerRequestParams): Promise<ApiData>;

declare class ServerSession {
    static isLogged(): Promise<boolean>;
    static companyId(): Promise<string>;
    static userId(): Promise<string>;
    static checkPermission<M extends ModuleWithPermissions>(params: {
        module: M;
        action: Action;
        data?: any;
    }): Promise<void>;
    static hasRole(roleId: string): Promise<boolean>;
    static hasFeature(featureId: string): Promise<boolean>;
    static hasPermissionToModule<M extends ModuleWithPermissions>(params: {
        module: M;
        action: Action;
        data?: any;
    }): Promise<boolean>;
}

/**
 * Get the authentication token from cookies (server-side)
 */
declare function getServerToken(): Promise<string | undefined>;

/**
 * Configure the JSON:API server client.
 * Call this in your Bootstrapper or server initialization.
 */
declare function configureServerJsonApi(config: {
    apiUrl: string;
    appUrl?: string;
    trackablePages?: ModuleWithPermissions[];
    bootstrapper?: () => void;
    additionalHeaders?: Record<string, string>;
}): void;
declare function getServerApiUrl(): string;
declare function getServerAppUrl(): string;
declare function getServerTrackablePages(): ModuleWithPermissions[];
declare function ServerJsonApiGet(params: {
    classKey: ApiRequestDataTypeInterface;
    endpoint: string;
    companyId?: string;
    language: string;
}): Promise<ApiResponseInterface>;
declare function ServerJsonApiPost(params: {
    classKey: ApiRequestDataTypeInterface;
    endpoint: string;
    companyId?: string;
    body?: any;
    overridesJsonApiCreation?: boolean;
    files?: {
        [key: string]: File | Blob;
    } | File | Blob;
    language: string;
    responseType?: ApiRequestDataTypeInterface;
}): Promise<ApiResponseInterface>;
declare function ServerJsonApiPut(params: {
    classKey: ApiRequestDataTypeInterface;
    endpoint: string;
    companyId?: string;
    body?: any;
    files?: {
        [key: string]: File | Blob;
    } | File | Blob;
    language: string;
    responseType?: ApiRequestDataTypeInterface;
}): Promise<ApiResponseInterface>;
declare function ServerJsonApiPatch(params: {
    classKey: ApiRequestDataTypeInterface;
    endpoint: string;
    companyId?: string;
    body?: any;
    files?: {
        [key: string]: File | Blob;
    } | File | Blob;
    overridesJsonApiCreation?: boolean;
    responseType?: ApiRequestDataTypeInterface;
    language: string;
}): Promise<ApiResponseInterface>;
declare function ServerJsonApiDelete(params: {
    classKey: ApiRequestDataTypeInterface;
    endpoint: string;
    companyId?: string;
    language: string;
    responseType?: ApiRequestDataTypeInterface;
}): Promise<ApiResponseInterface>;

export { type CacheProfile, ServerJsonApiDelete, ServerJsonApiGet, ServerJsonApiPatch, ServerJsonApiPost, ServerJsonApiPut, type ServerRequestParams, ServerSession, configureServerJsonApi, getServerApiUrl, getServerAppUrl, getServerToken, getServerTrackablePages, invalidateCacheTag, invalidateCacheTags, serverRequest };
