-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathcadence.ts
36 lines (27 loc) · 1.05 KB
/
cadence.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// @ts-ignore
import { resolveArguments } from '@onflow/flow-cadut';
export type CadenceImports = { [key: string]: string };
export type CadenceModule = {
raw: string;
resolve: (network: string, overides?: { [contractName: string]: string }) => string;
};
export function isCadenceModule(cadence: any): cadence is CadenceModule {
return (cadence as CadenceModule).raw !== undefined;
}
export type CadenceSourceCode = CadenceModule | string;
export type ArgumentsList = any[];
export type ArgumentsThunk = (arg: any, t: any) => { value: any }[];
export type Arguments = ArgumentsList | ArgumentsThunk;
export function resolveCadence(cadence: CadenceSourceCode, network: string, imports: CadenceImports = {}): string {
if (isCadenceModule(cadence)) {
return cadence.resolve(network, imports);
}
return cadence;
}
export async function resolveArgs(cadence: string, args: Arguments): Promise<ArgumentsThunk> {
if (Array.isArray(args)) {
const resolvedArgs = await resolveArguments(args, cadence);
return () => resolvedArgs;
}
return args;
}