// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/delete/DeleteSpecificPushRequest.java
// public class DeleteSpecificPushRequest extends DeleteRequest<Void> {
// 
//     public DeleteSpecificPushRequest(String pushIdentity) {
//         super(Urls.PUSHES + "/" + pushIdentity);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/post/ChangePushDismissStatusRequest.java
// public class ChangePushDismissStatusRequest extends PostRequest<Push> {
// 
//     @SerializedName("dismissed")
//     private boolean dismiss;
// 
//     public ChangePushDismissStatusRequest(String pushIdentity, boolean dismiss) {
//         super(Urls.PUSHES + "/" + pushIdentity);
//         this.dismiss = dismiss;
//     }
// 
//     @Override
//     public void applyBody(Gson gson, HttpPost post) {
//         setJsonBody(gson.toJson(this), post);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/PushbulletObject.java
// @Data
// public abstract class PushbulletObject extends PushbulletIdentifiable {
// 
//     /**
//      * Creation timestamp of this object
//      */
//     private Number created;
// 
//     /**
//      * Last modification timestamp of this object
//      */
//     private Number modified;
// 
//     /**
//      * Whether this object is active or not
//      */
//     private boolean active = true;
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/interfaces/Deletable.java
// @FunctionalInterface
// public interface Deletable {
// 
//     /**
//      * Used to delete this object
//      */
//     void delete();
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/interfaces/Dismissable.java
// @FunctionalInterface
// public interface Dismissable {
// 
//     /**
//      * Dismiss the push if it is currently shown
//      */
//     void dismiss();
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/PushType.java
// public enum PushType {
// 
//     /**
//      * Used for note pushes
//      */
//     @SerializedName("note")
//     NOTE,
// 
//     /**
//      * Used for link pushes
//      */
//     @SerializedName("link")
//     LINK,
// 
//     /**
//      * Used for file pushes
//      */
//     @SerializedName("file")
//     FILE,
// 
//     /**
//      * Used for list pushes
//      */
//     @SerializedName("list")
//     LIST,
// 
//     /**
//      * Used for address pushes
//      */
//     @SerializedName("address")
//     ADDRESS;
// }


import com.github.sheigutn.pushbullet.http.defaults.delete.DeleteSpecificPushRequest;
import com.github.sheigutn.pushbullet.http.defaults.post.ChangePushDismissStatusRequest;
import com.github.sheigutn.pushbullet.items.PushbulletObject;
import com.github.sheigutn.pushbullet.interfaces.Deletable;
import com.github.sheigutn.pushbullet.interfaces.Dismissable;
import com.github.sheigutn.pushbullet.items.push.PushType;
import com.google.gson.annotations.SerializedName;
import lombok.*;
import java.util.List;
     * The receiver's normalized email
     */
    @SerializedName("receiver_email_normalized")
    private String normalizedReceiverEmail;

    /**
     * The list of awake apps the push was sent to when it was created
     */
    @SerializedName("awake_app_guids")
    private List<String> awakeAppGuids;

    /**
     * A unique identifier for the push, set by the client
     */
    private String guid;

    @Override
    public void delete() {
        if(!isActive()) return;
        DeleteSpecificPushRequest deleteSpecificPushRequest = new DeleteSpecificPushRequest(getIdentity());
        getPushbullet().executeRequest(deleteSpecificPushRequest);
        setActive(false);
    }

    /**
     * Show the push again if it was already dismissed
     */
    public void show() {
        if(!isDismissed()) return;
        getPushbullet().executeRequest(new ChangePushDismissStatusRequest(getIdentity(), false));
// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/delete/DeleteSpecificPushRequest.java
// public class DeleteSpecificPushRequest extends DeleteRequest<Void> {
// 
//     public DeleteSpecificPushRequest(String pushIdentity) {
//         super(Urls.PUSHES + "/" + pushIdentity);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/http/defaults/post/ChangePushDismissStatusRequest.java
// public class ChangePushDismissStatusRequest extends PostRequest<Push> {
// 
//     @SerializedName("dismissed")
//     private boolean dismiss;
// 
//     public ChangePushDismissStatusRequest(String pushIdentity, boolean dismiss) {
//         super(Urls.PUSHES + "/" + pushIdentity);
//         this.dismiss = dismiss;
//     }
// 
//     @Override
//     public void applyBody(Gson gson, HttpPost post) {
//         setJsonBody(gson.toJson(this), post);
//     }
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/PushbulletObject.java
// @Data
// public abstract class PushbulletObject extends PushbulletIdentifiable {
// 
//     /**
//      * Creation timestamp of this object
//      */
//     private Number created;
// 
//     /**
//      * Last modification timestamp of this object
//      */
//     private Number modified;
// 
//     /**
//      * Whether this object is active or not
//      */
//     private boolean active = true;
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/interfaces/Deletable.java
// @FunctionalInterface
// public interface Deletable {
// 
//     /**
//      * Used to delete this object
//      */
//     void delete();
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/interfaces/Dismissable.java
// @FunctionalInterface
// public interface Dismissable {
// 
//     /**
//      * Dismiss the push if it is currently shown
//      */
//     void dismiss();
// }
// 
// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/PushType.java
// public enum PushType {
// 
//     /**
//      * Used for note pushes
//      */
//     @SerializedName("note")
//     NOTE,
// 
//     /**
//      * Used for link pushes
//      */
//     @SerializedName("link")
//     LINK,
// 
//     /**
//      * Used for file pushes
//      */
//     @SerializedName("file")
//     FILE,
// 
//     /**
//      * Used for list pushes
//      */
//     @SerializedName("list")
//     LIST,
// 
//     /**
//      * Used for address pushes
//      */
//     @SerializedName("address")
//     ADDRESS;
// }


// Path: src/main/java/com/github/sheigutn/pushbullet/items/push/sent/Push.java
import com.github.sheigutn.pushbullet.http.defaults.delete.DeleteSpecificPushRequest;
import com.github.sheigutn.pushbullet.http.defaults.post.ChangePushDismissStatusRequest;
import com.github.sheigutn.pushbullet.items.PushbulletObject;
import com.github.sheigutn.pushbullet.interfaces.Deletable;
import com.github.sheigutn.pushbullet.interfaces.Dismissable;
import com.github.sheigutn.pushbullet.items.push.PushType;
import com.google.gson.annotations.SerializedName;
import lombok.*;
import java.util.List;

     * The receiver's normalized email
     */
    @SerializedName("receiver_email_normalized")
    private String normalizedReceiverEmail;

    /**
     * The list of awake apps the push was sent to when it was created
     */
    @SerializedName("awake_app_guids")
    private List<String> awakeAppGuids;

    /**
     * A unique identifier for the push, set by the client
     */
    private String guid;

    @Override
    public void delete() {
        if(!isActive()) return;
        DeleteSpecificPushRequest deleteSpecificPushRequest = new DeleteSpecificPushRequest(getIdentity());
        getPushbullet().executeRequest(deleteSpecificPushRequest);
        setActive(false);
    }

    /**
     * Show the push again if it was already dismissed
     */
    public void show() {
        if(!isDismissed()) return;
        getPushbullet().executeRequest(new ChangePushDismissStatusRequest(getIdentity(), false));
        setDismissed(false);