import type { ExecutionContext, TypedExecutionContext } from '../../types/core';
import type { ASTNode, ExpressionNode } from '../../types/base-types';
import type { ExpressionEvaluator } from '../../core/expression-evaluator';
import { type DecoratedCommand, type CommandMetadata } from '../decorators';
import { type UrlCommandInput } from '../helpers/url-argument-parser';
export type HistoryMode = 'push' | 'replace';
export interface HistoryCommandInput extends UrlCommandInput {
    mode: HistoryMode;
}
export interface HistoryCommandOutput {
    url: string;
    title?: string;
    mode: HistoryMode;
}
export declare class HistoryCommand implements DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
    parseInput(raw: {
        args: ASTNode[];
        modifiers: Record<string, ExpressionNode>;
        commandName?: string;
    }, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<HistoryCommandInput>;
    execute(input: HistoryCommandInput, _context: TypedExecutionContext): Promise<HistoryCommandOutput>;
}
export { HistoryCommand as PushUrlCommand };
export { HistoryCommand as ReplaceUrlCommand };
export type PushUrlCommandInput = HistoryCommandInput;
export type ReplaceUrlCommandInput = HistoryCommandInput;
export type PushUrlCommandOutput = HistoryCommandOutput;
export type ReplaceUrlCommandOutput = HistoryCommandOutput;
export declare const createHistoryCommand: () => HistoryCommand;
export declare const createPushUrlCommand: () => HistoryCommand;
export declare const createReplaceUrlCommand: () => HistoryCommand;
export default HistoryCommand;
//# sourceMappingURL=push-url.d.ts.map