// Type definitions for StackFrame v1.0.0
// Project: https://github.com/stacktracejs/stackframe
// Definitions by: Eric Wendelin <https://www.eriwen.com>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped

declare namespace StackFrame {
    export interface StackFrameOptions {
        isConstructor?: boolean;
        isEval?: boolean;
        isNative?: boolean;
        isToplevel?: boolean;
        columnNumber?: number;
        lineNumber?: number;
        fileName?: string;
        functionName?: string;
        source?: string;
        args?: any[];
    }

    class StackFrame {
        constructor(obj: StackFrameOptions);

        public getArgs(): any[];
        public setArgs(args: any[]): void;
        public getEvalOrigin(): StackFrame;
        public setEvalOrigin(stackframe: StackFrame): void;
        public getIsConstructor(): boolean;
        public setIsConstructor(isConstructor: boolean): void;
        public getIsEval(): boolean;
        public setIsEval(isEval: boolean): void;
        public getIsNative(): boolean;
        public setIsNative(isNative: boolean): void;
        public getIsToplevel(): boolean;
        public setIsToplevel(isToplevel: boolean): void;
        public getColumnNumber(): number;
        public setColumnNumber(columnNumber: number): void;
        public getLineNumber(): number;
        public setLineNumber(lineNumber: number): void;
        public getFileName(): string;
        public setFileName(fileName: string): void;
        public getFunctionName(): string;
        public setFunctionName(functionName: string): void;
        public getSource(): string;
        public setSource(source: string): void;
        public toString(): string;
    }
}
