import { InferContract } from '@spfn/core';
import { getInvitationContract, createInvitationContract, listInvitationsContract } from '../contracts/invitation.js';
import '@sinclair/typebox';

/**
 * Auto-generated API Client
 *
 * Generated by @spfn/core codegen
 * DO NOT EDIT MANUALLY
 *
 * @generated 2025-11-09T12:30:02.324Z
 */

type GetInvitationResponse = InferContract<typeof getInvitationContract>['response'];
type GetInvitationParams = InferContract<typeof getInvitationContract>['params'];
type CreateInvitationResponse = InferContract<typeof createInvitationContract>['response'];
type CreateInvitationBody = InferContract<typeof createInvitationContract>['body'];
type ListInvitationsResponse = InferContract<typeof listInvitationsContract>['response'];
type ListInvitationsQuery = InferContract<typeof listInvitationsContract>['query'];
/**
 * GET /_auth/invitations/:token
 */
declare const getInvitation: (options: {
    params: GetInvitationParams;
}) => Promise<{
    success: false;
    error: {
        details?: any;
        message: string;
        code: string;
    };
} | {
    message?: string | undefined;
    success: true;
    data: {
        metadata?: any;
        email: string;
        expiresAt: string;
        role: string;
        roleDisplayName: string;
        invitedBy: string;
    };
}>;
/**
 * POST /_auth/invitations
 */
declare const createInvitation: (options: {
    body: CreateInvitationBody;
}) => Promise<{
    success: false;
    error: {
        details?: any;
        message: string;
        code: string;
    };
} | {
    message?: string | undefined;
    success: true;
    data: {
        email: string;
        expiresAt: string;
        id: number;
        token: string;
        roleId: number;
        invitationUrl: string;
    };
}>;
/**
 * GET /_auth/invitations
 */
declare const listInvitations: (options: {
    query?: ListInvitationsQuery;
}) => Promise<{
    success: false;
    error: {
        details?: any;
        message: string;
        code: string;
    };
} | {
    message?: string | undefined;
    success: true;
    data: {
        page: number;
        limit: number;
        invitations: {
            acceptedAt?: string | undefined;
            cancelledAt?: string | undefined;
            email: string;
            expiresAt: string;
            role: {
                id: number;
                name: string;
                displayName: string;
            };
            id: number;
            status: string;
            inviter: {
                email: string;
                id: number;
            };
            createdAt: string;
        }[];
        total: number;
        totalPages: number;
    };
}>;

export { type CreateInvitationBody, type CreateInvitationResponse, type GetInvitationParams, type GetInvitationResponse, type ListInvitationsQuery, type ListInvitationsResponse, createInvitation, getInvitation, listInvitations };
