import type { BigNumberish } from "ethers";
import type { CyberValleyEventManager } from "../../typechain-types";
export type EventApprovedEvent = { eventRequestId: BigNumberish };
export type EventDeclinedEvent = { eventRequestId: BigNumberish };
export type EventPlaceUpdatedEvent = {
eventPlaceId: BigNumberish;
maxTickets: BigNumberish;
minTickets: BigNumberish;
minPrice: BigNumberish;
daysBeforeCancel: BigNumberish;
minDays: BigNumberish;
available: boolean;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
};
export type EventUpdatedEvent = {
id: BigNumberish;
eventPlaceId: BigNumberish;
ticketPrice: BigNumberish;
startDate: BigNumberish;
daysAmount: BigNumberish;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
};
export type NewEventRequestEvent = {
creator: string;
id: BigNumberish;
eventPlaceId: BigNumberish;
ticketPrice: BigNumberish;
startDate: BigNumberish;
daysAmount: BigNumberish;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
};
export type RoleAdminChangedEvent = {
role: string;
previousAdminRole: string;
newAdminRole: string;
};
export type RoleGrantedEvent = {
role: string;
account: string;
sender: string;
};
export type RoleRevokedEvent = {
role: string;
account: string;
sender: string;
};
// Struct types
export type Multihash = {
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
};
export type EventPlace = {
maxTickets: BigNumberish;
minTickets: BigNumberish;
minPrice: BigNumberish;
daysBeforeCancel: BigNumberish;
minDays: BigNumberish;
meta: Multihash;
eventDepositSize: BigNumberish;
};
export type Event = {
creator: string;
eventPlaceId: BigNumberish;
ticketPrice: BigNumberish;
startDate: BigNumberish;
daysAmount: BigNumberish;
status: BigNumberish;
meta: Multihash;
};
// Method argument types
export type SubmitEventPlaceRequestArgs = {
maxTickets: BigNumberish;
minTickets: BigNumberish;
minPrice: BigNumberish;
daysBeforeCancel: BigNumberish;
minDays: BigNumberish;
available: boolean;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
eventDepositSize: BigNumberish;
};
export type ApproveEventPlaceArgs = {
eventPlaceId: BigNumberish;
eventDepositSize: BigNumberish;
};
export type DeclineEventPlaceArgs = {
eventPlaceId: BigNumberish;
};
export type ApproveEventArgs = {
eventId: BigNumberish;
distributionProfileId: BigNumberish;
};
export type DeclineEventArgs = {
eventId: BigNumberish;
};
export type CreateEventPlaceArgs = {
maxTickets: BigNumberish;
minTickets: BigNumberish;
minPrice: BigNumberish;
daysBeforeCancel: BigNumberish;
minDays: BigNumberish;
available: boolean;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
eventDepositSize: BigNumberish;
};
export type CategoryInput = {
name: string;
discountPercentage: BigNumberish;
quota: BigNumberish;
hasQuota: boolean;
};
export type SubmitEventRequestArgs = {
eventPlaceId: BigNumberish;
ticketPrice: BigNumberish;
startDate: BigNumberish;
daysAmount: BigNumberish;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
categories: CategoryInput[];
};
export type UpdateEventArgs = {
eventId: BigNumberish;
eventPlaceId: BigNumberish;
ticketPrice: BigNumberish;
startDate: BigNumberish;
daysAmount: BigNumberish;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
};
// Base event args without categories (for updateEvent)
export type BaseEventArgs = {
eventPlaceId: BigNumberish;
ticketPrice: BigNumberish;
startDate: BigNumberish;
daysAmount: BigNumberish;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
};
export type UpdateEventPlaceArgs = {
eventPlaceId: BigNumberish;
maxTickets: BigNumberish;
minTickets: BigNumberish;
minPrice: BigNumberish;
daysBeforeCancel: BigNumberish;
minDays: BigNumberish;
available: boolean;
digest: string;
hashFunction: BigNumberish;
size: BigNumberish;
eventDepositSize: BigNumberish;
};
export type CloseEventArgs = {
eventId: BigNumberish;
};
export type CancelEventArgs = {
eventId: BigNumberish;
};
// Conversion functions
export const submitEventPlaceRequestArgsToArray = (
args: SubmitEventPlaceRequestArgs,
): Parameters<CyberValleyEventManager["submitEventPlaceRequest"]> => {
return [
args.maxTickets,
args.minTickets,
args.minPrice,
args.daysBeforeCancel,
args.minDays,
args.available,
args.digest,
args.hashFunction,
args.size,
args.eventDepositSize,
];
};
export const approveEventPlaceArgsToArray = (
args: ApproveEventPlaceArgs,
): Parameters<CyberValleyEventManager["approveEventPlace"]> => {
return [args.eventPlaceId, args.eventDepositSize];
};
export const declineEventPlaceArgsToArray = (
args: DeclineEventPlaceArgs,
): Parameters<CyberValleyEventManager["declineEventPlace"]> => {
return [args.eventPlaceId];
};
export const approveEventArgsToArray = (
args: ApproveEventArgs,
): Parameters<CyberValleyEventManager["approveEvent"]> => {
return [args.eventId, args.distributionProfileId];
};
export const declineEventArgsToArray = (
args: DeclineEventArgs,
): Parameters<CyberValleyEventManager["declineEvent"]> => {
return [args.eventId];
};
export const submitEventRequestArgsToArray = (
args: SubmitEventRequestArgs,
): Parameters<CyberValleyEventManager["submitEventRequest"]> => {
return [
args.eventPlaceId,
args.ticketPrice,
args.startDate,
args.daysAmount,
args.digest,
args.hashFunction,
args.size,
args.categories,
];
};
// Helper for updateEvent (no categories)
export const baseEventArgsToArray = (
args: BaseEventArgs,
): [
BigNumberish,
BigNumberish,
BigNumberish,
BigNumberish,
string,
BigNumberish,
BigNumberish,
] => {
return [
args.eventPlaceId,
args.ticketPrice,
args.startDate,
args.daysAmount,
args.digest,
args.hashFunction,
args.size,
];
};
export const updateEventArgsToArray = (
args: UpdateEventArgs,
): Parameters<CyberValleyEventManager["updateEvent"]> => {
return [
args.eventId,
args.eventPlaceId,
args.ticketPrice,
args.startDate,
args.daysAmount,
args.digest,
args.hashFunction,
args.size,
];
};
export const updateEventPlaceArgsToArray = (
args: UpdateEventPlaceArgs,
): Parameters<CyberValleyEventManager["updateEventPlace"]> => {
return [
args.eventPlaceId,
args.maxTickets,
args.minTickets,
args.minPrice,
args.daysBeforeCancel,
args.minDays,
args.available,
args.digest,
args.hashFunction,
args.size,
args.eventDepositSize,
];
};
export const closeEventArgsToArray = (
args: CloseEventArgs,
): Parameters<CyberValleyEventManager["closeEvent"]> => {
return [args.eventId];
};
export const cancelEventArgsToArray = (
args: CancelEventArgs,
): Parameters<CyberValleyEventManager["cancelEvent"]> => {
return [args.eventId];
};