import { Contract } from '.';
import { type Stmt } from './ast';
import type { IEvents } from './ast/log';
import type { IStore } from './ast/storage';
/**
 *
 * @param strings
 * @param nodes
 * @returns
 */
export declare function sol(strings: TemplateStringsArray, ...nodes: unknown[]): string;
/**
 *
 * @param stmts
 * @param spaces
 * @returns
 */
export declare function solStmts(stmts: Stmt[], spaces?: number): string;
/**
 *
 * @param events
 * @returns
 */
export declare function solEvents(events: IEvents, spaces?: number): string;
/**
 *
 * @param variables
 * @returns
 */
export declare function solVars(variables: IStore['variables']): string;
/**
 *
 * @param mappings
 * @returns
 */
export declare function solStructs(mappings: IStore['mappings']): string;
/**
 *
 * @param mappings
 * @returns
 */
export declare function solMappings(mappings: IStore['mappings']): string;
declare function solContract(this: Contract, options?: {
    license?: string | null;
    pragma?: boolean;
    contractName?: string;
}): string;
declare module '.' {
    interface Contract {
        /**
         * Decompiles the `Contract` into Solidity-like source code.
         */
        solidify(...args: Parameters<typeof solContract>): string;
    }
}
declare module './ast' {
    interface Tag {
        /**
         */
        sol(): string;
    }
}
export {};
