import * as pulumi from "@pulumi/pulumi";
import * as outputs from "./types/output";
/**
 * Groups are how users are authorized to access Resources. For more information, see Twingate's [documentation](https://docs.twingate.com/docs/groups).
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as twingate from "@twingate/pulumi-twingate";
 *
 * const foo = twingate.getTwingateGroups({
 *     name: "<your group's name>",
 * });
 * ```
 */
export declare function getTwingateGroups(args?: GetTwingateGroupsArgs, opts?: pulumi.InvokeOptions): Promise<GetTwingateGroupsResult>;
/**
 * A collection of arguments for invoking getTwingateGroups.
 */
export interface GetTwingateGroupsArgs {
    /**
     * Returns only Groups matching the specified state.
     */
    isActive?: boolean;
    /**
     * Returns only groups that exactly match this name. If no options are passed it will return all resources. Only one option can be used at a time.
     */
    name?: string;
    /**
     * Match when the value exist in the name of the group.
     */
    nameContains?: string;
    /**
     * Match when the exact value does not exist in the name of the group.
     */
    nameExclude?: string;
    /**
     * The name of the group must start with the value.
     */
    namePrefix?: string;
    /**
     * The regular expression match of the name of the group.
     */
    nameRegexp?: string;
    /**
     * The name of the group must end with the value.
     */
    nameSuffix?: string;
    /**
     * Returns groups that match a list of types. valid types: `MANUAL`, `SYNCED`, `SYSTEM`.
     */
    types?: string[];
}
/**
 * A collection of values returned by getTwingateGroups.
 */
export interface GetTwingateGroupsResult {
    /**
     * List of Groups
     */
    readonly groups: outputs.GetTwingateGroupsGroup[];
    /**
     * The ID of this resource.
     */
    readonly id: string;
    /**
     * Returns only Groups matching the specified state.
     */
    readonly isActive?: boolean;
    /**
     * Returns only groups that exactly match this name. If no options are passed it will return all resources. Only one option can be used at a time.
     */
    readonly name?: string;
    /**
     * Match when the value exist in the name of the group.
     */
    readonly nameContains?: string;
    /**
     * Match when the exact value does not exist in the name of the group.
     */
    readonly nameExclude?: string;
    /**
     * The name of the group must start with the value.
     */
    readonly namePrefix?: string;
    /**
     * The regular expression match of the name of the group.
     */
    readonly nameRegexp?: string;
    /**
     * The name of the group must end with the value.
     */
    readonly nameSuffix?: string;
    /**
     * Returns groups that match a list of types. valid types: `MANUAL`, `SYNCED`, `SYSTEM`.
     */
    readonly types?: string[];
}
/**
 * Groups are how users are authorized to access Resources. For more information, see Twingate's [documentation](https://docs.twingate.com/docs/groups).
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as twingate from "@twingate/pulumi-twingate";
 *
 * const foo = twingate.getTwingateGroups({
 *     name: "<your group's name>",
 * });
 * ```
 */
export declare function getTwingateGroupsOutput(args?: GetTwingateGroupsOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetTwingateGroupsResult>;
/**
 * A collection of arguments for invoking getTwingateGroups.
 */
export interface GetTwingateGroupsOutputArgs {
    /**
     * Returns only Groups matching the specified state.
     */
    isActive?: pulumi.Input<boolean>;
    /**
     * Returns only groups that exactly match this name. If no options are passed it will return all resources. Only one option can be used at a time.
     */
    name?: pulumi.Input<string>;
    /**
     * Match when the value exist in the name of the group.
     */
    nameContains?: pulumi.Input<string>;
    /**
     * Match when the exact value does not exist in the name of the group.
     */
    nameExclude?: pulumi.Input<string>;
    /**
     * The name of the group must start with the value.
     */
    namePrefix?: pulumi.Input<string>;
    /**
     * The regular expression match of the name of the group.
     */
    nameRegexp?: pulumi.Input<string>;
    /**
     * The name of the group must end with the value.
     */
    nameSuffix?: pulumi.Input<string>;
    /**
     * Returns groups that match a list of types. valid types: `MANUAL`, `SYNCED`, `SYSTEM`.
     */
    types?: pulumi.Input<pulumi.Input<string>[]>;
}
