interface AccountInterface {
    id?: number;
    userId: number | null;
    lastUpdatedBy?: number | null;
    isRevision?: Boolean;
    revisionId?: number;
    code: string;
    name: string;
    key: string;
    sortOrder?: number;
    status: number;
}

interface AccountRequestObject {
    name: string;
    code: string;
    key: string;
    status: number | null;
}

interface AccountObject {
    name: string;
    code: string;
    key: string;
    status: number | null;
}

interface AccountObjectInteface {
    id: number;
    name: string;
    code: string;
    key: string;
    status: number;
    createdAt: Date,
    updatedAt: Date
}

interface AccountObjectSummaryInteface {
    id: number;
    name: string;
    code: string;
    key: string;
    status: number;
    createdAt: Date,
    updatedAt: Date
}

interface AccountDataObject {
    id?: number;
    code: string;
    userId: number | null;
    lastUpdatedBy?: number;
    name: string;
    code: string;
    key: string;
    status: number | null;
}

interface AccountPaginatedList {
    page: number;
    perPage: number;
    totalRecords: number;
    totalPages?: number;
    data: AccountObjectSummaryInteface[] | [];
}

interface AccountPaginatedData {
    count: number;
    rows: AccountObjectSummaryInteface[]
}

interface AccountIdentifierObject {
    id: number;
}

interface AccountStringIdentifierObject {
    code: string;
}

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

interface AccountListAllRequestObject {
    searchText: string | null;
    sortBy: string;
    sortDirection: string;
}

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

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

interface AccountCreateServiceInput {
    name: string;
    key: string;
    status: number | null;
}

interface AccountUpdateServiceInput {
    id: number;
    name: string;
    key: string;
    status: number | null;
}

interface AccountDeleteServiceInput {
    id: number;
}

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

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

interface AccountGetAccountsServiceInput {
    listRequest: AccountListRequestObject;
}

interface AccountGetAllAccountsServiceInput {
    listRequest: AccountListAllRequestObject;
}

interface AccountGetRevisionsServiceInput {
    id: number;
    listRequest: AccountListRequestObject;
    language?: string | null;
}

interface AccountRestoreRevisionServiceInput {
    id: number;
}

interface AccountGetIdServiceInput {
    code: string;
}

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

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

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

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

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

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

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

interface AccountCreateDaoInput {
    accountObj: AccountObject;
}

interface AccountUpdateDaoInput {
    id: number;
    accountObj: AccountObject;
}

interface AccountDeleteDaoInput {
    id: number;
}

interface AccountGetListDaoInput {
    listRequest: AccountListRequestObject;
}

interface AccountGetAllListDaoInput {
    listRequest: AccountListAllRequestObject;
}

interface AccountGetRevisionListDaoInput {
    id: number;
    listRequest: AccountListRequestObject;
    language?: string | null;
}

interface AccountRestoreRevisionDaoInput {
    id: number;
}

interface AccountGetIdFromCodeDaoInput {
    code: string;
}

interface AccountGetFullObjectDaoInput {
    id: number;
}

interface AccountStoreRevisionDaoInput {
    id: number;
}
