import { AliasMode } from '../types';
import { Token } from './token';
export interface TokenStream {
    isWithinSelect(): boolean;
    getPreviousReservedToken(): Token;
    tokenLookBehind(n?: number): Token;
    tokenLookAhead(n?: number): Token;
}
/** Decides addition and removal of AS tokens */
export default class AliasAs {
    private aliasAs;
    private formatter;
    constructor(aliasAs: AliasMode, formatter: TokenStream);
    /** True when AS keyword should be added *before* current token */
    shouldAddBefore(token: Token): boolean;
    private isMissingTableAlias;
    private isMissingSelectColumnAlias;
    /** True when AS keyword should be added *after* current token */
    shouldAddAfter(): boolean;
    private isMissingTypeCastAs;
    private isEdgeCaseCTE;
    private isEdgeCaseCreateTable;
    shouldRemove(): boolean;
    private isRemovableNonSelectAs;
    private lookBehind;
    private lookAhead;
}
