interface ActivityInterface {
    id?: number;
    code: string;
    replacements: string;
    userId: number;
    accountId: number | null;
    lastUpdatedBy?: number;
    isRevision?: Boolean;
    revisionId?: number;
    status: number;
    sortOrder?: number;
    activityContent?: ActivityContentInterface,
    activityContents?: ActivityContentInterface[];
}

interface ActivityContentInterface {
    id?: number;
    activityId?: number;
    languageId?: number;
    title: string;
    description: Text | null;
    descriptionText: Text | null;
}

interface ActivityRequestObject {
    title: string;
    code: string;
    description?: Text | null;
    status?: number;
}

interface ActivityObject {
    code: string;
    replacements: string | null;
    status?: number;
}

interface ActivityContentObject {
    id?: number;
    activityId?: number;
    title: string;
    description?: Text | null;
    descriptionText?: Text | null;
}

interface ActivityObjectInteface {
    id: number;
    code: string;
    replacements: string;
    status: number;
    title: string;
    description?: Text | null;
    descriptionText?: Text | null;
    author: UserPublicObjectInterface | null,
    lastUpdatedBy: UserPublicObjectInterface | null,
    createdAt: Date,
    updatedAt: Date
}

interface ActivityDataObject {
    id?: number;
    code?: string;
    replacements: string | null;
    userId: number | null;
    accountId: number | null;
    lastUpdatedBy?: number | null;
    activityContents?: ActivityContentObject[];
    activityContent?: ActivityContentObject
}

interface ActivityObjectSummaryInteface {
    id: number;
    code: string;
    replacements: string;
    status: number;
    title: string;
    description?: Text | null;
    descriptionText?: Text | null;
    createdAt: Date,
    updatedAt: Date
}

interface ActivityLogObjectSummaryInteface {
    id: number;
    ip: string;
    replacements: JSON;
    deviceInfo?: JSON;
    location?: JSON;
    createdAt: Date,
    updatedAt: Date,
    activity: ActivityObjectSummaryInteface
}

interface ActivityPaginatedList {
    page: number;
    perPage: number;
    totalRecords: number;
    totalPages?: number;
    data: ActivityObjectSummaryInteface[] | [];
}

interface ActivityPaginatedData {
    count: number;
    rows: ActivityObjectSummaryInteface[]
}

interface ActivityLogPaginatedData {
    count: number;
    rows: ActivityLogObjectSummaryInteface[]
}

interface ActivityIdentifierObject {
    id: number;
}

interface ActivityStringIdentifierObject {
    code: string;
}

interface ActivityListRequestObject {
    page: number;
    perPage: number;
    searchText: string | null;
    sortBy: string;
    sortDirection: string;
    status: number | null;
}

interface ActivityLogListRequestObject {
    page: number;
    perPage: number;
    searchText: string | null;
    sortBy: string;
    sortDirection: string;
    status: number | null;
    userId: number | null;
}

interface ActivityListAllRequestObject {
    searchText: string | null;
    sortBy: string;
    sortDirection: string;
    status: number | null;
}

interface ActivityLogInterface {
    id?: number;
    activityId: number;
    userId: number;
    accountId: number | null;
    ip: string;
    replacements: JSON;
    deviceInfo: JSON;
    location: JSON;
}

interface ActivitySortRequest {
    before: number | null;
    after: number | null;
}

interface ActivityStatusObject {
    status: number;
}

interface DaoOptions {
    transaction?: import("sequelize").Transaction;
}

interface ActivityCreateServiceInput {
    title: string;
    description?: Text | null;
    code: string;
    status?: number;
}

interface ActivityUpdateServiceInput {
    id: number;
    title: string;
    description?: Text | null;
    code: string;
    status?: number;
}

interface ActivityDeleteServiceInput {
    id: number;
}

interface ActivityGetByIdServiceInput {
    id: number;
    expanded?: boolean;
}

interface ActivityGetByCodeServiceInput {
    code: string;
    expanded?: boolean;
}

interface ActivityGetActivitiesServiceInput {
    listRequest: ActivityListRequestObject;
}

interface ActivityGetAllActivitiesServiceInput {
    listRequest: ActivityListAllRequestObject;
}

interface ActivityGetRevisionsServiceInput {
    id: number;
    listRequest: ActivityListRequestObject;
}

interface ActivityRestoreRevisionServiceInput {
    id: number;
}

interface ActivityGetIdServiceInput {
    code: string;
}

interface ActivityLogUserActivityServiceInput {
    code: string;
    ip: string;
    replacements: any;
    deviceInfo: any;
    storeLocation?: boolean;
    forUser?: number | null;
}

interface ActivitySetSortOrderServiceInput {
    id: number;
    before: number | null;
    after: number | null;
}

interface ActivityUpdateStatusServiceInput {
    id: number;
    status: number;
}

interface ActivitySetSortOrderDaoInput {
    id: number;
    before?: number | null;
    after?: number | null;
}

interface ActivityGetDaoInput {
    id?: number | null;
    code?: string | null;
    expanded?: boolean;
    paranoid?: boolean;
}

interface ActivityGetByIdDaoInput {
    id: number;
    expanded?: boolean;
    paranoid?: boolean;
}

interface ActivityGetByCodeDaoInput {
    code: string;
    expanded?: boolean;
    paranoid?: boolean;
}

interface ActivityDoExistsByCodeDaoInput {
    code: string;
    excludeId?: number | null;
    includeRevision?: boolean;
}

interface ActivityDoExistsByIdDaoInput {
    id: number;
    includeRevision?: boolean;
}

interface ActivityCreateDaoInput {
    activityObj: ActivityObject;
    activityContentObj: ActivityContentObject;
    languages: LanguageInfo;
}

interface ActivityUpdateDaoInput {
    id: number;
    activityObj: ActivityObject;
    activityContentObj: ActivityContentObject;
    languages: LanguageInfo;
}

interface ActivityDeleteDaoInput {
    id: number;
}

interface ActivityGetListDaoInput {
    listRequest: ActivityListRequestObject;
}

interface ActivityGetAllListDaoInput {
    listRequest: ActivityListAllRequestObject;
}

interface ActivityGetRevisionListDaoInput {
    id: number;
    listRequest: ActivityListRequestObject;
}

interface ActivityRestoreRevisionDaoInput {
    id: number;
}

interface ActivityGetIdFromCodeDaoInput {
    code: string;
}

interface ActivityLogUserActivityDaoInput {
    code: string;
    ip: string;
    replacements: any;
    deviceInfo: any;
    location: any | null;
    forUser?: number | null;
}

interface ActivityUpdateStatusDaoInput {
    id: number;
    status: number;
}

interface ActivityGetFullObjectDaoInput {
    id: number;
}

interface ActivityStoreRevisionDaoInput {
    id: number;
}

interface ActivityLogGetActivityLogsServiceInput {
    listRequest: ActivityLogListRequestObject;
}

interface ActivityLogGetActivityLogsDaoInput {
    listRequest: ActivityLogListRequestObject;
}
