import * as _sinclair_typebox from '@sinclair/typebox';
import { TObject } from '@sinclair/typebox';

/**
 * Success response schema wrapper
 *
 * Wraps a data schema with success: true and optional message
 */
declare const SuccessResponseSchema: <T extends TObject>(dataSchema: T) => TObject<{
    success: _sinclair_typebox.TLiteral<true>;
    data: T;
    message: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
}>;
/**
 * Error response schema
 *
 * Standard error format with code, message, and optional details
 */
declare const ErrorResponseSchema: TObject<{
    success: _sinclair_typebox.TLiteral<false>;
    error: TObject<{
        code: _sinclair_typebox.TString;
        message: _sinclair_typebox.TString;
        details: _sinclair_typebox.TOptional<_sinclair_typebox.TAny>;
    }>;
}>;
/**
 * API Response schema (union of success and error)
 *
 * Use this to define contract responses that can be either success or error
 */
declare const ApiResponseSchema: <T extends TObject>(dataSchema: T) => _sinclair_typebox.TUnion<[TObject<{
    success: _sinclair_typebox.TLiteral<true>;
    data: T;
    message: _sinclair_typebox.TOptional<_sinclair_typebox.TString>;
}>, TObject<{
    success: _sinclair_typebox.TLiteral<false>;
    error: TObject<{
        code: _sinclair_typebox.TString;
        message: _sinclair_typebox.TString;
        details: _sinclair_typebox.TOptional<_sinclair_typebox.TAny>;
    }>;
}>]>;

export { ApiResponseSchema, ErrorResponseSchema, SuccessResponseSchema };
