import { Arbitrary } from '../arbitrary/definition/Arbitrary';
import { AsyncProperty } from './AsyncProperty.generic';
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0>(arb0: Arbitrary<T0>, predicate: (t0: T0) => Promise<boolean | void>): AsyncProperty<[T0]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, predicate: (t0: T0, t1: T1) => Promise<boolean | void>): AsyncProperty<[T0, T1]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, predicate: (t0: T0, t1: T1, t2: T2) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, arb16: Arbitrary<T16>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15, t16: T16) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, arb16: Arbitrary<T16>, arb17: Arbitrary<T17>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15, t16: T16, t17: T17) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, arb16: Arbitrary<T16>, arb17: Arbitrary<T17>, arb18: Arbitrary<T18>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15, t16: T16, t17: T17, t18: T18) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, arb16: Arbitrary<T16>, arb17: Arbitrary<T17>, arb18: Arbitrary<T18>, arb19: Arbitrary<T19>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15, t16: T16, t17: T17, t18: T18, t19: T19) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, arb16: Arbitrary<T16>, arb17: Arbitrary<T17>, arb18: Arbitrary<T18>, arb19: Arbitrary<T19>, arb20: Arbitrary<T20>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15, t16: T16, t17: T17, t18: T18, t19: T19, t20: T20) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20]>;
/**
 * Instantiate a new {@link AsyncProperty}
 * @param predicate Assess the success of the property. Would be considered falsy if its throws or if its output evaluates to false
 */
declare function asyncProperty<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(arb0: Arbitrary<T0>, arb1: Arbitrary<T1>, arb2: Arbitrary<T2>, arb3: Arbitrary<T3>, arb4: Arbitrary<T4>, arb5: Arbitrary<T5>, arb6: Arbitrary<T6>, arb7: Arbitrary<T7>, arb8: Arbitrary<T8>, arb9: Arbitrary<T9>, arb10: Arbitrary<T10>, arb11: Arbitrary<T11>, arb12: Arbitrary<T12>, arb13: Arbitrary<T13>, arb14: Arbitrary<T14>, arb15: Arbitrary<T15>, arb16: Arbitrary<T16>, arb17: Arbitrary<T17>, arb18: Arbitrary<T18>, arb19: Arbitrary<T19>, arb20: Arbitrary<T20>, arb21: Arbitrary<T21>, predicate: (t0: T0, t1: T1, t2: T2, t3: T3, t4: T4, t5: T5, t6: T6, t7: T7, t8: T8, t9: T9, t10: T10, t11: T11, t12: T12, t13: T13, t14: T14, t15: T15, t16: T16, t17: T17, t18: T18, t19: T19, t20: T20, t21: T21) => Promise<boolean | void>): AsyncProperty<[T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21]>;
export { asyncProperty };
