import { TypeDef } from '../../codec/types';
import { TypeImports } from './imports';
export declare const HEADER = "// Auto-generated via `yarn build:interfaces`, do not edit\n/* eslint-disable @typescript-eslint/no-empty-interface */\n\n";
export declare const FOOTER = "\n";
export declare function createImportCode(header: string, checks: {
    file: string;
    types: string[];
}[]): string;
export declare function exportInterface(name: string | undefined, base: string, body?: string): string;
export declare function exportType(name: string | undefined, base: string): string;
/**
 * Given the inner `K` & `V`, return a `BTreeMap<K, V>`  string
 */
export declare function formatBTreeMap(key: string, val: string): string;
/**
 * Given the inner `T`, return a `Compact<T>` string
 */
export declare function formatCompact(inner: string): string;
/**
 * Given the inner `O` & `E`, return a `Result<O, E>`  string
 */
export declare function formatResult(innerOk: string, innerError: string): string;
/**
 * Given the inner `T`, return a `Option<T>` string
 */
export declare function formatOption(inner: string): string;
/**
 * Given the inners `T[]`, return a `ITuple<...T>` string
 */
export declare function formatTuple(inners: string[]): string;
/**
 * Given the inner `T`, return a `Vec<T>` string
 */
export declare function formatVec(inner: string): string;
/**
 * Correctly format a given type
 */
export declare function formatType(type: string | TypeDef, imports: TypeImports): string;
/**
 * Indent a string with `n` spaces before.
 */
export declare function indent(n: number, char?: string): (str: string) => string;
