/*
* Copyright (C) 2024 Fluence DAO
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
*/
import { ServiceDef, FunctionCallDef } from "@fluencelabs/interfaces";
export declare class AquaFunction {
funcDef: FunctionCallDef;
script: string;
}
export declare class GeneratedSource {
name: string;
tsSource?: string;
jsSource?: string;
tsTypes?: string;
}
export declare class CompilationResult {
services: Record;
functions: Record;
errors: string[];
warnings: string[];
generatedSources: GeneratedSource[];
}
/**
* Imports configuration for the compiler.
* Structure:
* {
* "": {
* "": ["", ""],
* "": "",
* ...
* }
* ...
* }
* Import `import` written in file with path `path`
* is resolved as follows:
* 1. Try to resolve `import` as relative import from `path`
* 2. If relative resolution failed:
* a. Find **the longest**
* that is a prefix of `path` in the imports configuration
* b. In obtained map, find **the longest**
* that is a prefix of `import`
* c. Replace prefix in `import` with
* d. Try to resolve import with obtained path
* (try a few paths if array was provided)
*
* WARNING: in 2.a is compared with
* absolute normalized path of `path`, so
* should be absolute normalized path as well
* NOTE: could be empty string,
* in which case it will match any import
* NOTE: passing just an array of strings is a shorthand for
* {
* "/": {
* "":
* }
* }
*/
type Imports = Record> | string[];
/** Common arguments for all compile functions */
type CommonArgs = {
/** Imports */
imports?: Imports | undefined;
/** Constants to be passed to the compiler. Example: ["CONSTANT1=1", "CONSTANT2=2"] */
constants?: string[] | undefined;
/** Set log level for the compiler. Must be one of: Must be one of: all, trace, debug, info, warn, error, off. Default: info */
logLevel?: string | undefined;
/** Do not generate a pass through the relay node. Default: false */
noRelay?: boolean | undefined;
/** Do not generate a wrapper that catches and displays errors. Default: false */
noXor?: boolean | undefined;
/** Target type for the compiler. Must be one of: ts, js, air. Default: air */
targetType?: "ts" | "js" | "air" | undefined;
/** Compile aqua in tracing mode (for debugging purposes). Default: false */
tracing?: boolean | undefined;
/** Do not generate response call if there are no returned values */
noEmptyResponse?: boolean | undefined;
};
type CodeString = {
/** Aqua code to be compiled */
code: string;
};
export type CompileFromStringArgs = CommonArgs & CodeString;
/** Compile aqua code from a string */
export declare function compileFromString(
args: CompileFromStringArgs,
): Promise;
type FilePath = {
/** Path to the aqua file to be compiled */
filePath: string;
};
export type CompileFromPathArgs = CommonArgs & FilePath;
/** Compile aqua code from a file */
export declare function compileFromPath(
args: CompileFromPathArgs,
): Promise;
type FuncCall = {
/** Function call you want to compile. Example: someFunc("someArg") */
funcCall: string;
/** Args to be passed to the function (record with keys named as args you want to pass to the function) Example: { someArg: 1 } */
data?: Record | undefined;
};
export type CallCompilationResult = CompilationResult & {
functionCall: AquaFunction;
};
export type CompileFuncCallFromStringArgs = CommonArgs & CodeString & FuncCall;
/** Compile aqua function call from a string */
export declare function compileAquaCallFromString(
args: CompileFuncCallFromStringArgs,
): Promise;
export type CompileFuncCallFromPathArgs = CommonArgs & FilePath & FuncCall;
/** Compile aqua function call from a file */
export declare function compileAquaCallFromPath(
args: CompileFuncCallFromPathArgs,
): Promise;
export {};