import { ethers, BigNumber } from 'ethers';
import { Timestamp } from '@energyweb/utils-general';
import { IBlockchainProperties } from './BlockchainProperties';
export declare const MAX_ENERGY_PER_CERTIFICATE: ethers.BigNumber;
export interface ICertificationRequestBlockchain {
    id: number;
    deviceId: string;
    owner: string;
    fromTime: number;
    toTime: number;
    created: number;
    approved: boolean;
    revoked: boolean;
    approvedDate?: Date;
    revokedDate?: Date;
    issuedCertificateTokenId?: number;
}
export declare class CertificationRequest implements ICertificationRequestBlockchain {
    id: number;
    blockchainProperties: IBlockchainProperties;
    owner: string;
    fromTime: Timestamp;
    toTime: Timestamp;
    deviceId: string;
    approved: boolean;
    approvedDate: Date;
    revoked: boolean;
    revokedDate: Date;
    created: Timestamp;
    issuedCertificateTokenId: number;
    initialized: boolean;
    constructor(id: number, blockchainProperties: IBlockchainProperties);
    static create(generationStartTime: Timestamp, generationEndTime: Timestamp, deviceId: string, blockchainProperties: IBlockchainProperties, forAddress?: string): Promise<CertificationRequest>;
    static getAll(blockchainProperties: IBlockchainProperties): Promise<CertificationRequest[]>;
    sync(): Promise<CertificationRequest>;
    approve(energy: BigNumber): Promise<CertificationRequest['issuedCertificateTokenId']>;
    revoke(): Promise<ethers.ContractTransaction>;
}
