import { AttachmentPhoto, IMethodParams } from "../app.js";
import { RequestDataFile } from "../request.js";
import API from "./api.js";
export interface MessageUplodaServer {
    upload_url: string;
    album_id: number;
    user_id: number;
}
interface SaveMessagesPhotoInfo extends IMethodParams {
    photo: string;
    server: string;
    hash: string;
}
export interface CropInfo {
    x: number;
    y: number;
    x2: number;
    y2: number;
}
export interface CropPhotoInfo {
    photo: AttachmentPhoto;
    crop: CropInfo;
    rect: CropInfo;
}
export interface PhotoSize {
    height: number;
    url: string;
    type: 's' | 'm' | 'x' | 'o' | 'p' | 'q' | 'r';
    width: number;
}
export interface PhotoObject {
    album_id: number;
    date: number;
    id: number;
    owner_id: number;
    has_tags: boolean;
    access_key?: string;
    sizes: PhotoSize[];
    text?: string;
}
export declare type File = RequestDataFile | string;
export declare type FileObject = File | Promise<File>;
export default class PhotosAPI extends API {
    private api_name;
    getMessagesUploadServer(peer_id: number): Promise<MessageUplodaServer>;
    saveMessagesPhoto(info: SaveMessagesPhotoInfo): Promise<PhotoObject[]>;
    uploadPhoto(server: MessageUplodaServer, photo: RequestDataFile): Promise<SaveMessagesPhotoInfo>;
    uploadMessagePhoto(peer_id: number, photo: FileObject): Promise<PhotoObject>;
    uploadMessagePhotos(peer_id: number, photo: FileObject[]): Promise<PhotoObject[]>;
}
export {};
