import type { Node, NodeOptions } from '../index.js';
import type { KuboRPCClient } from 'kubo-rpc-client';
export interface KuboInit {
    emptyRepo?: boolean;
    profiles?: string[];
    /**
     * JSON config directives to patch the config file with
     */
    config?: Record<string, any>;
    /**
     * Extra CLI args used to invoke `kubo init`
     */
    args?: string[];
}
export interface KuboEd25519Init extends KuboInit {
    algorithm?: 'ed25519';
}
export interface KuboRSAInit extends KuboInit {
    algorithm: 'rsa';
    bits?: number;
}
export type KuboInitOptions = KuboEd25519Init | KuboRSAInit;
export interface KuboStartOptions {
    offline?: boolean;
    ipnsPubsub?: boolean;
    pubsub?: boolean;
    repoAutoMigrate?: boolean;
    /**
     * Extra CLI args used to invoke `kubo daemon`
     */
    args?: string[];
}
export interface KuboOptions extends NodeOptions<boolean | KuboInitOptions, boolean | KuboStartOptions, KuboStopOptions> {
    type: 'kubo';
    /**
     * A function that creates an instance of `KuboRPCClient`
     */
    rpc?(...args: any[]): KuboRPCClient;
    /**
     * Path to a Kubo executable
     */
    bin?: string;
    /**
     * The path to a repo directory. It will be created during init if it does not
     * already exist.
     */
    repo?: string;
}
export interface KuboStopOptions {
    /**
     * How long to wait in ms before sending `SIGKILL` to the process
     *
     * @default 1000
     */
    forceKillTimeout?: number;
}
export interface KuboInfo {
    pid?: number;
    version?: string;
    peerId?: string;
    multiaddrs: string[];
    api?: string;
    repo: string;
    gateway: string;
}
export interface KuboNode extends Node<KuboRPCClient, KuboOptions, KuboInfo, KuboInitOptions, KuboStartOptions, KuboStopOptions> {
}
//# sourceMappingURL=index.d.ts.map