import * as pulumi from "@pulumi/pulumi";
import * as inputs from "./types/input";
import * as outputs from "./types/output";
/**
 * A [service custom field](https://developer.pagerduty.com/api-reference/6075929031f7d-create-a-field)
 * allows you to extend PagerDuty Services with custom data fields to provide
 * additional context and support features such as customized filtering, search,
 * and analytics.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as pagerduty from "@pulumi/pagerduty";
 *
 * // Simple string field
 * const environment = new pagerduty.ServiceCustomField("environment", {
 *     name: "environment",
 *     displayName: "Environment",
 *     dataType: "string",
 *     fieldType: "single_value",
 *     description: "The environment this service runs in",
 * });
 * // Field with fixed options
 * const deploymentTier = new pagerduty.ServiceCustomField("deployment_tier", {
 *     name: "deployment_tier",
 *     displayName: "Deployment Tier",
 *     dataType: "string",
 *     fieldType: "single_value_fixed",
 *     description: "The deployment tier of the service",
 *     defaultValue: JSON.stringify("production"),
 *     fieldOptions: [
 *         {
 *             value: "production",
 *             dataType: "string",
 *         },
 *         {
 *             value: "staging",
 *             dataType: "string",
 *         },
 *         {
 *             value: "development",
 *             dataType: "string",
 *         },
 *     ],
 * });
 * // Multi-value field with fixed options
 * const regions = new pagerduty.ServiceCustomField("regions", {
 *     name: "regions",
 *     displayName: "AWS Regions",
 *     dataType: "string",
 *     fieldType: "multi_value_fixed",
 *     description: "AWS regions where this service is deployed",
 *     fieldOptions: [
 *         {
 *             value: "us-east-1",
 *             dataType: "string",
 *         },
 *         {
 *             value: "us-west-1",
 *             dataType: "string",
 *         },
 *     ],
 * });
 * // Boolean field
 * const critical = new pagerduty.ServiceCustomField("critical", {
 *     name: "is_critical",
 *     displayName: "Is Critical",
 *     dataType: "boolean",
 *     fieldType: "single_value",
 *     description: "Whether this is a critical service",
 *     defaultValue: JSON.stringify(true),
 * });
 * // Integer field
 * const priority = new pagerduty.ServiceCustomField("priority", {
 *     name: "priority_level",
 *     displayName: "Priority Level",
 *     dataType: "integer",
 *     fieldType: "single_value",
 *     description: "Service priority level",
 *     defaultValue: JSON.stringify(1),
 * });
 * ```
 *
 * ## Import
 *
 * Service custom fields can be imported using the field ID, e.g.
 *
 * ```sh
 * $ pulumi import pagerduty:index/serviceCustomField:ServiceCustomField example P123456
 * ```
 */
export declare class ServiceCustomField extends pulumi.CustomResource {
    /**
     * Get an existing ServiceCustomField resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: ServiceCustomFieldState, opts?: pulumi.CustomResourceOptions): ServiceCustomField;
    /**
     * Returns true if the given object is an instance of ServiceCustomField.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is ServiceCustomField;
    /**
     * The kind of data the custom field is allowed to contain. Can be one of: `string`, `integer`, `float`, `boolean`, `datetime`, or `url`.
     */
    readonly dataType: pulumi.Output<string>;
    /**
     * The default value for the field. Must be provided as a JSON-encoded string matching the field's data type.
     */
    readonly defaultValue: pulumi.Output<string | undefined>;
    /**
     * A description of the data this field contains.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The human-readable name of the field. Must be unique across an account.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * Whether the field is enabled. Defaults to `true`.
     */
    readonly enabled: pulumi.Output<boolean>;
    /**
     * Configuration block for defining options for `singleValueFixed` or `multiValueFixed` field types. Can be specified multiple times for multiple options.
     */
    readonly fieldOptions: pulumi.Output<outputs.ServiceCustomFieldFieldOption[] | undefined>;
    /**
     * The type of field. Must be one of: `singleValue`, `singleValueFixed`, `multiValue`, or `multiValueFixed`.
     */
    readonly fieldType: pulumi.Output<string>;
    /**
     * The name of the field. May include ASCII characters, specifically lowercase letters, digits, and underscores. Must be unique and cannot be changed once created.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The API show URL at which the object is accessible
     */
    readonly self: pulumi.Output<string>;
    /**
     * A short-form, server-generated string that provides succinct, important information about an object suitable for primary
     * labeling of an entity in a client. In many cases, this will be identical to display_name
     */
    readonly summary: pulumi.Output<string>;
    /**
     * API object type
     */
    readonly type: pulumi.Output<string>;
    /**
     * Create a ServiceCustomField resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: ServiceCustomFieldArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ServiceCustomField resources.
 */
export interface ServiceCustomFieldState {
    /**
     * The kind of data the custom field is allowed to contain. Can be one of: `string`, `integer`, `float`, `boolean`, `datetime`, or `url`.
     */
    dataType?: pulumi.Input<string>;
    /**
     * The default value for the field. Must be provided as a JSON-encoded string matching the field's data type.
     */
    defaultValue?: pulumi.Input<string>;
    /**
     * A description of the data this field contains.
     */
    description?: pulumi.Input<string>;
    /**
     * The human-readable name of the field. Must be unique across an account.
     */
    displayName?: pulumi.Input<string>;
    /**
     * Whether the field is enabled. Defaults to `true`.
     */
    enabled?: pulumi.Input<boolean>;
    /**
     * Configuration block for defining options for `singleValueFixed` or `multiValueFixed` field types. Can be specified multiple times for multiple options.
     */
    fieldOptions?: pulumi.Input<pulumi.Input<inputs.ServiceCustomFieldFieldOption>[]>;
    /**
     * The type of field. Must be one of: `singleValue`, `singleValueFixed`, `multiValue`, or `multiValueFixed`.
     */
    fieldType?: pulumi.Input<string>;
    /**
     * The name of the field. May include ASCII characters, specifically lowercase letters, digits, and underscores. Must be unique and cannot be changed once created.
     */
    name?: pulumi.Input<string>;
    /**
     * The API show URL at which the object is accessible
     */
    self?: pulumi.Input<string>;
    /**
     * A short-form, server-generated string that provides succinct, important information about an object suitable for primary
     * labeling of an entity in a client. In many cases, this will be identical to display_name
     */
    summary?: pulumi.Input<string>;
    /**
     * API object type
     */
    type?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a ServiceCustomField resource.
 */
export interface ServiceCustomFieldArgs {
    /**
     * The kind of data the custom field is allowed to contain. Can be one of: `string`, `integer`, `float`, `boolean`, `datetime`, or `url`.
     */
    dataType: pulumi.Input<string>;
    /**
     * The default value for the field. Must be provided as a JSON-encoded string matching the field's data type.
     */
    defaultValue?: pulumi.Input<string>;
    /**
     * A description of the data this field contains.
     */
    description?: pulumi.Input<string>;
    /**
     * The human-readable name of the field. Must be unique across an account.
     */
    displayName: pulumi.Input<string>;
    /**
     * Whether the field is enabled. Defaults to `true`.
     */
    enabled?: pulumi.Input<boolean>;
    /**
     * Configuration block for defining options for `singleValueFixed` or `multiValueFixed` field types. Can be specified multiple times for multiple options.
     */
    fieldOptions?: pulumi.Input<pulumi.Input<inputs.ServiceCustomFieldFieldOption>[]>;
    /**
     * The type of field. Must be one of: `singleValue`, `singleValueFixed`, `multiValue`, or `multiValueFixed`.
     */
    fieldType: pulumi.Input<string>;
    /**
     * The name of the field. May include ASCII characters, specifically lowercase letters, digits, and underscores. Must be unique and cannot be changed once created.
     */
    name?: pulumi.Input<string>;
}
