import { ParamType } from 'ethers';
/**
 * ABI function signature information
 */
export interface AbiFunctionInfo {
    /** Function name */
    name: string;
    /** Function signature (e.g., "processTask(uint256,bytes32,address)") */
    signature: string;
    /** Input parameter types */
    inputs: readonly ParamType[];
    /** Output parameter types */
    outputs: readonly ParamType[];
    /** Function selector (first 4 bytes of keccak256 hash) */
    selector: string;
}
/**
 * ABI codec for encoding/decoding Solidity function calls
 */
export declare class AbiCodec {
    private abiCoder;
    private contractInterface;
    private functionInfo;
    constructor(abi: any[]);
    /**
     * Build function information from ABI
     */
    private buildFunctionInfo;
    /**
     * Get function information by name
     */
    getFunctionInfo(functionName: string): AbiFunctionInfo | undefined;
    /**
     * Get all available functions
     */
    getAllFunctions(): AbiFunctionInfo[];
    /**
     * Decode function call data
     */
    decodeFunctionCall(functionName: string, data: Uint8Array): any;
    /**
     * Encode function call data
     */
    encodeFunctionCall(functionName: string, params: any[]): Uint8Array;
    /**
     * Decode function result
     */
    decodeFunctionResult(functionName: string, data: Uint8Array): any;
    /**
     * Encode function result
     */
    encodeFunctionResult(functionName: string, result: any): Uint8Array;
    /**
     * Detect if data looks like ABI-encoded function call
     */
    static isAbiEncoded(data: Uint8Array): boolean;
    /**
     * Try to detect function from encoded data
     */
    detectFunction(data: Uint8Array): string | null;
}
/**
 * Utility functions for common Solidity types
 */
export declare class SolidityTypeUtils {
    /**
     * Convert JavaScript value to Solidity type
     */
    static toSolidityType(value: any, solidityType: string): any;
    /**
     * Convert Solidity type to JavaScript value
     */
    static fromSolidityType(value: any, solidityType: string): any;
    /**
     * Validate value against Solidity type
     */
    static validateType(value: any, solidityType: string): boolean;
}
/**
 * Auto-detect payload format and decode accordingly
 */
export declare class PayloadAutoDecoder {
    /**
     * Attempt to decode payload using multiple strategies
     */
    static decode(payload: Uint8Array): {
        format: 'abi' | 'json' | 'string' | 'raw';
        data: any;
        confidence: number;
    };
}
//# sourceMappingURL=abiUtils.d.ts.map