import { type ABI, type ABIExtra, type ABIExtraQueryType, type OKToken, type OKWidgetStep, type OKWidgetStepType, type SmartContract } from "@okcontract/coredata";
import type { AnyCell, SheetProxy } from "@okcontract/cells";
import type { OKCore } from "./coreExecution";
/**
 * abixOrId accepts an ABI reference without abix:
 * @param id
 * @returns
 * @todo: We should probably remove this and ensure we always use abix:
 */
export declare const abixOrId: (id: ABIExtraQueryType | string) => ABIExtraQueryType;
/**
 * getABIX returns an ABIExtra
 * @param id
 * @returns
 * @todo do we want to return an empty ABIExtra if not found?
 */
export declare const getABIX: (core: OKCore, id: ABIExtraQueryType | string) => Promise<ABIExtra>;
/**
 * getABIXFromRefs builds the ABIExtra from the reference list.
 * @param xr
 * @returns
 * @todo
 */
export declare const getABIXFromRefs: (core: OKCore, xr: ABIExtraQueryType[]) => Promise<ABIExtra>;
/**
 * getMergedABIX reconstructs a merged ABIx from the data (contract or token) and ABI.
 */
export declare const getMergedABIX: <Data extends SmartContract | OKToken>(core: OKCore, proxy: SheetProxy, abi: AnyCell<ABI>, data: AnyCell<Data>) => import("@okcontract/cells").MapCell<ABIExtra, false>;
/**
 * mergeOKStepInABIX merges okstep ABIMethod with ABIExtra methods
 * NB: okstep overwrites any existing methods of ABIExtra
 * @param okstep
 * @param abix
 * @returns
 */
export declare const mergeOKStepInABIX: (okstep: Partial<OKWidgetStep<OKWidgetStepType>>, abix: ABIExtra, req_inputs?: string[]) => ABIExtra;
