import { Service } from "../types";
export declare enum SnsName {
    OrgCreated = "OrgCreated",
    UsersAdded = "UsersAdded",
    UsersRemoved = "UsersRemoved",
    CustomerStateChange = "CustomerStateChange",
    SeatsChanged = "SeatsChanged",
    DeleteOrg = "DeleteOrg",
    GoogleReset = "GoogleReset",
    DeleteSlack = "DeleteSlack",
    DeleteGithub = "DeleteGithub",
    None = "None",
    GithubPullRequestReviewRequested = "GithubPullRequestReviewRequested",
    GithubPullRequestReviewRemoved = "GithubPullRequestReviewRemoved",
    GithubPullRequestReviewReopened = "GithubPullRequestReviewReopened",
    GithubPullRequestReviewClosed = "GithubPullRequestReviewClosed",
    GithubPullRequestAssigned = "GithubPullRequestAssigned",
    GithubPullRequestUnassigned = "GithubPullRequestUnassigned",
    GithubPullRequestAssignedClosed = "GithubPullRequestAssignedClosed",
    GithubPullRequestAssignedReopened = "GithubPullRequestAssignedReopened",
    GithubIssueAssigned = "GithubIssueAssigned",
    GithubIssueUnassigned = "GithubIssueUnassigned",
    GithubIssueClosedAssigned = "GithubIssueClosedAssigned",
    GithubIssueReopenedAssigned = "GithubIssueReopenedAssigned",
    GithubPullRequestReviewSubmitted = "GithubPullRequestReviewSubmitted",
    GithubPullRequestReviewEdited = "GithubPullRequestReviewEdited",
    GithubPullRequestReviewDismissed = "GithubPullRequestReviewDismissed",
    GithubUserAdded = "GithubUserAdded",
    GithubReminder = "GithubReminder"
}
export interface IOrganizationCreatedSNS {
    name: SnsName.OrgCreated;
    service: Service;
    orgId: string;
    orgType: "google";
}
export interface IUsersAdded {
    name: SnsName.UsersAdded;
    users: IUserAdded[];
    service: Service;
}
export interface IUserAdded {
    orgId: string;
    userId: string;
    userEmail: string;
    idpType: "google" | "slack" | "github";
    idpId: string;
}
export interface IUsersRemoved {
    name: SnsName.UsersRemoved;
    service: Service;
    users: IUserRemoved[];
}
export interface IUserRemoved {
    orgId: string;
    userId: string;
}
export interface ICustomerStateChange {
    name: SnsName.CustomerStateChange;
    service: Service;
    active: boolean;
    orgId: string;
}
export interface IOrgSnsEvent {
    name: SnsName.DeleteOrg | SnsName.GoogleReset | SnsName.DeleteGithub | SnsName.DeleteSlack;
    service: Service;
    orgId: string;
}
export interface ISeatsChanged {
    name: SnsName.SeatsChanged;
    service: Service;
    orgId: string;
    current: number;
}
export interface IGithubPullRequestAction {
    name: SnsName.GithubPullRequestReviewRequested | SnsName.None | SnsName.GithubPullRequestReviewRemoved | SnsName.GithubPullRequestReviewReopened | SnsName.GithubPullRequestReviewClosed | SnsName.GithubPullRequestAssigned | SnsName.GithubPullRequestUnassigned | SnsName.GithubPullRequestAssignedClosed | SnsName.GithubPullRequestAssignedReopened | SnsName.GithubPullRequestReviewSubmitted | SnsName.GithubPullRequestReviewDismissed | SnsName.GithubPullRequestReviewEdited;
    service: Service;
    orgId: string;
    senderGithubLogin: string;
    senderUserId: string;
    targetGithubLogin: string;
    targetUserId: string;
    actionUrl: string;
    repoName: string;
    repoUrl: string;
    pullRequestTitle: string;
    pullRequestUrl: string;
    pullRequestNumber: number;
    pullRequestId: number;
    pullRequestState: string;
    reviewRequestDurationSeconds?: number;
    reviewState?: string;
    body?: string;
}
export interface IGithubIssueAction {
    name: SnsName.GithubIssueAssigned | SnsName.None | SnsName.GithubIssueClosedAssigned | SnsName.GithubIssueReopenedAssigned | SnsName.GithubIssueUnassigned;
    service: Service;
    orgId: string;
    senderGithubLogin: string;
    senderUserId: string;
    targetGithubLogin: string;
    targetUserId: string;
    actionUrl: string;
    repoName: string;
    repoUrl: string;
    issueTitle: string;
    issueUrl: string;
    issueNumber: number;
    issueId: number;
    issueState: string;
}
export interface IGithubUserAction {
    name: SnsName.GithubUserAdded;
    service: Service;
    orgId: string;
    newGithubUserLogin: string;
    ownerGithubLogin: string;
    ownerUserId: string;
    newUserUrl: string;
}
