import type { ConsentStoreState } from '../../store/type'; import type { Script } from './types'; /** * Creates script management functions for the consent manager store. * * @remarks * The returned methods are intended to be spread into the * {@link ConsentStoreState} and provide script loading/unloading behavior * based on the current consent state. * * @param getState - Function to get the current state from the store * @param setState - Function to update the state in the store * @returns Object containing script management functions * * @internal */ export declare function createScriptManager(getState: () => ConsentStoreState, setState: (partial: Partial) => void): { /** * Updates scripts based on current consent state. * Loads scripts that have consent and aren't loaded yet. * Unloads scripts that no longer have consent. * * @returns Object containing arrays of loaded and unloaded script IDs */ updateScripts: () => import("./types").ScriptUpdateResult; /** * Sets multiple script configurations to the store. * * @param scripts - Array of script configurations to add */ setScripts: (scripts: Script[]) => void; /** * Removes a script configuration from the store. * * @param scriptId - ID of the script to remove * * @remarks * If the script is currently loaded, it will be unloaded and the DOM * element will be removed. */ removeScript: (scriptId: string) => void; /** * Reloads a specific script based on its configuration and current * consent state. * * @param scriptId - ID of the script to reload * @returns A promise that resolves to the reloaded script element, or * `null` if the script could not be reloaded */ reloadScript: (scriptId: string) => boolean; /** * Checks if a script is currently loaded. * * @param scriptId - ID of the script to check * @returns True if the script is loaded, false otherwise */ isScriptLoaded: (scriptId: string) => boolean; /** * Gets all currently loaded script IDs. * * @returns Array of loaded script IDs */ getLoadedScriptIds: () => string[]; };