import { TextFormat } from '../models/text-format.mjs';
import { IActivity, IActivityInput, Activity, ActivityInput } from './activity.mjs';
import '../models/channel-id.mjs';
import '../models/account.mjs';
import '../models/agentic-identity.mjs';
import '../models/conversation-type.mjs';
import '../models/membership-source.mjs';
import '../models/membership-source-types.mjs';
import '../models/membership-types.mjs';
import '../models/role.mjs';
import '../models/conversation/conversation-reference.mjs';
import '../models/entity/index.mjs';
import '../models/entity/ai-message-entity.mjs';
import '../models/entity/message-entity.mjs';
import '../models/entity/citation-entity.mjs';
import '../models/entity/sensitivity-usage-info.mjs';
import '../models/entity/client-info-entity.mjs';
import '../models/entity/mention-entity.mjs';
import '../models/entity/product-info-entity.mjs';
import '../models/entity/quoted-reply-entity.mjs';
import '../models/entity/sensitive-usage-entity.mjs';
import '../models/entity/stream-info-entity.mjs';
import '../models/entity/targeted-message-info-entity.mjs';
import '../models/channel-data/index.mjs';
import '../models/meeting/meeting-info.mjs';
import '../models/meeting/meeting-details.mjs';
import '../models/channel-data/app-info.mjs';
import '../models/channel-data/channel-info.mjs';
import '../models/channel-data/chat-info.mjs';
import '../models/channel-data/feedback-loop.mjs';
import '../models/channel-data/notification-info.mjs';
import '../models/channel-data/on-behalf-of.mjs';
import '../models/channel-data/reply-chain-info.mjs';
import '../models/channel-data/settings.mjs';
import '../models/channel-data/source-info.mjs';
import '../models/channel-data/team-info.mjs';
import '../models/channel-data/tenant-info.mjs';

interface ITypingActivity extends IActivity<'typing'> {
    /**
     * The text content of the message.
     */
    text?: string;
    /**
     * Format of the `text` field (ex. `'extendedmarkdown'`). Default: `'markdown'`.
     */
    textFormat?: TextFormat;
}
/**
 * OUTBOUND typing activity — the typing indicator the app SENDS.
 *
 * All server-populated base fields optional (via {@link IActivityInput}) and the
 * typing-specific fields optional too, so both a plain `{ type: 'typing' }` literal
 * and a {@link TypingActivityInput} builder instance are assignable. The typing fields are
 * copied here instead of derived from {@link ITypingActivity}, keeping the outbound input
 * shape independent from the inbound activity interface. Use {@link TypingActivityInputOptions}
 * to include unmodeled extension fields when constructing a {@link TypingActivityInput}.
 */
interface ITypingActivityInput extends IActivityInput<'typing'> {
    /**
     * Text used by streaming updates. Ordinary typing indicators can omit this.
     */
    text?: string;
    /**
     * Format of the `text` field (ex. `'extendedmarkdown'`). Default: `'markdown'`.
     */
    textFormat?: TextFormat;
}
/**
 * Constructor fields for {@link TypingActivityInput}.
 *
 * This accepts modeled outbound typing fields plus channel/service extension fields that
 * should serialize at the top level of the outbound activity payload. The constructor owns
 * the `type` discriminator; set typing text with the `text` field or
 * {@link TypingActivityInput.withText}.
 */
type TypingActivityInputOptions = Omit<Partial<ITypingActivityInput>, 'type'> & Record<string, unknown>;
/**
 * Builder for outbound typing activities.
 */
declare class TypingActivityInput extends ActivityInput<'typing'> implements ITypingActivityInput {
    /**
     * Text used by streaming updates. Ordinary typing indicators can omit this.
     */
    text?: string;
    /**
     * Format of the `text` field (ex. `'extendedmarkdown'`). Default: `'markdown'`.
     */
    textFormat?: TextFormat;
    /**
     * Create an outbound typing activity input.
     * @param value - Initial modeled input fields and unmodeled extension fields to serialize.
     */
    constructor(value?: TypingActivityInputOptions);
    /**
     * Copy outbound-safe fields from a typing-like activity input.
     * @param activity - Typing input to copy.
     */
    static from(activity: ITypingActivity): TypingActivityInput;
    static from(activity: ITypingActivityInput): TypingActivityInput;
    static from(activity: ITypingActivity | ITypingActivityInput): TypingActivityInput;
    /**
     * Set the streaming update text.
     * @param value - Streaming update text.
     */
    withText(value: string): this;
    /**
     * Append streaming update text.
     * @param text - Streaming update text to append.
     */
    addText(text: string): this;
    /**
     * Set the format of the `text` field.
     * @param value - Text format.
     */
    withTextFormat(value: TextFormat): this;
    /**
     * Add stream metadata to this typing update.
     * @param sequence - Sequence number of the stream chunk.
     */
    addStreamUpdate(sequence?: number): this;
}
declare class TypingActivity extends Activity<'typing'> implements ITypingActivity {
    /**
     * The text content of the message.
     */
    text?: string;
    /**
     * Format of the `text` field.
     */
    textFormat?: TextFormat;
    constructor(value?: Omit<Partial<ITypingActivity>, 'type'>);
    /**
     * initialize from interface
     */
    static from(activity: ITypingActivity): TypingActivity;
    /**
     * convert to interface
     */
    toInterface(): ITypingActivity;
    /**
     * copy to a new instance
     */
    clone(options?: Omit<Partial<ITypingActivity>, 'type'>): TypingActivity;
    /**
     * The text content of the message.
     */
    withText(value: string): this;
    /**
     * Append text
     */
    addText(text: string): this;
    /**
     * Set the format of the `text` field.
     */
    withTextFormat(value: TextFormat): this;
    /**
     * Add stream informative update
     * @param id the stream id
     * @param sequence the sequence number (index) of the chunk
     */
    addStreamUpdate(sequence?: number): this;
}

export { type ITypingActivity, type ITypingActivityInput, TypingActivity, TypingActivityInput, type TypingActivityInputOptions };
