import { OpraSchema } from '../../schema/index.js';
import type { ApiDocument } from '../api-document.js';
import { DocumentElement } from './document-element.js';
import type { DocumentInitContext } from './document-init-context.js';
export declare namespace ApiBase {
    interface InitArguments extends Pick<OpraSchema.Api, 'description' | 'name'> {
        owner: ApiDocument | ApiBase;
    }
}
export declare abstract class ApiBase extends DocumentElement {
    abstract readonly transport: OpraSchema.Transport;
    readonly owner: ApiDocument | ApiBase;
    name: string;
    description?: string;
    protected constructor(init: ApiBase.InitArguments);
    toJSON(options?: ApiDocument.ExportOptions): OpraSchema.Api;
    protected _initialize(init: ApiBase.InitArguments, context: DocumentInitContext): Promise<void>;
}
