import type { FilePart, TextPart, UserModelMessage } from '../_types/@internal_ai-sdk-v5/dist/index.js';
import type { MastraDBMessage, MastraProviderMetadata } from './message-list/state/types.js';
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type AgentSignalType = 'user-message' | 'system-reminder' | 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>;
/**
 * @experimental Agent signals are experimental and may change in a future release.
 */
export type AgentSignalInput = {
    id?: string;
    createdAt?: Date | string;
    acceptedAt?: Date | string;
    type: AgentSignalType;
    contents: AgentSignalContents;
    attributes?: Record<string, string | number | boolean | null | undefined>;
    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-${string}`;
    data: {
        id: string;
        type: AgentSignalType;
        contents: AgentSignalContents;
        createdAt: string;
        acceptedAt?: string;
        attributes?: Record<string, string | number | boolean | null | undefined>;
        metadata?: Record<string, unknown>;
    };
};
/**
 * @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' | 'attributes'> & {
    contents?: string;
}): string;
export declare function isCreatedAgentSignal(input: unknown): input is CreatedAgentSignal;
export declare function createSignal(input: AgentSignalInput): 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 dataPartToSignal(part: AgentSignalDataPart): CreatedAgentSignal;
export {};
//# sourceMappingURL=signals.d.ts.map