import { Code } from '@superblocksteam/types';
import { Global, PlaceholdersInfo } from '.';
export declare const PUBLISHED_VIEW_MODE = true;
interface KVStore {
    read: (keys: string[]) => Promise<{
        data: unknown[];
    }>;
    write: (key: string, value: string) => Promise<void>;
    writeMany: (kvs: {
        key: string;
        value: unknown;
    }[]) => Promise<void>;
}
export declare class ExecutionContext {
    globals: {
        [key: string]: unknown;
    };
    variables?: Record<string, {
        key: string;
        type: string;
        mode?: string;
    }>;
    kvStore?: KVStore;
    outputs: {
        [key: string]: ExecutionOutput;
    };
    preparedStatementContext: unknown[];
    error?: string;
    errorContext?: {
        actionId: string;
        actionName: string;
        pluginId: string;
        datasourceId?: string;
        authError?: boolean;
    };
    constructor(context?: ExecutionContext);
    private static customMerger;
    addGlobalVariable(name: string, value: unknown): void;
    addGlobalsOverride(global: Global): void;
    addGlobalVariableOverride(name: string, value: unknown): void;
    addOutput(name: string, output: ExecutionOutput): void;
    merge(other: ExecutionContext): void;
    globalBindingKeys(): string[];
    outputBindingKeys(): string[];
}
export declare enum WorkflowExecutionParamsKey {
    QUERY_PARAMS = "params",
    BODY = "body"
}
export declare enum ApiReservedQueryParams {
    AUTH = "sb-auth",
    ENVIRONMENT = "environment",
    TEST = "test",
    RAW = "raw",
    PROFILE = "profile"
}
export interface ExecutionParam {
    key: string;
    value: unknown;
}
interface StructuredLog {
    msg: string;
    level: 'info' | 'warn' | 'error';
}
type RawRequest = string | undefined;
export declare class ExecutionOutput {
    error?: string;
    authError?: boolean;
    children?: string[];
    startTimeUtc?: Date;
    executionTime: number;
    log: string[];
    structuredLog: StructuredLog[];
    output: unknown;
    request: RawRequest;
    placeholdersInfo?: PlaceholdersInfo;
    integrationErrorCode?: Code;
    constructor();
    static fromJSONString(json: string): ExecutionOutput;
    logInfo(msg: string): void;
    logWarn(msg: string): void;
    logError(msg: string, authError?: boolean): void;
}
export {};
//# sourceMappingURL=execution.d.ts.map