/// <reference types="bn.js" />
import { BN, Arrayish } from '@harmony-js/crypto';
export declare type CoerceFunc = (type: string, value: any) => any;
export interface ParamType {
    name?: string;
    type: string;
    indexed?: boolean;
    components?: any[];
}
export interface EventFragment {
    type: string;
    name: string;
    anonymous: boolean;
    inputs: ParamType[];
}
export interface FunctionFragment {
    type: string;
    name: string;
    constant: boolean;
    inputs: ParamType[];
    outputs: ParamType[];
    payable: boolean;
    stateMutability: string | null;
    gas: BN | null;
}
export declare const defaultCoerceFunc: CoerceFunc;
export declare function parseParamType(type: string): ParamType;
export declare function formatParamType(paramType: ParamType): string;
export declare function formatSignature(fragment: EventFragment | FunctionFragment): string;
export declare function parseSignature(fragment: string): EventFragment | FunctionFragment;
export declare function defineReadOnly(object: any, name: string, value: any): void;
export declare enum UnicodeNormalizationForm {
    current = "",
    NFC = "NFC",
    NFD = "NFD",
    NFKC = "NFKC",
    NFKD = "NFKD"
}
export declare function toUtf8Bytes(str: string, form?: UnicodeNormalizationForm): Uint8Array;
export declare function toUtf8String(bytes: Arrayish, ignoreErrors?: boolean): string;
export declare function formatBytes32String(text: string): string;
export declare function parseBytes32String(bytes: Arrayish): string;
export declare function isType(object: any, type: string): boolean;
export declare function shallowCopy(object: any): any;
export declare function deepCopy(object: any, frozen?: boolean): any;
export declare class AbiCoder {
    coerceFunc: CoerceFunc;
    constructor(coerceFunc?: CoerceFunc);
    encode(types: Array<string | ParamType>, values: any[]): string;
    decode(types: Array<string | ParamType>, data: Arrayish): any;
}
export declare const defaultAbiCoder: AbiCoder;
//# sourceMappingURL=abiCoder.d.ts.map