import { ShopItem, ShopItemType } from '../database/entities/ShopItem';
import { RoleGrant } from '../database/entities/RoleGrant';
import { RoleOwnership } from '../database/entities/RoleOwnership';
import { HiddenRole } from '../database/entities/HiddenRole';
export declare function listShopItems(): Promise<ShopItem[]>;
export declare function getShopItem(id: number): Promise<ShopItem | null>;
export declare function addShopItem(name: string, price: number, itemType: ShopItemType, roleId?: string, creatorId?: string, stock?: number, rentDays?: number, description?: string): Promise<ShopItem>;
export declare function createShopItemFull(options: {
    name: string;
    description?: string;
    price: number;
    stock: number | null;
    imageUrl?: string;
    verificationCode?: string;
    itemType?: 'role' | 'service' | 'unique_role' | 'role_rent';
    roleId?: string;
    rentalPeriods?: string;
    creatorId?: string;
}): Promise<ShopItem>;
export declare function generateShopVerificationCode(): string;
export declare function linkShopForumThread(itemId: number, threadId: string, messageId?: string): Promise<void>;
export declare function createShopItem(options: {
    guildId: string;
    name: string;
    description?: string;
    price: number;
    stock: number | null;
    itemType: ShopItemType;
    roleId?: string;
    rentDays?: number;
}): Promise<ShopItem>;
export declare function updateShopItem(id: number, updates: Partial<ShopItem>, client?: any): Promise<ShopItem | null>;
export declare function getShopItemByRoleId(roleId: string): Promise<ShopItem | null>;
export declare function deleteShopItem(id: number, client?: any): Promise<boolean>;
export declare function decrementStock(id: number, client?: any): Promise<void>;
export declare function createRoleGrant(guildId: string, roleId: string, userId: string, giverId: string, rentDays: number): Promise<RoleGrant>;
export declare function updateUniqueRoleOwner(itemId: number, newOwnerId: string, client?: any): Promise<void>;
export declare function addRoleGrant(guildId: string, roleId: string, userId: string, giverId: string, expiresAt?: Date): Promise<RoleGrant>;
export declare function getRoleGrant(roleId: string, userId: string): Promise<RoleGrant | null>;
export declare function getRoleGrants(roleId: string): Promise<RoleGrant[]>;
export declare function getUserGrants(guildId: string, userId: string): Promise<RoleGrant[]>;
export declare function revokeRoleGrant(roleId: string, userId: string): Promise<boolean>;
export declare function revokeAllRoleGrants(roleId: string): Promise<void>;
export declare function removeUserGrants(userId: string): Promise<number>;
export declare function updateRoleGrantCancellation(roleId: string, userId: string, isCancelled: boolean): Promise<void>;
export declare function getExpiredGrants(): Promise<RoleGrant[]>;
export declare function getNewlyExpiredGrants(): Promise<RoleGrant[]>;
export declare function setGrantGracePeriod(grantId: number, gracePeriodEnd: Date): Promise<void>;
export declare function getFullyExpiredGrants(): Promise<RoleGrant[]>;
export declare function restoreGrantFromGracePeriod(roleId: string, userId: string): Promise<void>;
export declare function addRoleOwnership(guildId: string, roleId: string, ownerId: string, price: number, nextPaymentAt: Date): Promise<RoleOwnership>;
export declare function getRoleOwnership(roleId: string): Promise<RoleOwnership | null>;
export declare function getUserOwnerships(ownerId: string): Promise<RoleOwnership[]>;
export declare function renewRoleOwnership(roleId: string, months?: number): Promise<Date | null>;
export declare function cancelRoleOwnership(roleId: string): Promise<void>;
export declare function enableRoleOwnershipRenewal(roleId: string): Promise<void>;
export declare function deleteRoleOwnership(roleId: string): Promise<boolean>;
export declare function transferRoleOwnership(roleId: string, newOwnerId: string, guildId: string): Promise<void>;
export declare function getOwnershipsDueBefore(date: Date): Promise<RoleOwnership[]>;
export declare function markOwnershipReminded(roleId: string): Promise<void>;
export declare function getOwnershipsNeedingReminder(now: Date, advanceDays?: number): Promise<RoleOwnership[]>;
export declare function isOptedOut(userId: string): Promise<boolean>;
export declare function setOptOut(userId: string, optOut: boolean): Promise<void>;
export declare function hideRole(userId: string, roleId: string, guildId: string): Promise<void>;
export declare function showRole(userId: string, roleId: string): Promise<boolean>;
export declare function getHiddenRoles(userId: string, guildId: string): Promise<HiddenRole[]>;
export declare function isRoleHidden(userId: string, roleId: string): Promise<boolean>;
//# sourceMappingURL=roleService.d.ts.map