/**
 * Types for account activation flow.
 */

export interface ActivationTokenInfo {
	tokenValue: string;
	email: string;
	role: string;
	schoolName: string;
	isExpired: boolean;
	expiresAt: string;
}

export interface ActivateAccountInput {
	tokenValue: string;
	password: string;
}

export interface ActivateAccountOutput {
	userId: string;
	email: string;
	role: string;
	message: string;
}

export type ActivationError =
	| 'TOKEN_NOT_FOUND'
	| 'TOKEN_EXPIRED'
	| 'TOKEN_ALREADY_USED'
	| 'VALIDATION_ERROR'
	| 'NETWORK_ERROR';

export interface ActivationErrorResponse {
	'@type': string;
	title: string;
	detail: string;
	violations?: Array<{
		propertyPath: string;
		message: string;
	}>;
}
