/**
 * ### EndsWithOneOf Rule
 *
 * Validates that the field under validation ends with one of the given values.
 *
 * #### Parameters
 * - List of values that the field must end with
 *
 * @example
 * ```typescript
 * // Class validation
 * class FileUpload {
 *   @EndsWithOneOf(['jpg', 'png', 'gif', 'webp'])
 *   imageFile: string;
 *
 *   @EndsWithOneOf(['.com', '.org', '.net'])
 *   websiteUrl: string;
 * }
 * ```
 *
 * @param options - Validation options with rule parameters
 * @param options.ruleParams - Array of valid ending values
 * @returns Promise resolving to true if valid, rejecting with error message if invalid
 *
 * @since 1.22.0
 * @public
 */
export declare const EndsWithOneOf: (ruleParameters: string[]) => PropertyDecorator;
/**
 * ### String Rule
 *
 * Validates that the field under validation is a string. If you would like to
 * allow the field to also be null, you should assign the nullable rule to the field.
 *
 * @example
 * ```typescript
 * // Class validation
 * class TextContent {
 *   @IsRequired
 *   @IsString
 *   title: String;
 *
 *   @IsString
 *   description?: String | null;
 * }
 * ```
 *
 * @param options - Validation options containing value and context
 * @returns Promise resolving to true if valid, rejecting with error message if invalid
 *
 * @since 1.22.0
 * @public
 */
export declare const IsString: PropertyDecorator;
declare module "../types" {
    interface IValidatorRules {
        /**
         * ### String Rule
         *
         * Validates that the field under validation is a string. If you would like to
         * allow the field to also be null, you should assign the nullable rule to the field.
         *
         * @example
         * ```typescript
         * // Valid String values
         * await Validator.validate({
         *   value: 'Hello World',
         *   rules: ['String']
         * }); // ✓ Valid
         *
         * await Validator.validate({
         *   value: '',
         *   rules: ['String']
         * }); // ✓ Valid (empty String)
         *
         * // Invalid examples
         * await Validator.validate({
         *   value: 123,
         *   rules: ['String']
         * }); // ✗ Invalid
         *
         * await Validator.validate({
         *   value: null,
         *   rules: ['String']
         * }); // ✗ Invalid (use nullable for null support)
         *
         * // With nullable support
         * await Validator.validate({
         *   value: null,
         *   rules: ['nullable', 'String']
         * }); // ✓ Valid
         *
         * // Class validation
         * class TextContent {
         *   @Required
         *   @String
         *   title: String;
         *
         *   @String
         *   description?: String | null;
         * }
         * ```
         *
         * @param options - Validation options containing value and context
         * @returns Promise resolving to true if valid, rejecting with error message if invalid
         *
         * @since 1.22.0
         * @public
         */
        String: IValidatorRuleFunction;
        /**
         * ### StartsWithOneOf Rule
         *
         * Validates that the field under validation starts with one of the given values.
         *
         * #### Parameters
         * - List of values that the field must start with
         *
         * @example
         * ```typescript
         * // Valid beginnings
         * await Validator.validate({
         *   value: 'https://example.com',
         *   rules: ['StartsWithOneOf[http://,https://]']
         * }); // ✓ Valid
         *
         * await Validator.validate({
         *   value: 'USER_12345',
         *   rules: ['StartsWithOneOf[USER_,ADMIN_]']
         * }); // ✓ Valid
         *
         * // Invalid example
         * await Validator.validate({
         *   value: 'ftp://example.com',
         *   rules: ['StartsWithOneOf[http://,https://]']
         * }); // ✗ Invalid
         *
         * // Class validation
         * class Configuration {
         *   @StartsWithOneOf(['http://', 'https://'])
         *   apiUrl: string;
         *
         *   @StartsWithOneOf(['prod_', 'dev_', 'test_'])
         *   environment: string;
         * }
         * ```
         *
         * @param options - Validation options with rule parameters
         * @param options.ruleParams - Array of valid starting values
         * @returns Promise resolving to true if valid, rejecting with error message if invalid
         *
         * @since 1.22.0
         * @public
         */
        StartsWithOneOf: IValidatorRuleFunction;
        /**
         * ### Ends With Rule
         *
         * Validates that the field under validation ends with one of the given values.
         *
         * #### Parameters
         * - List of values that the field must end with
         *
         * @example
         * ```typescript
         * // Valid endings
         * await Validator.validate({
         *   value: 'profile.jpg',
         *   rules: ['EndsWithOneOf[jpg,png,gif]']
         * }); // ✓ Valid
         *
         * await Validator.validate({
         *   value: 'document.pdf',
         *   rules: ['EndsWithOneOf[pdf,doc,docx]']
         * }); // ✓ Valid
         *
         * // Invalid example
         * await Validator.validate({
         *   value: 'image.txt',
         *   rules: ['EndsWithOneOf[jpg,png,gif]']
         * }); // ✗ Invalid
         *
         * // Class validation
         * class FileUpload {
         *   @EndsWithOneOf(['jpg', 'png', 'gif', 'webp'])
         *   imageFile: string;
         *
         *   @EndsWithOneOf(['.com', '.org', '.net'])
         *   websiteUrl: string;
         * }
         * ```
         *
         * @param options - Validation options with rule parameters
         * @param options.ruleParams - Array of valid ending values
         * @returns Promise resolving to true if valid, rejecting with error message if invalid
         *
         * @since 1.22.0
         * @public
         */
        EndsWithOneOf: IValidatorRuleFunction;
    }
}
