import { Client } from '@botpress/client';
/**
 * Built-in tag definitions that must be consistent between runtime and code generation.
 *
 * These tags are automatically available and don't need to be defined in agent.config.ts
 *
 * IMPORTANT: Tag names must be alphanumeric (camelCase), start with a lowercase letter,
 * and be between 2 and 100 characters in length per Botpress API requirements.
 */
export declare const BUILT_IN_TAGS: {
    readonly conversation: {
        /** Last synced message timestamp - automatically updated when messages are processed */
        readonly adkSyncTs: {
            readonly title: "ADK Sync Timestamp";
            readonly description: "Built-in: Last synced message timestamp. Automatically updated by the ADK when messages are processed.";
        };
    };
    readonly user: {};
    readonly bot: {};
    readonly message: {};
    readonly workflow: {};
};
/**
 * TrackedTags manages tags for bot, user, conversation, and workflow entities.
 * Tags are key-value pairs where values are strings or undefined.
 * Changes are tracked and persisted automatically.
 *
 * Note: System tags (containing ':') are read-only and will be ignored during saves and dirty checks.
 */
export declare class TrackedTags {
    type: 'bot' | 'user' | 'conversation' | 'workflow';
    id: string;
    client: Client;
    private _tags;
    private _initialTags;
    private _loaded;
    private _saving;
    private _saveAgain;
    private _saveAgainCount;
    private static _savingAll;
    private static _saveAllAgain;
    private static _saveAllCount;
    private constructor();
    static create(props: {
        type: 'bot' | 'user' | 'conversation' | 'workflow';
        id: string;
        client: Client;
        initialTags?: Record<string, string | undefined>;
    }): TrackedTags;
    static saveAllDirty(): Promise<void>;
    static loadAll(): Promise<void>;
    static unloadAll(): void;
    load(force?: boolean): Promise<void>;
    save(): Promise<void>;
    isDirty(): boolean;
    get tags(): Record<string, string | undefined>;
    set tags(value: Record<string, string | undefined>);
    private fetchTags;
    /**
     * Get the list of valid tag keys from the agent configuration.
     * Only tags defined in agent.config.ts can be persisted.
     */
    private getValidTagKeys;
    private persistTags;
}
//# sourceMappingURL=tracked-tags.d.ts.map