export type ConversationBuilderAction = {
    id?: string | number;
    type?: string;
    sequenceType?: string;
    datasetSelectionType?: 'complete' | 'raw';
    rawPrompt?: string;
    selectedColumnValues?: unknown[];
    totalTestCase?: number;
};
export type SequenceActionRef = {
    turnId: string | number;
    position: 'above' | 'below';
    actionIndex: number;
    actionId?: string | number;
};
export type ConversationBuilderTurnBase = {
    id: string | number;
    actionsAbove?: ConversationBuilderAction[];
    actionsBelow?: ConversationBuilderAction[];
};
export type ConversationBuilderTurn = ConversationBuilderTurnBase;
/** Row count for a sequence user-response action (selected rows or HuggingFace / raw row count). */
export declare function getActionSequenceRowCount(action: ConversationBuilderAction): number | undefined;
export declare function exceedsDatasetRowLimit(selectedRowCount: number | undefined, rowLimit: number | null | undefined): boolean;
/** Live row count while editing UserResponseInput (sequence type only). */
export declare function getEditingUserResponseSelectedRowCount(data: {
    sequenceType?: string;
    datasetSelectionType?: 'complete' | 'raw';
    selectedColumnValues?: unknown[];
    totalTestCase?: number;
}, live?: {
    rawPromptText?: string;
    rawPromptRowCount?: number;
    huggingfaceRowCount?: number;
}): number | undefined;
export declare function shouldShowDatasetRowLimitBannerForUserResponse(data: {
    sequenceType?: string;
    datasetSelectionType?: 'complete' | 'raw';
    selectedColumnValues?: unknown[];
    totalTestCase?: number;
}, rowLimit: number | null | undefined, live?: {
    rawPromptText?: string;
    rawPromptRowCount?: number;
    huggingfaceRowCount?: number;
}): boolean;
/** True when a turn has at least one saved action (not an empty trailing placeholder turn). */
export declare function turnHasActions(turn: ConversationBuilderTurn): boolean;
/** Index of the last turn that has actions; walks back past empty trailing turns. */
export declare function getLastActionTurnIndex(turns: ConversationBuilderTurn[]): number;
export declare function isLastActionTurnId(turns: ConversationBuilderTurn[], turnId: string | number | undefined): boolean;
/** Last user-response in conversation order (sequence or AI; actionsAbove → actionsBelow per turn). */
export declare function getLastUserResponseActionRef(turns: ConversationBuilderTurn[]): SequenceActionRef | null;
/** Last sequence user-response in conversation order (actionsAbove → actionsBelow per turn). */
export declare function getLastSequenceUserResponseActionRef(turns: ConversationBuilderTurn[]): SequenceActionRef | null;
/** Minimum dataset rows selected across all sequence user-response steps in the conversation. */
export declare function getMinSequenceDatasetRows(turns: unknown[]): number | undefined;
export declare function countUserSequenceGeneratedActions(turns: unknown[]): number;
/** Show dataset row cap banner on a saved sequence user-response when selection exceeds the cap. */
export declare function shouldShowDatasetRowLimitBannerForAction(turns: ConversationBuilderTurn[], rowLimit: number | null | undefined, target: {
    turnId: string | number;
    position: 'above' | 'below';
    actionId?: string | number;
    actionIndex?: number;
    /** UserResponseInput is adding a new sequence step — banner is driven inside the input. */
    isNewSequenceAction?: boolean;
}): boolean;
//# sourceMappingURL=getMinSequenceDatasetRows.d.ts.map