import {CommonTokenStream, Parser, ParserRuleContext, Token} from 'antlr4';
import {TerminalNode} from 'antlr4/tree/Tree';

<% _.each(contextRules, (contextRule) => { %>
export declare class <%= contextRule.name %> extends ParserRuleContext {
    <% _.each(contextRule.methods, (method) => { %>
    <%= method.name %>(): <%= method.type %>;
    <% }); %>
}
<% }); %>

export declare class <%= className %> extends Parser {
    readonly ruleNames: string[];
    readonly literalNames: string[];
    readonly symbolicNames: string[];

    constructor(input: CommonTokenStream);
    <% _.each(methods, (method) => { %>
    <%= method.name %>(<%= method.args %>): <%= method.type%>;
<% }); %>
}
