import * as t from "../types.js";
import { Effect } from "../gen/interfaces/metatype-typegraph-runtimes.js";
import Policy from "../policy.js";
import { Materializer, Runtime } from "./mod.js";
interface FunMat extends Materializer {
    code: string;
    secrets: string[];
    effect: Effect;
}
interface ImportMat extends Materializer {
    name: string;
    module: string;
    secrets: string[];
    effect: Effect;
}
interface PredefinedFuncMat extends Materializer {
    name: string;
}
export interface DenoFunc {
    code: string;
    secrets?: Array<string>;
    effect?: Effect;
}
export interface DenoImport {
    name: string;
    module: string;
    secrets?: Array<string>;
    effect?: Effect;
}
export declare class DenoRuntime extends Runtime {
    constructor();
    func<P extends Record<string, t.Typedef> = Record<string, t.Typedef>, I extends t.Struct<P> = t.Struct<P>, O extends t.Typedef = t.Typedef>(inp: I, out: O, { code, secrets, effect }: DenoFunc): t.Func<P, I, O, FunMat>;
    import<P extends Record<string, t.Typedef> = Record<string, t.Typedef>, I extends t.Struct<P> = t.Struct<P>, O extends t.Typedef = t.Typedef>(inp: I, out: O, { name, module, effect, secrets }: DenoImport): t.Func<P, I, O, ImportMat>;
    identity<P extends Record<string, t.Typedef> = Record<string, t.Typedef>, I extends t.Struct<P> = t.Struct<P>>(inp: I): t.Func<P, I, I, PredefinedFuncMat>;
    static<P extends t.Typedef>(out: P, value: any): t.Func<{
        [key: string]: t.Typedef;
    }, t.Struct<{}>, P, {
        _id: number;
    }>;
    policy(name: string, _code: string): Policy;
    policy(name: string, data: Omit<DenoFunc, "effect">): Policy;
    importPolicy(data: Omit<DenoImport, "effect">, name?: string): Policy;
}
export {};
