import type { EntityProperties } from "../Entity.js";
import { EntityBase } from "../Entity.js";
import type { PropertyDefs } from "../support/Serializable.js";
/**
 * An attachment info object from an ArcGIS server.
 */
export interface AttachmentInfo {
    /**
     * Id of the attachment.
     */
    id?: number;
    /**
     * The MIME content type of the attachment, e.g. "application/pdf".
     */
    contentType?: string;
    /**
     * The size of the attachment in bytes.
     */
    size?: number;
    /**
     * The name of the attachment.
     */
    name?: string;
    /**
     * The URL of the attachment.
     */
    url?: string;
}
/**
 * Properties that can be passed to the constructor of
 * {@link data/Attachment!Attachment}.
 */
export interface AttachmentProperties extends EntityProperties {
    /**
     * See {@link data/Attachment!Attachment.contentType}.
     */
    contentType?: string;
    /**
     * See {@link data/Attachment!Attachment.size}.
     */
    size?: number;
    /**
     * See {@link data/Attachment!Attachment.title}.
     */
    title?: string;
    /**
     * See {@link data/Attachment!Attachment.url}.
     */
    url?: string;
}
/**
 * A file attachment for a feature.
 */
export declare class Attachment extends EntityBase<AttachmentProperties> {
    /**
     * The MIME content type of the attachment, e.g. "application/pdf".
     */
    contentType: string;
    /**
     * The size of the attachment in bytes.
     */
    size: number;
    /**
     * A human-readable title for the attachment.
     */
    title: string;
    /**
     * The URL that can be used to download the attachment data.
     */
    url: string;
    /**
     * @inheritDoc
     */
    protected readonly _itemType: string;
    protected _getSerializableProperties(): PropertyDefs<AttachmentProperties>;
}
/**
 * Creates an {@link data/Attachment!Attachment} from ArcGIS server attachment
 * info.
 *
 * @param attachmentInfo The attachment info to convert.
 * @param options Options for converting the attachment.
 * @param options.attachmentInfoUrl The attachment url from the parent feature.
 * @param options.gdbVersion The attachment gdbVersion from the parent feature.
 */
export declare function toAttachment(attachmentInfo: AttachmentInfo, options?: {
    attachmentInfoUrl?: string;
    gdbVersion?: string;
}): Attachment;
