import { signiant_private, TransferEventType, TransferEvent, TransferEventCallback, Upload } from '@signiant/media-shuttle-sdk-base';
import PlatformService from '../services/PlatformService';
import PlatformUploadOptions from '../../external/transfer/PlatformUploadOptions';
import PlatformUpload from '../../external/transfer/PlatformUpload';
export interface PlatformUploadParams extends PlatformUploadOptions {
    transferClient: signiant_private.TransferClient;
    platformService: PlatformService;
}
export default class PlatformUploadImpl extends signiant_private.AbstractUpload implements PlatformUpload {
    private readonly _platformService;
    private readonly _eventListeners;
    private _platformTransferEventHandler;
    private accountId;
    private serviceId;
    private portalId;
    private _metadata?;
    /**
     * Coverage seems to think there is a branch here?
     */
    constructor(options: PlatformUploadParams);
    populateTransferConfig(): Promise<void>;
    start(): Promise<void>;
    retry(): Promise<void>;
    subscribe(eventType: TransferEventType, listener: TransferEventCallback<Upload>): void;
    notifyTransferError(errorCode: string, errorMessage: string): void;
    unsubscribe(eventType: TransferEventType): boolean;
    onTransferEvent(event: TransferEvent): Promise<void>;
    /**
     * Gets the metadata associated with this upload.
     * @returns The metadata object or undefined if no metadata is set.
     */
    get metadata(): Record<string, unknown> | undefined;
    /**
     * Sets the metadata to be associated with this upload.
     * @param metadata The metadata object to set.
     */
    set metadata(metadata: Record<string, unknown> | undefined);
}
//# sourceMappingURL=PlatformUploadImpl.d.ts.map