import type { FilePart, TextPart, UserModelMessage } from '../_types/@internal_ai-sdk-v5/dist/index.d.ts';
import type { MastraDBMessage, MastraProviderMetadata } from './message-list/state/types.js';
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type AgentSignalCategory = 'user' | 'state' | 'reactive' | 'notification';
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type AgentLegacySignalType = 'user-message' | 'system-reminder';
export type AgentSignalType = AgentSignalCategory | AgentLegacySignalType;
export type AgentSignalTagName = string;
export type SignalPart = TextPart | SignalFilePart;
type SignalFilePart = {
    type: 'file';
    data: string;
    mediaType: string;
    filename?: string;
    providerOptions?: MastraProviderMetadata;
};
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type AgentSignalContents = string | Array<TextPart | FilePart>;
export type AgentSignalAttributes = Record<string, string | number | boolean | null | undefined>;
export type AgentStateSignalMode = 'snapshot' | 'delta';
export type AgentStateSignalInput = {
    id: string;
    cacheKey: string;
    contents: AgentSignalContents;
    mode?: AgentStateSignalMode;
    value?: unknown;
    delta?: unknown;
    attributes?: AgentSignalAttributes;
    metadata?: Record<string, unknown>;
    providerOptions?: MastraProviderMetadata;
    tagName?: AgentSignalTagName;
};
export type AgentMessageInput = AgentSignalContents | {
    contents: AgentSignalContents;
    attributes?: AgentSignalAttributes;
    metadata?: Record<string, unknown>;
    providerOptions?: MastraProviderMetadata;
};
export type AgentSignalInput = {
    id?: string;
    createdAt?: Date | string;
    acceptedAt?: Date | string;
    type: AgentSignalType;
    tagName?: AgentSignalTagName;
    contents: AgentSignalContents;
    attributes?: AgentSignalAttributes;
    metadata?: Record<string, unknown>;
    /**
     * Provider options attached to the resulting prompt turn. Surfaces as `providerOptions` on the
     * `UserModelMessage` sent to the model and as `content.providerMetadata` on the persisted DB
     * message (also visible to UI consumers via `useChat` message metadata).
     */
    providerOptions?: MastraProviderMetadata;
};
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type AgentSignalDataPart = {
    type: 'data-user-message' | 'data-signal';
    data: {
        id: string;
        type: AgentSignalCategory;
        tagName?: AgentSignalTagName;
        contents: AgentSignalContents;
        createdAt: string;
        acceptedAt?: string;
        attributes?: AgentSignalAttributes;
        metadata?: Record<string, unknown>;
        providerOptions?: MastraProviderMetadata;
    };
    transient: true;
};
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type CreatedAgentSignal = AgentSignalInput & {
    __isCreatedSignal: true;
    id: string;
    createdAt: Date;
    acceptedAt?: Date;
    toDBMessage: (options?: {
        threadId?: string;
        resourceId?: string;
    }) => MastraDBMessage;
    toLLMMessage: () => UserModelMessage;
    toDataPart: () => AgentSignalDataPart;
};
export declare function isMastraSignalMessage(message: MastraDBMessage): message is MastraDBMessage & {
    role: 'signal';
};
export declare function signalToXmlMarkup(signal: Pick<AgentSignalInput, 'type' | 'tagName' | 'attributes'> & {
    contents?: string;
}): string;
export declare function isCreatedAgentSignal(input: unknown): input is CreatedAgentSignal;
export declare function createSignal(input: AgentSignalInput): CreatedAgentSignal;
/**
 * Resolve delivery option attributes into concrete `attributes` on a signal.
 * Returns a new signal with the selected branch's `attributes` merged into
 * top-level `attributes`.
 *
 * @experimental
 */
export declare function resolveDeliveryAttributes(signal: CreatedAgentSignal, attributes: AgentSignalAttributes | undefined): CreatedAgentSignal;
export declare function signalToMessage(signal: AgentSignalInput | CreatedAgentSignal): UserModelMessage;
export declare function signalToMastraDBMessage(signal: AgentSignalInput | CreatedAgentSignal, options?: {
    threadId?: string;
    resourceId?: string;
}): MastraDBMessage;
export declare function signalToDataPartFormat(signal: AgentSignalInput | CreatedAgentSignal): AgentSignalDataPart;
export declare function mastraDBMessageToSignal(message: MastraDBMessage): CreatedAgentSignal;
export declare function createMessageSignal(input: AgentMessageInput, options?: Pick<AgentSignalInput, 'id' | 'createdAt' | 'acceptedAt'>): CreatedAgentSignal;
export declare function dataPartToSignal(part: AgentSignalDataPart): CreatedAgentSignal;
export {};
//# sourceMappingURL=signals.d.ts.map