import { SupportedChainId } from 'maia-core-sdk';
import { GasParams, ITokenOutputParams, ITokenParams } from 'ulysses-sdk';
import { IAction, IActionResult } from '../action';
export interface IContextParameters {
    chainId: SupportedChainId;
    useVirtualAccount: boolean;
    userAccount?: string;
    value?: string;
    gasParams?: GasParams;
    inputTokens?: ITokenParams;
    outputTokens?: ITokenOutputParams;
}
export interface IActionContext<TParams, TResult> {
    encodeAction(action: IAction<TParams, TResult>, params: TParams): IActionResult<TResult>;
    wrapCalldata(results: IActionResult<TResult>[]): IActionResult<TResult>;
    chainId: SupportedChainId;
    useVirtualAccount?: boolean;
    userAccount?: string;
    value?: string;
    gasParams?: GasParams;
    inputTokens?: ITokenParams;
    outputTokens?: ITokenOutputParams;
}
export declare class ContextHandler<TParams, TResult> implements IActionContext<TParams, TResult> {
    chainId: SupportedChainId;
    useVirtualAccount: boolean;
    userAccount?: string | undefined;
    value?: string | undefined;
    gasParams?: GasParams | undefined;
    inputTokens?: ITokenParams | undefined;
    outputTokens?: ITokenOutputParams | undefined;
    constructor(params: IContextParameters);
    encodeAction(action: IAction<any, any>, params: any): IActionResult<any>;
    wrapCalldata(results: IActionResult<TResult>[]): IActionResult<TResult>;
    private isPayableContext;
    private isOutputTokenParams;
    private isOutputMultipleTokenParams;
    private isSingleDepositParams;
    private isMultipleDepositParams;
}
