import { LogicManifest } from "js-moi-manifest"; import { InteractionCallResponse, InteractionResponse } from "js-moi-providers"; import type { RoutineOption } from "js-moi-logic"; export interface AssetIxRequest { call: () => Promise; send: () => Promise; estimateFuel: () => Promise; unwrap: () => Promise; } export interface Routine any> { /** * Executes the logic interaction request with the specified routine and arguments. * @param {...any[]} args - The arguments for the logic interaction request. * @param {RoutineOption} option - The option for the logic interaction request. * @returns {Promise} a promise that resolves to the result of the logic interaction request. */ (...args: [...Parameters, option?: RoutineOption]): ReturnType | Promise; isMutable: () => boolean; accepts: () => LogicManifest.TypeField[] | null; returns: () => LogicManifest.TypeField[] | null; } export type Routines any>> = { [K in keyof T]: T[K] extends (...args: any[]) => any ? Routine : never; }