@cdktn/provider-pagerduty 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/.jsii +110408 -0
  2. package/LICENSE +355 -0
  3. package/README.md +94 -0
  4. package/lib/addon/index.d.ts +53 -0
  5. package/lib/addon/index.js +115 -0
  6. package/lib/alert-grouping-setting/index.d.ts +144 -0
  7. package/lib/alert-grouping-setting/index.js +366 -0
  8. package/lib/automation-actions-action/index.d.ts +232 -0
  9. package/lib/automation-actions-action/index.js +560 -0
  10. package/lib/automation-actions-action-service-association/index.d.ts +64 -0
  11. package/lib/automation-actions-action-service-association/index.js +129 -0
  12. package/lib/automation-actions-action-team-association/index.d.ts +64 -0
  13. package/lib/automation-actions-action-team-association/index.js +129 -0
  14. package/lib/automation-actions-runner/index.d.ts +102 -0
  15. package/lib/automation-actions-runner/index.js +224 -0
  16. package/lib/automation-actions-runner-team-association/index.d.ts +64 -0
  17. package/lib/automation-actions-runner-team-association/index.js +129 -0
  18. package/lib/business-service/index.d.ts +84 -0
  19. package/lib/business-service/index.js +190 -0
  20. package/lib/business-service-subscriber/index.d.ts +72 -0
  21. package/lib/business-service-subscriber/index.js +147 -0
  22. package/lib/data-pagerduty-alert-grouping-setting/index.d.ts +70 -0
  23. package/lib/data-pagerduty-alert-grouping-setting/index.js +190 -0
  24. package/lib/data-pagerduty-automation-actions-action/index.d.ts +186 -0
  25. package/lib/data-pagerduty-automation-actions-action/index.js +425 -0
  26. package/lib/data-pagerduty-automation-actions-runner/index.d.ts +78 -0
  27. package/lib/data-pagerduty-automation-actions-runner/index.js +172 -0
  28. package/lib/data-pagerduty-business-service/index.d.ts +46 -0
  29. package/lib/data-pagerduty-business-service/index.js +101 -0
  30. package/lib/data-pagerduty-escalation-policy/index.d.ts +47 -0
  31. package/lib/data-pagerduty-escalation-policy/index.js +105 -0
  32. package/lib/data-pagerduty-event-orchestration/index.d.ts +137 -0
  33. package/lib/data-pagerduty-event-orchestration/index.js +306 -0
  34. package/lib/data-pagerduty-event-orchestration-global-cache-variable/index.d.ts +138 -0
  35. package/lib/data-pagerduty-event-orchestration-global-cache-variable/index.js +315 -0
  36. package/lib/data-pagerduty-event-orchestration-integration/index.d.ts +100 -0
  37. package/lib/data-pagerduty-event-orchestration-integration/index.js +216 -0
  38. package/lib/data-pagerduty-event-orchestration-service-cache-variable/index.d.ts +138 -0
  39. package/lib/data-pagerduty-event-orchestration-service-cache-variable/index.js +315 -0
  40. package/lib/data-pagerduty-event-orchestrations/index.d.ts +161 -0
  41. package/lib/data-pagerduty-event-orchestrations/index.js +366 -0
  42. package/lib/data-pagerduty-extension-schema/index.d.ts +46 -0
  43. package/lib/data-pagerduty-extension-schema/index.js +101 -0
  44. package/lib/data-pagerduty-incident-custom-field/index.d.ts +60 -0
  45. package/lib/data-pagerduty-incident-custom-field/index.js +130 -0
  46. package/lib/data-pagerduty-incident-type/index.d.ts +50 -0
  47. package/lib/data-pagerduty-incident-type/index.js +117 -0
  48. package/lib/data-pagerduty-incident-type-custom-field/index.d.ts +115 -0
  49. package/lib/data-pagerduty-incident-type-custom-field/index.js +295 -0
  50. package/lib/data-pagerduty-incident-workflow/index.d.ts +57 -0
  51. package/lib/data-pagerduty-incident-workflow/index.js +118 -0
  52. package/lib/data-pagerduty-jira-cloud-account-mapping/index.d.ts +46 -0
  53. package/lib/data-pagerduty-jira-cloud-account-mapping/index.js +101 -0
  54. package/lib/data-pagerduty-license/index.d.ts +74 -0
  55. package/lib/data-pagerduty-license/index.js +170 -0
  56. package/lib/data-pagerduty-licenses/index.d.ts +92 -0
  57. package/lib/data-pagerduty-licenses/index.js +213 -0
  58. package/lib/data-pagerduty-priority/index.d.ts +48 -0
  59. package/lib/data-pagerduty-priority/index.js +101 -0
  60. package/lib/data-pagerduty-ruleset/index.d.ts +57 -0
  61. package/lib/data-pagerduty-ruleset/index.js +115 -0
  62. package/lib/data-pagerduty-schedule/index.d.ts +45 -0
  63. package/lib/data-pagerduty-schedule/index.js +97 -0
  64. package/lib/data-pagerduty-service/index.d.ts +86 -0
  65. package/lib/data-pagerduty-service/index.js +205 -0
  66. package/lib/data-pagerduty-service-custom-field/index.d.ts +92 -0
  67. package/lib/data-pagerduty-service-custom-field/index.js +221 -0
  68. package/lib/data-pagerduty-service-custom-field-value/index.d.ts +88 -0
  69. package/lib/data-pagerduty-service-custom-field-value/index.js +205 -0
  70. package/lib/data-pagerduty-service-integration/index.d.ts +56 -0
  71. package/lib/data-pagerduty-service-integration/index.js +119 -0
  72. package/lib/data-pagerduty-standards/index.d.ts +154 -0
  73. package/lib/data-pagerduty-standards/index.js +361 -0
  74. package/lib/data-pagerduty-standards-resource-scores/index.d.ts +112 -0
  75. package/lib/data-pagerduty-standards-resource-scores/index.js +268 -0
  76. package/lib/data-pagerduty-standards-resources-scores/index.d.ts +144 -0
  77. package/lib/data-pagerduty-standards-resources-scores/index.js +352 -0
  78. package/lib/data-pagerduty-tag/index.d.ts +47 -0
  79. package/lib/data-pagerduty-tag/index.js +97 -0
  80. package/lib/data-pagerduty-team/index.d.ts +77 -0
  81. package/lib/data-pagerduty-team/index.js +157 -0
  82. package/lib/data-pagerduty-team-members/index.d.ts +95 -0
  83. package/lib/data-pagerduty-team-members/index.js +203 -0
  84. package/lib/data-pagerduty-teams/index.d.ts +96 -0
  85. package/lib/data-pagerduty-teams/index.js +206 -0
  86. package/lib/data-pagerduty-user/index.d.ts +50 -0
  87. package/lib/data-pagerduty-user/index.js +117 -0
  88. package/lib/data-pagerduty-user-contact-method/index.d.ts +82 -0
  89. package/lib/data-pagerduty-user-contact-method/index.js +174 -0
  90. package/lib/data-pagerduty-users/index.d.ts +87 -0
  91. package/lib/data-pagerduty-users/index.js +208 -0
  92. package/lib/data-pagerduty-vendor/index.d.ts +46 -0
  93. package/lib/data-pagerduty-vendor/index.js +101 -0
  94. package/lib/enablement/index.d.ts +70 -0
  95. package/lib/enablement/index.js +151 -0
  96. package/lib/escalation-policy/index.d.ts +232 -0
  97. package/lib/escalation-policy/index.js +565 -0
  98. package/lib/event-orchestration/index.d.ts +156 -0
  99. package/lib/event-orchestration/index.js +352 -0
  100. package/lib/event-orchestration-global/index.d.ts +1253 -0
  101. package/lib/event-orchestration-global/index.js +3350 -0
  102. package/lib/event-orchestration-global-cache-variable/index.d.ts +182 -0
  103. package/lib/event-orchestration-global-cache-variable/index.js +459 -0
  104. package/lib/event-orchestration-integration/index.d.ts +88 -0
  105. package/lib/event-orchestration-integration/index.js +196 -0
  106. package/lib/event-orchestration-router/index.d.ts +363 -0
  107. package/lib/event-orchestration-router/index.js +954 -0
  108. package/lib/event-orchestration-service/index.d.ts +1328 -0
  109. package/lib/event-orchestration-service/index.js +3573 -0
  110. package/lib/event-orchestration-service-cache-variable/index.d.ts +182 -0
  111. package/lib/event-orchestration-service-cache-variable/index.js +459 -0
  112. package/lib/event-orchestration-unrouted/index.d.ts +653 -0
  113. package/lib/event-orchestration-unrouted/index.js +1722 -0
  114. package/lib/event-rule/index.d.ts +74 -0
  115. package/lib/event-rule/index.js +154 -0
  116. package/lib/extension/index.d.ts +91 -0
  117. package/lib/extension/index.js +204 -0
  118. package/lib/extension-servicenow/index.d.ts +138 -0
  119. package/lib/extension-servicenow/index.js +308 -0
  120. package/lib/incident-custom-field/index.d.ts +98 -0
  121. package/lib/incident-custom-field/index.js +207 -0
  122. package/lib/incident-custom-field-option/index.d.ts +72 -0
  123. package/lib/incident-custom-field-option/index.js +147 -0
  124. package/lib/incident-type/index.d.ts +80 -0
  125. package/lib/incident-type/index.js +176 -0
  126. package/lib/incident-type-custom-field/index.d.ts +117 -0
  127. package/lib/incident-type-custom-field/index.js +265 -0
  128. package/lib/incident-workflow/index.d.ts +378 -0
  129. package/lib/incident-workflow/index.js +943 -0
  130. package/lib/incident-workflow-trigger/index.d.ts +133 -0
  131. package/lib/incident-workflow-trigger/index.js +314 -0
  132. package/lib/index.d.ts +91 -0
  133. package/lib/index.js +97 -0
  134. package/lib/jira-cloud-account-mapping-rule/index.d.ts +559 -0
  135. package/lib/jira-cloud-account-mapping-rule/index.js +1578 -0
  136. package/lib/lazy-index.d.ts +4 -0
  137. package/lib/lazy-index.js +94 -0
  138. package/lib/maintenance-window/index.d.ts +81 -0
  139. package/lib/maintenance-window/index.js +168 -0
  140. package/lib/provider/index.d.ts +128 -0
  141. package/lib/provider/index.js +279 -0
  142. package/lib/response-play/index.d.ts +426 -0
  143. package/lib/response-play/index.js +1009 -0
  144. package/lib/ruleset/index.d.ts +94 -0
  145. package/lib/ruleset/index.js +215 -0
  146. package/lib/ruleset-rule/index.d.ts +1026 -0
  147. package/lib/ruleset-rule/index.js +2670 -0
  148. package/lib/schedule/index.d.ts +299 -0
  149. package/lib/schedule/index.js +740 -0
  150. package/lib/service/index.d.ts +592 -0
  151. package/lib/service/index.js +1608 -0
  152. package/lib/service-custom-field/index.d.ts +174 -0
  153. package/lib/service-custom-field/index.js +379 -0
  154. package/lib/service-custom-field-value/index.d.ts +117 -0
  155. package/lib/service-custom-field-value/index.js +269 -0
  156. package/lib/service-dependency/index.d.ts +216 -0
  157. package/lib/service-dependency/index.js +525 -0
  158. package/lib/service-event-rule/index.d.ts +964 -0
  159. package/lib/service-event-rule/index.js +2512 -0
  160. package/lib/service-integration/index.d.ts +546 -0
  161. package/lib/service-integration/index.js +1404 -0
  162. package/lib/slack-connection/index.d.ts +159 -0
  163. package/lib/slack-connection/index.js +369 -0
  164. package/lib/tag/index.d.ts +47 -0
  165. package/lib/tag/index.js +105 -0
  166. package/lib/tag-assignment/index.d.ts +61 -0
  167. package/lib/tag-assignment/index.js +130 -0
  168. package/lib/team/index.d.ts +73 -0
  169. package/lib/team/index.js +161 -0
  170. package/lib/team-membership/index.d.ts +62 -0
  171. package/lib/team-membership/index.js +136 -0
  172. package/lib/user/index.d.ts +130 -0
  173. package/lib/user/index.js +291 -0
  174. package/lib/user-contact-method/index.d.ts +98 -0
  175. package/lib/user-contact-method/index.js +219 -0
  176. package/lib/user-handoff-notification-rule/index.d.ts +131 -0
  177. package/lib/user-handoff-notification-rule/index.js +285 -0
  178. package/lib/user-notification-rule/index.d.ts +105 -0
  179. package/lib/user-notification-rule/index.js +258 -0
  180. package/lib/webhook-subscription/index.d.ts +276 -0
  181. package/lib/webhook-subscription/index.js +664 -0
  182. package/package.json +155 -0
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ var _a, _b;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.UserNotificationRule = exports.UserNotificationRuleContactMethodOutputReference = void 0;
5
+ exports.userNotificationRuleContactMethodToTerraform = userNotificationRuleContactMethodToTerraform;
6
+ exports.userNotificationRuleContactMethodToHclTerraform = userNotificationRuleContactMethodToHclTerraform;
7
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
8
+ const cdktn = require("cdktn");
9
+ function userNotificationRuleContactMethodToTerraform(struct) {
10
+ if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
11
+ return struct;
12
+ }
13
+ if (cdktn.isComplexElement(struct)) {
14
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
15
+ }
16
+ return {
17
+ id: cdktn.stringToTerraform(struct.id),
18
+ type: cdktn.stringToTerraform(struct.type),
19
+ };
20
+ }
21
+ function userNotificationRuleContactMethodToHclTerraform(struct) {
22
+ if (!cdktn.canInspect(struct) || cdktn.Tokenization.isResolvable(struct)) {
23
+ return struct;
24
+ }
25
+ if (cdktn.isComplexElement(struct)) {
26
+ throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
27
+ }
28
+ const attrs = {
29
+ id: {
30
+ value: cdktn.stringToHclTerraform(struct.id),
31
+ isBlock: false,
32
+ type: "simple",
33
+ storageClassType: "string",
34
+ },
35
+ type: {
36
+ value: cdktn.stringToHclTerraform(struct.type),
37
+ isBlock: false,
38
+ type: "simple",
39
+ storageClassType: "string",
40
+ },
41
+ };
42
+ // remove undefined attributes
43
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
44
+ }
45
+ class UserNotificationRuleContactMethodOutputReference extends cdktn.ComplexObject {
46
+ /**
47
+ * @param terraformResource The parent resource
48
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
49
+ */
50
+ constructor(terraformResource, terraformAttribute) {
51
+ super(terraformResource, terraformAttribute, false);
52
+ this.isEmptyObject = false;
53
+ }
54
+ get internalValue() {
55
+ if (this.resolvableValue) {
56
+ return this.resolvableValue;
57
+ }
58
+ let hasAnyValues = this.isEmptyObject;
59
+ const internalValueResult = {};
60
+ if (this._id !== undefined) {
61
+ hasAnyValues = true;
62
+ internalValueResult.id = this._id;
63
+ }
64
+ if (this._type !== undefined) {
65
+ hasAnyValues = true;
66
+ internalValueResult.type = this._type;
67
+ }
68
+ return hasAnyValues ? internalValueResult : undefined;
69
+ }
70
+ set internalValue(value) {
71
+ if (value === undefined) {
72
+ this.isEmptyObject = false;
73
+ this.resolvableValue = undefined;
74
+ this._id = undefined;
75
+ this._type = undefined;
76
+ }
77
+ else if (cdktn.Tokenization.isResolvable(value)) {
78
+ this.isEmptyObject = false;
79
+ this.resolvableValue = value;
80
+ }
81
+ else {
82
+ this.isEmptyObject = Object.keys(value).length === 0;
83
+ this.resolvableValue = undefined;
84
+ this._id = value.id;
85
+ this._type = value.type;
86
+ }
87
+ }
88
+ get id() {
89
+ return this.getStringAttribute('id');
90
+ }
91
+ set id(value) {
92
+ this._id = value;
93
+ }
94
+ // Temporarily expose input value. Use with caution.
95
+ get idInput() {
96
+ return this._id;
97
+ }
98
+ get type() {
99
+ return this.getStringAttribute('type');
100
+ }
101
+ set type(value) {
102
+ this._type = value;
103
+ }
104
+ // Temporarily expose input value. Use with caution.
105
+ get typeInput() {
106
+ return this._type;
107
+ }
108
+ }
109
+ exports.UserNotificationRuleContactMethodOutputReference = UserNotificationRuleContactMethodOutputReference;
110
+ _a = JSII_RTTI_SYMBOL_1;
111
+ UserNotificationRuleContactMethodOutputReference[_a] = { fqn: "@cdktn/provider-pagerduty.userNotificationRule.UserNotificationRuleContactMethodOutputReference", version: "15.0.0" };
112
+ /**
113
+ * Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/user_notification_rule pagerduty_user_notification_rule}
114
+ */
115
+ class UserNotificationRule extends cdktn.TerraformResource {
116
+ // ==============
117
+ // STATIC Methods
118
+ // ==============
119
+ /**
120
+ * Generates CDKTN code for importing a UserNotificationRule resource upon running "cdktn plan <stack-name>"
121
+ * @param scope The scope in which to define this construct
122
+ * @param importToId The construct id used in the generated config for the UserNotificationRule to import
123
+ * @param importFromId The id of the existing UserNotificationRule that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/user_notification_rule#import import section} in the documentation of this resource for the id to use
124
+ * @param provider? Optional instance of the provider where the UserNotificationRule to import is found
125
+ */
126
+ static generateConfigForImport(scope, importToId, importFromId, provider) {
127
+ return new cdktn.ImportableResource(scope, importToId, { terraformResourceType: "pagerduty_user_notification_rule", importId: importFromId, provider });
128
+ }
129
+ // ===========
130
+ // INITIALIZER
131
+ // ===========
132
+ /**
133
+ * Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/user_notification_rule pagerduty_user_notification_rule} Resource
134
+ *
135
+ * @param scope The scope in which to define this construct
136
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
137
+ * @param options UserNotificationRuleConfig
138
+ */
139
+ constructor(scope, id, config) {
140
+ super(scope, id, {
141
+ terraformResourceType: 'pagerduty_user_notification_rule',
142
+ terraformGeneratorMetadata: {
143
+ providerName: 'pagerduty',
144
+ providerVersion: '3.31.0',
145
+ providerVersionConstraint: '~> 3.0'
146
+ },
147
+ provider: config.provider,
148
+ dependsOn: config.dependsOn,
149
+ count: config.count,
150
+ lifecycle: config.lifecycle,
151
+ provisioners: config.provisioners,
152
+ connection: config.connection,
153
+ forEach: config.forEach
154
+ });
155
+ // contact_method - computed: false, optional: false, required: true
156
+ this._contactMethod = new UserNotificationRuleContactMethodOutputReference(this, "contact_method");
157
+ this._startDelayInMinutes = config.startDelayInMinutes;
158
+ this._urgency = config.urgency;
159
+ this._userId = config.userId;
160
+ this._contactMethod.internalValue = config.contactMethod;
161
+ }
162
+ // ==========
163
+ // ATTRIBUTES
164
+ // ==========
165
+ // id - computed: true, optional: false, required: false
166
+ get id() {
167
+ return this.getStringAttribute('id');
168
+ }
169
+ get startDelayInMinutes() {
170
+ return this.getNumberAttribute('start_delay_in_minutes');
171
+ }
172
+ set startDelayInMinutes(value) {
173
+ this._startDelayInMinutes = value;
174
+ }
175
+ // Temporarily expose input value. Use with caution.
176
+ get startDelayInMinutesInput() {
177
+ return this._startDelayInMinutes;
178
+ }
179
+ get urgency() {
180
+ return this.getStringAttribute('urgency');
181
+ }
182
+ set urgency(value) {
183
+ this._urgency = value;
184
+ }
185
+ // Temporarily expose input value. Use with caution.
186
+ get urgencyInput() {
187
+ return this._urgency;
188
+ }
189
+ get userId() {
190
+ return this.getStringAttribute('user_id');
191
+ }
192
+ set userId(value) {
193
+ this._userId = value;
194
+ }
195
+ // Temporarily expose input value. Use with caution.
196
+ get userIdInput() {
197
+ return this._userId;
198
+ }
199
+ get contactMethod() {
200
+ return this._contactMethod;
201
+ }
202
+ putContactMethod(value) {
203
+ this._contactMethod.internalValue = value;
204
+ }
205
+ // Temporarily expose input value. Use with caution.
206
+ get contactMethodInput() {
207
+ return this._contactMethod.internalValue;
208
+ }
209
+ // =========
210
+ // SYNTHESIS
211
+ // =========
212
+ synthesizeAttributes() {
213
+ return {
214
+ start_delay_in_minutes: cdktn.numberToTerraform(this._startDelayInMinutes),
215
+ urgency: cdktn.stringToTerraform(this._urgency),
216
+ user_id: cdktn.stringToTerraform(this._userId),
217
+ contact_method: userNotificationRuleContactMethodToTerraform(this._contactMethod.internalValue),
218
+ };
219
+ }
220
+ synthesizeHclAttributes() {
221
+ const attrs = {
222
+ start_delay_in_minutes: {
223
+ value: cdktn.numberToHclTerraform(this._startDelayInMinutes),
224
+ isBlock: false,
225
+ type: "simple",
226
+ storageClassType: "number",
227
+ },
228
+ urgency: {
229
+ value: cdktn.stringToHclTerraform(this._urgency),
230
+ isBlock: false,
231
+ type: "simple",
232
+ storageClassType: "string",
233
+ },
234
+ user_id: {
235
+ value: cdktn.stringToHclTerraform(this._userId),
236
+ isBlock: false,
237
+ type: "simple",
238
+ storageClassType: "string",
239
+ },
240
+ contact_method: {
241
+ value: userNotificationRuleContactMethodToHclTerraform(this._contactMethod.internalValue),
242
+ isBlock: true,
243
+ type: "struct",
244
+ storageClassType: "UserNotificationRuleContactMethod",
245
+ },
246
+ };
247
+ // remove undefined attributes
248
+ return Object.fromEntries(Object.entries(attrs).filter(([_, value]) => value !== undefined && value.value !== undefined));
249
+ }
250
+ }
251
+ exports.UserNotificationRule = UserNotificationRule;
252
+ _b = JSII_RTTI_SYMBOL_1;
253
+ UserNotificationRule[_b] = { fqn: "@cdktn/provider-pagerduty.userNotificationRule.UserNotificationRule", version: "15.0.0" };
254
+ // =================
255
+ // STATIC PROPERTIES
256
+ // =================
257
+ UserNotificationRule.tfResourceType = "pagerduty_user_notification_rule";
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXNlci1ub3RpZmljYXRpb24tcnVsZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBK0NBLG9HQVNDO0FBR0QsMEdBc0JDOztBQXhFRCwrQkFBK0I7QUFzQy9CLFNBQWdCLDRDQUE0QyxDQUFDLE1BQThEO0lBQ3pILElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLE1BQU0sQ0FBQztJQUFDLENBQUM7SUFDNUYsSUFBSSxLQUFLLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNuQyxNQUFNLElBQUksS0FBSyxDQUFDLG9IQUFvSCxDQUFDLENBQUM7SUFDeEksQ0FBQztJQUNELE9BQU87UUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE1BQU8sQ0FBQyxFQUFFLENBQUM7UUFDdkMsSUFBSSxFQUFFLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFPLENBQUMsSUFBSSxDQUFDO0tBQzVDLENBQUE7QUFDSCxDQUFDO0FBR0QsU0FBZ0IsK0NBQStDLENBQUMsTUFBOEQ7SUFDNUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sTUFBTSxDQUFDO0lBQUMsQ0FBQztJQUM1RixJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsb0hBQW9ILENBQUMsQ0FBQztJQUN4SSxDQUFDO0lBQ0QsTUFBTSxLQUFLLEdBQUc7UUFDWixFQUFFLEVBQUU7WUFDRixLQUFLLEVBQUUs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SkMsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQixvQkFBb0I7QUFDRyxtQ0FBYyxHQUFHLGtDQUFrQyxBQUFyQyxDQUFzQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29weXJpZ2h0IElCTSBDb3JwLiAyMDIxLCAyMDI2XG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTVBMLTIuMFxuICovXG5cbi8vIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy91c2VyX25vdGlmaWNhdGlvbl9ydWxlXG4vLyBnZW5lcmF0ZWQgZnJvbSB0ZXJyYWZvcm0gcmVzb3VyY2Ugc2NoZW1hXG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgY2RrdG4gZnJvbSAnY2RrdG4nO1xuXG4vLyBDb25maWd1cmF0aW9uXG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlck5vdGlmaWNhdGlvblJ1bGVDb25maWcgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1NZXRhQXJndW1lbnRzIHtcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvdXNlcl9ub3RpZmljYXRpb25fcnVsZSNzdGFydF9kZWxheV9pbl9taW51dGVzIFVzZXJOb3RpZmljYXRpb25SdWxlI3N0YXJ0X2RlbGF5X2luX21pbnV0ZXN9XG4gICovXG4gIHJlYWRvbmx5IHN0YXJ0RGVsYXlJbk1pbnV0ZXM6IG51bWJlcjtcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvdXNlcl9ub3RpZmljYXRpb25fcnVsZSN1cmdlbmN5IFVzZXJOb3RpZmljYXRpb25SdWxlI3VyZ2VuY3l9XG4gICovXG4gIHJlYWRvbmx5IHVyZ2VuY3k6IHN0cmluZztcbiAgLyoqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvdXNlcl9ub3RpZmljYXRpb25fcnVsZSN1c2VyX2lkIFVzZXJOb3RpZmljYXRpb25SdWxlI3VzZXJfaWR9XG4gICovXG4gIHJlYWRvbmx5IHVzZXJJZDogc3RyaW5nO1xuICAvKipcbiAgKiBjb250YWN0X21ldGhvZCBibG9ja1xuICAqXG4gICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvdXNlcl9ub3RpZmljYXRpb25fcnVsZSNjb250YWN0X21ldGhvZCBVc2VyTm90aWZpY2F0aW9uUnVsZSNjb250YWN0X21ldGhvZH1cbiAgKi9cbiAgcmVhZG9ubHkgY29udGFjdE1ldGhvZDogVXNlck5vdGlmaWNhdGlvblJ1bGVDb250YWN0TWV0aG9kO1xufVxuZXhwb3J0IGludGVyZmFjZSBVc2VyTm90aWZpY2F0aW9uUnVsZUNvbnRhY3RNZXRob2Qge1xuICAvKipcbiAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy91c2VyX25vdGlmaWNhdGlvbl9ydWxlI2lkIFVzZXJOb3RpZmljYXRpb25SdWxlI2lkfVxuICAqXG4gICogUGxlYXNlIGJlIGF3YXJlIHRoYXQgdGhlIGlkIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxsIHJlc291cmNlcyBpbiBUZXJyYWZvcm0gcHJvdmlkZXJzIHVzaW5nIGEgVGVycmFmb3JtIHByb3ZpZGVyIFNESyB2ZXJzaW9uIGJlbG93IDIuXG4gICogSWYgeW91IGV4cGVyaWVuY2UgcHJvYmxlbXMgc2V0dGluZyB0aGlzIHZhbHVlIGl0IG1pZ2h0IG5vdCBiZSBzZXR0YWJsZS4gUGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBwcm92aWRlciBkb2N1bWVudGF0aW9uIHRvIGVuc3VyZSBpdCBzaG91bGQgYmUgc2V0dGFibGUuXG4gICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIC8qKlxuICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3VzZXJfbm90aWZpY2F0aW9uX3J1bGUjdHlwZSBVc2VyTm90aWZpY2F0aW9uUnVsZSN0eXBlfVxuICAqL1xuICByZWFkb25seSB0eXBlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyTm90aWZpY2F0aW9uUnVsZUNvbnRhY3RNZXRob2RUb1RlcnJhZm9ybShzdHJ1Y3Q/OiBVc2VyTm90aWZpY2F0aW9uUnVsZUNvbnRhY3RNZXRob2QgfCBjZGt0bi5JUmVzb2x2YWJsZSk6IGFueSB7XG4gIGlmICghY2RrdG4uY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RuLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkgeyByZXR1cm4gc3RydWN0OyB9XG4gIGlmIChjZGt0bi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIik7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBpZDogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS5pZCksXG4gICAgdHlwZTogY2RrdG4uc3RyaW5nVG9UZXJyYWZvcm0oc3RydWN0IS50eXBlKSxcbiAgfVxufVxuXG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyTm90aWZpY2F0aW9uUnVsZUNvbnRhY3RNZXRob2RUb0hjbFRlcnJhZm9ybShzdHJ1Y3Q/OiBVc2VyTm90aWZpY2F0aW9uUnVsZUNvbnRhY3RNZXRob2QgfCBjZGt0bi5JUmVzb2x2YWJsZSk6IGFueSB7XG4gIGlmICghY2RrdG4uY2FuSW5zcGVjdChzdHJ1Y3QpIHx8IGNka3RuLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUoc3RydWN0KSkgeyByZXR1cm4gc3RydWN0OyB9XG4gIGlmIChjZGt0bi5pc0NvbXBsZXhFbGVtZW50KHN0cnVjdCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJBIGNvbXBsZXggZWxlbWVudCB3YXMgdXNlZCBhcyBjb25maWd1cmF0aW9uLCB0aGlzIGlzIG5vdCBzdXBwb3J0ZWQ6IGh0dHBzOi8vY2RrLnRmL2NvbXBsZXgtb2JqZWN0LWFzLWNvbmZpZ3VyYXRpb25cIik7XG4gIH1cbiAgY29uc3QgYXR0cnMgPSB7XG4gICAgaWQ6IHtcbiAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybShzdHJ1Y3QhLmlkKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgICB0eXBlOiB7XG4gICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0oc3RydWN0IS50eXBlKSxcbiAgICAgIGlzQmxvY2s6IGZhbHNlLFxuICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgfSxcbiAgfTtcblxuICAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNcbiAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhhdHRycykuZmlsdGVyKChbXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlLnZhbHVlICE9PSB1bmRlZmluZWQpKTtcbn1cblxuZXhwb3J0IGNsYXNzIFVzZXJOb3RpZmljYXRpb25SdWxlQ29udGFjdE1ldGhvZE91dHB1dFJlZmVyZW5jZSBleHRlbmRzIGNka3RuLkNvbXBsZXhPYmplY3Qge1xuICBwcml2YXRlIGlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXNvbHZhYmxlVmFsdWU/OiBjZGt0bi5JUmVzb2x2YWJsZTtcblxuICAvKipcbiAgKiBAcGFyYW0gdGVycmFmb3JtUmVzb3VyY2UgVGhlIHBhcmVudCByZXNvdXJjZVxuICAqIEBwYXJhbSB0ZXJyYWZvcm1BdHRyaWJ1dGUgVGhlIGF0dHJpYnV0ZSBvbiB0aGUgcGFyZW50IHJlc291cmNlIHRoaXMgY2xhc3MgaXMgcmVmZXJlbmNpbmdcbiAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKHRlcnJhZm9ybVJlc291cmNlOiBjZGt0bi5JSW50ZXJwb2xhdGluZ1BhcmVudCwgdGVycmFmb3JtQXR0cmlidXRlOiBzdHJpbmcpIHtcbiAgICBzdXBlcih0ZXJyYWZvcm1SZXNvdXJjZSwgdGVycmFmb3JtQXR0cmlidXRlLCBmYWxzZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGludGVybmFsVmFsdWUoKTogVXNlck5vdGlmaWNhdGlvblJ1bGVDb250YWN0TWV0aG9kIHwgY2RrdG4uSVJlc29sdmFibGUgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLnJlc29sdmFibGVWYWx1ZSkge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2YWJsZVZhbHVlO1xuICAgIH1cbiAgICBsZXQgaGFzQW55VmFsdWVzID0gdGhpcy5pc0VtcHR5T2JqZWN0O1xuICAgIGNvbnN0IGludGVybmFsVmFsdWVSZXN1bHQ6IGFueSA9IHt9O1xuICAgIGlmICh0aGlzLl9pZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC5pZCA9IHRoaXMuX2lkO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBoYXNBbnlWYWx1ZXMgPSB0cnVlO1xuICAgICAgaW50ZXJuYWxWYWx1ZVJlc3VsdC50eXBlID0gdGhpcy5fdHlwZTtcbiAgICB9XG4gICAgcmV0dXJuIGhhc0FueVZhbHVlcyA/IGludGVybmFsVmFsdWVSZXN1bHQgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgc2V0IGludGVybmFsVmFsdWUodmFsdWU6IFVzZXJOb3RpZmljYXRpb25SdWxlQ29udGFjdE1ldGhvZCB8IGNka3RuLklSZXNvbHZhYmxlIHwgdW5kZWZpbmVkKSB7XG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuaXNFbXB0eU9iamVjdCA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXNvbHZhYmxlVmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLl9pZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuX3R5cGUgPSB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGVsc2UgaWYgKGNka3RuLlRva2VuaXphdGlvbi5pc1Jlc29sdmFibGUodmFsdWUpKSB7XG4gICAgICB0aGlzLmlzRW1wdHlPYmplY3QgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdmFsdWU7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5pc0VtcHR5T2JqZWN0ID0gT2JqZWN0LmtleXModmFsdWUpLmxlbmd0aCA9PT0gMDtcbiAgICAgIHRoaXMucmVzb2x2YWJsZVZhbHVlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5faWQgPSB2YWx1ZS5pZDtcbiAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZS50eXBlO1xuICAgIH1cbiAgfVxuXG4gIC8vIGlkIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX2lkPzogc3RyaW5nOyBcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cbiAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgaWRJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5faWQ7XG4gIH1cblxuICAvLyB0eXBlIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX3R5cGU/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0U3RyaW5nQXR0cmlidXRlKCd0eXBlJyk7XG4gIH1cbiAgcHVibGljIHNldCB0eXBlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl90eXBlID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHR5cGVJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdHlwZTtcbiAgfVxufVxuXG4vKipcbiogUmVwcmVzZW50cyBhIHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvcGFnZXJkdXR5L3BhZ2VyZHV0eS8zLjMxLjAvZG9jcy9yZXNvdXJjZXMvdXNlcl9ub3RpZmljYXRpb25fcnVsZSBwYWdlcmR1dHlfdXNlcl9ub3RpZmljYXRpb25fcnVsZX1cbiovXG5leHBvcnQgY2xhc3MgVXNlck5vdGlmaWNhdGlvblJ1bGUgZXh0ZW5kcyBjZGt0bi5UZXJyYWZvcm1SZXNvdXJjZSB7XG5cbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgLy8gU1RBVElDIFBST1BFUlRJRVNcbiAgLy8gPT09PT09PT09PT09PT09PT1cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSB0ZlJlc291cmNlVHlwZSA9IFwicGFnZXJkdXR5X3VzZXJfbm90aWZpY2F0aW9uX3J1bGVcIjtcblxuICAvLyA9PT09PT09PT09PT09PVxuICAvLyBTVEFUSUMgTWV0aG9kc1xuICAvLyA9PT09PT09PT09PT09PVxuICAvKipcbiAgKiBHZW5lcmF0ZXMgQ0RLVE4gY29kZSBmb3IgaW1wb3J0aW5nIGEgVXNlck5vdGlmaWNhdGlvblJ1bGUgcmVzb3VyY2UgdXBvbiBydW5uaW5nIFwiY2RrdG4gcGxhbiA8c3RhY2stbmFtZT5cIlxuICAqIEBwYXJhbSBzY29wZSBUaGUgc2NvcGUgaW4gd2hpY2ggdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0XG4gICogQHBhcmFtIGltcG9ydFRvSWQgVGhlIGNvbnN0cnVjdCBpZCB1c2VkIGluIHRoZSBnZW5lcmF0ZWQgY29uZmlnIGZvciB0aGUgVXNlck5vdGlmaWNhdGlvblJ1bGUgdG8gaW1wb3J0XG4gICogQHBhcmFtIGltcG9ydEZyb21JZCBUaGUgaWQgb2YgdGhlIGV4aXN0aW5nIFVzZXJOb3RpZmljYXRpb25SdWxlIHRoYXQgc2hvdWxkIGJlIGltcG9ydGVkLiBSZWZlciB0byB0aGUge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9wYWdlcmR1dHkvcGFnZXJkdXR5LzMuMzEuMC9kb2NzL3Jlc291cmNlcy91c2VyX25vdGlmaWNhdGlvbl9ydWxlI2ltcG9ydCBpbXBvcnQgc2VjdGlvbn0gaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyByZXNvdXJjZSBmb3IgdGhlIGlkIHRvIHVzZVxuICAqIEBwYXJhbSBwcm92aWRlcj8gT3B0aW9uYWwgaW5zdGFuY2Ugb2YgdGhlIHByb3ZpZGVyIHdoZXJlIHRoZSBVc2VyTm90aWZpY2F0aW9uUnVsZSB0byBpbXBvcnQgaXMgZm91bmRcbiAgKi9cbiAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZUNvbmZpZ0ZvckltcG9ydChzY29wZTogQ29uc3RydWN0LCBpbXBvcnRUb0lkOiBzdHJpbmcsIGltcG9ydEZyb21JZDogc3RyaW5nLCBwcm92aWRlcj86IGNka3RuLlRlcnJhZm9ybVByb3ZpZGVyKSB7XG4gICAgICAgIHJldHVybiBuZXcgY2RrdG4uSW1wb3J0YWJsZVJlc291cmNlKHNjb3BlLCBpbXBvcnRUb0lkLCB7IHRlcnJhZm9ybVJlc291cmNlVHlwZTogXCJwYWdlcmR1dHlfdXNlcl9ub3RpZmljYXRpb25fcnVsZVwiLCBpbXBvcnRJZDogaW1wb3J0RnJvbUlkLCBwcm92aWRlciB9KTtcbiAgICAgIH1cblxuICAvLyA9PT09PT09PT09PVxuICAvLyBJTklUSUFMSVpFUlxuICAvLyA9PT09PT09PT09PVxuXG4gIC8qKlxuICAqIENyZWF0ZSBhIG5ldyB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL3BhZ2VyZHV0eS9wYWdlcmR1dHkvMy4zMS4wL2RvY3MvcmVzb3VyY2VzL3VzZXJfbm90aWZpY2F0aW9uX3J1bGUgcGFnZXJkdXR5X3VzZXJfbm90aWZpY2F0aW9uX3J1bGV9IFJlc291cmNlXG4gICpcbiAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdFxuICAqIEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC4gTXVzdCBiZSB1bmlxdWUgYW1vbmdzdCBzaWJsaW5ncyBpbiB0aGUgc2FtZSBzY29wZVxuICAqIEBwYXJhbSBvcHRpb25zIFVzZXJOb3RpZmljYXRpb25SdWxlQ29uZmlnXG4gICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb25maWc6IFVzZXJOb3RpZmljYXRpb25SdWxlQ29uZmlnKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICB0ZXJyYWZvcm1SZXNvdXJjZVR5cGU6ICdwYWdlcmR1dHlfdXNlcl9ub3RpZmljYXRpb25fcnVsZScsXG4gICAgICB0ZXJyYWZvcm1HZW5lcmF0b3JNZXRhZGF0YToge1xuICAgICAgICBwcm92aWRlck5hbWU6ICdwYWdlcmR1dHknLFxuICAgICAgICBwcm92aWRlclZlcnNpb246ICczLjMxLjAnLFxuICAgICAgICBwcm92aWRlclZlcnNpb25Db25zdHJhaW50OiAnfj4gMy4wJ1xuICAgICAgfSxcbiAgICAgIHByb3ZpZGVyOiBjb25maWcucHJvdmlkZXIsXG4gICAgICBkZXBlbmRzT246IGNvbmZpZy5kZXBlbmRzT24sXG4gICAgICBjb3VudDogY29uZmlnLmNvdW50LFxuICAgICAgbGlmZWN5Y2xlOiBjb25maWcubGlmZWN5Y2xlLFxuICAgICAgcHJvdmlzaW9uZXJzOiBjb25maWcucHJvdmlzaW9uZXJzLFxuICAgICAgY29ubmVjdGlvbjogY29uZmlnLmNvbm5lY3Rpb24sXG4gICAgICBmb3JFYWNoOiBjb25maWcuZm9yRWFjaFxuICAgIH0pO1xuICAgIHRoaXMuX3N0YXJ0RGVsYXlJbk1pbnV0ZXMgPSBjb25maWcuc3RhcnREZWxheUluTWludXRlcztcbiAgICB0aGlzLl91cmdlbmN5ID0gY29uZmlnLnVyZ2VuY3k7XG4gICAgdGhpcy5fdXNlcklkID0gY29uZmlnLnVzZXJJZDtcbiAgICB0aGlzLl9jb250YWN0TWV0aG9kLmludGVybmFsVmFsdWUgPSBjb25maWcuY29udGFjdE1ldGhvZDtcbiAgfVxuXG4gIC8vID09PT09PT09PT1cbiAgLy8gQVRUUklCVVRFU1xuICAvLyA9PT09PT09PT09XG5cbiAgLy8gaWQgLSBjb21wdXRlZDogdHJ1ZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogZmFsc2VcbiAgcHVibGljIGdldCBpZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ2lkJyk7XG4gIH1cblxuICAvLyBzdGFydF9kZWxheV9pbl9taW51dGVzIC0gY29tcHV0ZWQ6IGZhbHNlLCBvcHRpb25hbDogZmFsc2UsIHJlcXVpcmVkOiB0cnVlXG4gIHByaXZhdGUgX3N0YXJ0RGVsYXlJbk1pbnV0ZXM/OiBudW1iZXI7IFxuICBwdWJsaWMgZ2V0IHN0YXJ0RGVsYXlJbk1pbnV0ZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0TnVtYmVyQXR0cmlidXRlKCdzdGFydF9kZWxheV9pbl9taW51dGVzJyk7XG4gIH1cbiAgcHVibGljIHNldCBzdGFydERlbGF5SW5NaW51dGVzKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zdGFydERlbGF5SW5NaW51dGVzID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHN0YXJ0RGVsYXlJbk1pbnV0ZXNJbnB1dCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnREZWxheUluTWludXRlcztcbiAgfVxuXG4gIC8vIHVyZ2VuY3kgLSBjb21wdXRlZDogZmFsc2UsIG9wdGlvbmFsOiBmYWxzZSwgcmVxdWlyZWQ6IHRydWVcbiAgcHJpdmF0ZSBfdXJnZW5jeT86IHN0cmluZzsgXG4gIHB1YmxpYyBnZXQgdXJnZW5jeSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3VyZ2VuY3knKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVyZ2VuY3kodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3VyZ2VuY3kgPSB2YWx1ZTtcbiAgfVxuICAvLyBUZW1wb3JhcmlseSBleHBvc2UgaW5wdXQgdmFsdWUuIFVzZSB3aXRoIGNhdXRpb24uXG4gIHB1YmxpYyBnZXQgdXJnZW5jeUlucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl91cmdlbmN5O1xuICB9XG5cbiAgLy8gdXNlcl9pZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF91c2VySWQ/OiBzdHJpbmc7IFxuICBwdWJsaWMgZ2V0IHVzZXJJZCgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRTdHJpbmdBdHRyaWJ1dGUoJ3VzZXJfaWQnKTtcbiAgfVxuICBwdWJsaWMgc2V0IHVzZXJJZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXNlcklkID0gdmFsdWU7XG4gIH1cbiAgLy8gVGVtcG9yYXJpbHkgZXhwb3NlIGlucHV0IHZhbHVlLiBVc2Ugd2l0aCBjYXV0aW9uLlxuICBwdWJsaWMgZ2V0IHVzZXJJZElucHV0KCkge1xuICAgIHJldHVybiB0aGlzLl91c2VySWQ7XG4gIH1cblxuICAvLyBjb250YWN0X21ldGhvZCAtIGNvbXB1dGVkOiBmYWxzZSwgb3B0aW9uYWw6IGZhbHNlLCByZXF1aXJlZDogdHJ1ZVxuICBwcml2YXRlIF9jb250YWN0TWV0aG9kID0gbmV3IFVzZXJOb3RpZmljYXRpb25SdWxlQ29udGFjdE1ldGhvZE91dHB1dFJlZmVyZW5jZSh0aGlzLCBcImNvbnRhY3RfbWV0aG9kXCIpO1xuICBwdWJsaWMgZ2V0IGNvbnRhY3RNZXRob2QoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRhY3RNZXRob2Q7XG4gIH1cbiAgcHVibGljIHB1dENvbnRhY3RNZXRob2QodmFsdWU6IFVzZXJOb3RpZmljYXRpb25SdWxlQ29udGFjdE1ldGhvZCkge1xuICAgIHRoaXMuX2NvbnRhY3RNZXRob2QuaW50ZXJuYWxWYWx1ZSA9IHZhbHVlO1xuICB9XG4gIC8vIFRlbXBvcmFyaWx5IGV4cG9zZSBpbnB1dCB2YWx1ZS4gVXNlIHdpdGggY2F1dGlvbi5cbiAgcHVibGljIGdldCBjb250YWN0TWV0aG9kSW5wdXQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbnRhY3RNZXRob2QuaW50ZXJuYWxWYWx1ZTtcbiAgfVxuXG4gIC8vID09PT09PT09PVxuICAvLyBTWU5USEVTSVNcbiAgLy8gPT09PT09PT09XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnRfZGVsYXlfaW5fbWludXRlczogY2RrdG4ubnVtYmVyVG9UZXJyYWZvcm0odGhpcy5fc3RhcnREZWxheUluTWludXRlcyksXG4gICAgICB1cmdlbmN5OiBjZGt0bi5zdHJpbmdUb1RlcnJhZm9ybSh0aGlzLl91cmdlbmN5KSxcbiAgICAgIHVzZXJfaWQ6IGNka3RuLnN0cmluZ1RvVGVycmFmb3JtKHRoaXMuX3VzZXJJZCksXG4gICAgICBjb250YWN0X21ldGhvZDogdXNlck5vdGlmaWNhdGlvblJ1bGVDb250YWN0TWV0aG9kVG9UZXJyYWZvcm0odGhpcy5fY29udGFjdE1ldGhvZC5pbnRlcm5hbFZhbHVlKSxcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIHN5bnRoZXNpemVIY2xBdHRyaWJ1dGVzKCk6IHsgW25hbWU6IHN0cmluZ106IGFueSB9IHtcbiAgICBjb25zdCBhdHRycyA9IHtcbiAgICAgIHN0YXJ0X2RlbGF5X2luX21pbnV0ZXM6IHtcbiAgICAgICAgdmFsdWU6IGNka3RuLm51bWJlclRvSGNsVGVycmFmb3JtKHRoaXMuX3N0YXJ0RGVsYXlJbk1pbnV0ZXMpLFxuICAgICAgICBpc0Jsb2NrOiBmYWxzZSxcbiAgICAgICAgdHlwZTogXCJzaW1wbGVcIixcbiAgICAgICAgc3RvcmFnZUNsYXNzVHlwZTogXCJudW1iZXJcIixcbiAgICAgIH0sXG4gICAgICB1cmdlbmN5OiB7XG4gICAgICAgIHZhbHVlOiBjZGt0bi5zdHJpbmdUb0hjbFRlcnJhZm9ybSh0aGlzLl91cmdlbmN5KSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgdXNlcl9pZDoge1xuICAgICAgICB2YWx1ZTogY2RrdG4uc3RyaW5nVG9IY2xUZXJyYWZvcm0odGhpcy5fdXNlcklkKSxcbiAgICAgICAgaXNCbG9jazogZmFsc2UsXG4gICAgICAgIHR5cGU6IFwic2ltcGxlXCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwic3RyaW5nXCIsXG4gICAgICB9LFxuICAgICAgY29udGFjdF9tZXRob2Q6IHtcbiAgICAgICAgdmFsdWU6IHVzZXJOb3RpZmljYXRpb25SdWxlQ29udGFjdE1ldGhvZFRvSGNsVGVycmFmb3JtKHRoaXMuX2NvbnRhY3RNZXRob2QuaW50ZXJuYWxWYWx1ZSksXG4gICAgICAgIGlzQmxvY2s6IHRydWUsXG4gICAgICAgIHR5cGU6IFwic3RydWN0XCIsXG4gICAgICAgIHN0b3JhZ2VDbGFzc1R5cGU6IFwiVXNlck5vdGlmaWNhdGlvblJ1bGVDb250YWN0TWV0aG9kXCIsXG4gICAgICB9LFxuICAgIH07XG5cbiAgICAvLyByZW1vdmUgdW5kZWZpbmVkIGF0dHJpYnV0ZXNcbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKE9iamVjdC5lbnRyaWVzKGF0dHJzKS5maWx0ZXIoKFtfLCB2YWx1ZV0pID0+IHZhbHVlICE9PSB1bmRlZmluZWQgJiYgdmFsdWUudmFsdWUgIT09IHVuZGVmaW5lZCApKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,276 @@
1
+ /**
2
+ * Copyright IBM Corp. 2021, 2026
3
+ * SPDX-License-Identifier: MPL-2.0
4
+ */
5
+ import { Construct } from 'constructs';
6
+ import * as cdktn from 'cdktn';
7
+ export interface WebhookSubscriptionConfig extends cdktn.TerraformMetaArguments {
8
+ /**
9
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#active WebhookSubscription#active}
10
+ */
11
+ readonly active?: boolean | cdktn.IResolvable;
12
+ /**
13
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#description WebhookSubscription#description}
14
+ */
15
+ readonly description?: string;
16
+ /**
17
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#events WebhookSubscription#events}
18
+ */
19
+ readonly events: string[];
20
+ /**
21
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#id WebhookSubscription#id}
22
+ *
23
+ * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
24
+ * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
25
+ */
26
+ readonly id?: string;
27
+ /**
28
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#type WebhookSubscription#type}
29
+ */
30
+ readonly type?: string;
31
+ /**
32
+ * delivery_method block
33
+ *
34
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#delivery_method WebhookSubscription#delivery_method}
35
+ */
36
+ readonly deliveryMethod: WebhookSubscriptionDeliveryMethod[] | cdktn.IResolvable;
37
+ /**
38
+ * filter block
39
+ *
40
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#filter WebhookSubscription#filter}
41
+ */
42
+ readonly filter: WebhookSubscriptionFilter[] | cdktn.IResolvable;
43
+ }
44
+ export interface WebhookSubscriptionDeliveryMethodCustomHeader {
45
+ /**
46
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#name WebhookSubscription#name}
47
+ */
48
+ readonly name: string;
49
+ /**
50
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#value WebhookSubscription#value}
51
+ */
52
+ readonly value: string;
53
+ }
54
+ export declare function webhookSubscriptionDeliveryMethodCustomHeaderToTerraform(struct?: WebhookSubscriptionDeliveryMethodCustomHeader | cdktn.IResolvable): any;
55
+ export declare function webhookSubscriptionDeliveryMethodCustomHeaderToHclTerraform(struct?: WebhookSubscriptionDeliveryMethodCustomHeader | cdktn.IResolvable): any;
56
+ export declare class WebhookSubscriptionDeliveryMethodCustomHeaderOutputReference extends cdktn.ComplexObject {
57
+ private isEmptyObject;
58
+ private resolvableValue?;
59
+ /**
60
+ * @param terraformResource The parent resource
61
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
62
+ * @param complexObjectIndex the index of this item in the list
63
+ * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
64
+ */
65
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
66
+ get internalValue(): WebhookSubscriptionDeliveryMethodCustomHeader | cdktn.IResolvable | undefined;
67
+ set internalValue(value: WebhookSubscriptionDeliveryMethodCustomHeader | cdktn.IResolvable | undefined);
68
+ private _name?;
69
+ get name(): string;
70
+ set name(value: string);
71
+ get nameInput(): string | undefined;
72
+ private _value?;
73
+ get value(): string;
74
+ set value(value: string);
75
+ get valueInput(): string | undefined;
76
+ }
77
+ export declare class WebhookSubscriptionDeliveryMethodCustomHeaderList extends cdktn.ComplexList {
78
+ protected terraformResource: cdktn.IInterpolatingParent;
79
+ protected terraformAttribute: string;
80
+ protected wrapsSet: boolean;
81
+ internalValue?: WebhookSubscriptionDeliveryMethodCustomHeader[] | cdktn.IResolvable;
82
+ /**
83
+ * @param terraformResource The parent resource
84
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
85
+ * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
86
+ */
87
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
88
+ /**
89
+ * @param index the index of the item to return
90
+ */
91
+ get(index: number): WebhookSubscriptionDeliveryMethodCustomHeaderOutputReference;
92
+ }
93
+ export interface WebhookSubscriptionDeliveryMethod {
94
+ /**
95
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#temporarily_disabled WebhookSubscription#temporarily_disabled}
96
+ */
97
+ readonly temporarilyDisabled?: boolean | cdktn.IResolvable;
98
+ /**
99
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#type WebhookSubscription#type}
100
+ */
101
+ readonly type?: string;
102
+ /**
103
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#url WebhookSubscription#url}
104
+ */
105
+ readonly url?: string;
106
+ /**
107
+ * custom_header block
108
+ *
109
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#custom_header WebhookSubscription#custom_header}
110
+ */
111
+ readonly customHeader?: WebhookSubscriptionDeliveryMethodCustomHeader[] | cdktn.IResolvable;
112
+ }
113
+ export declare function webhookSubscriptionDeliveryMethodToTerraform(struct?: WebhookSubscriptionDeliveryMethod | cdktn.IResolvable): any;
114
+ export declare function webhookSubscriptionDeliveryMethodToHclTerraform(struct?: WebhookSubscriptionDeliveryMethod | cdktn.IResolvable): any;
115
+ export declare class WebhookSubscriptionDeliveryMethodOutputReference extends cdktn.ComplexObject {
116
+ private isEmptyObject;
117
+ private resolvableValue?;
118
+ /**
119
+ * @param terraformResource The parent resource
120
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
121
+ * @param complexObjectIndex the index of this item in the list
122
+ * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
123
+ */
124
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
125
+ get internalValue(): WebhookSubscriptionDeliveryMethod | cdktn.IResolvable | undefined;
126
+ set internalValue(value: WebhookSubscriptionDeliveryMethod | cdktn.IResolvable | undefined);
127
+ private _temporarilyDisabled?;
128
+ get temporarilyDisabled(): boolean | cdktn.IResolvable;
129
+ set temporarilyDisabled(value: boolean | cdktn.IResolvable);
130
+ resetTemporarilyDisabled(): void;
131
+ get temporarilyDisabledInput(): boolean | cdktn.IResolvable | undefined;
132
+ private _type?;
133
+ get type(): string;
134
+ set type(value: string);
135
+ resetType(): void;
136
+ get typeInput(): string | undefined;
137
+ private _url?;
138
+ get url(): string;
139
+ set url(value: string);
140
+ resetUrl(): void;
141
+ get urlInput(): string | undefined;
142
+ private _customHeader;
143
+ get customHeader(): WebhookSubscriptionDeliveryMethodCustomHeaderList;
144
+ putCustomHeader(value: WebhookSubscriptionDeliveryMethodCustomHeader[] | cdktn.IResolvable): void;
145
+ resetCustomHeader(): void;
146
+ get customHeaderInput(): cdktn.IResolvable | WebhookSubscriptionDeliveryMethodCustomHeader[] | undefined;
147
+ }
148
+ export declare class WebhookSubscriptionDeliveryMethodList extends cdktn.ComplexList {
149
+ protected terraformResource: cdktn.IInterpolatingParent;
150
+ protected terraformAttribute: string;
151
+ protected wrapsSet: boolean;
152
+ internalValue?: WebhookSubscriptionDeliveryMethod[] | cdktn.IResolvable;
153
+ /**
154
+ * @param terraformResource The parent resource
155
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
156
+ * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
157
+ */
158
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
159
+ /**
160
+ * @param index the index of the item to return
161
+ */
162
+ get(index: number): WebhookSubscriptionDeliveryMethodOutputReference;
163
+ }
164
+ export interface WebhookSubscriptionFilter {
165
+ /**
166
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#id WebhookSubscription#id}
167
+ *
168
+ * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
169
+ * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
170
+ */
171
+ readonly id?: string;
172
+ /**
173
+ * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#type WebhookSubscription#type}
174
+ */
175
+ readonly type: string;
176
+ }
177
+ export declare function webhookSubscriptionFilterToTerraform(struct?: WebhookSubscriptionFilter | cdktn.IResolvable): any;
178
+ export declare function webhookSubscriptionFilterToHclTerraform(struct?: WebhookSubscriptionFilter | cdktn.IResolvable): any;
179
+ export declare class WebhookSubscriptionFilterOutputReference extends cdktn.ComplexObject {
180
+ private isEmptyObject;
181
+ private resolvableValue?;
182
+ /**
183
+ * @param terraformResource The parent resource
184
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
185
+ * @param complexObjectIndex the index of this item in the list
186
+ * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
187
+ */
188
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
189
+ get internalValue(): WebhookSubscriptionFilter | cdktn.IResolvable | undefined;
190
+ set internalValue(value: WebhookSubscriptionFilter | cdktn.IResolvable | undefined);
191
+ private _id?;
192
+ get id(): string;
193
+ set id(value: string);
194
+ resetId(): void;
195
+ get idInput(): string | undefined;
196
+ private _type?;
197
+ get type(): string;
198
+ set type(value: string);
199
+ get typeInput(): string | undefined;
200
+ }
201
+ export declare class WebhookSubscriptionFilterList extends cdktn.ComplexList {
202
+ protected terraformResource: cdktn.IInterpolatingParent;
203
+ protected terraformAttribute: string;
204
+ protected wrapsSet: boolean;
205
+ internalValue?: WebhookSubscriptionFilter[] | cdktn.IResolvable;
206
+ /**
207
+ * @param terraformResource The parent resource
208
+ * @param terraformAttribute The attribute on the parent resource this class is referencing
209
+ * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
210
+ */
211
+ constructor(terraformResource: cdktn.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
212
+ /**
213
+ * @param index the index of the item to return
214
+ */
215
+ get(index: number): WebhookSubscriptionFilterOutputReference;
216
+ }
217
+ /**
218
+ * Represents a {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription pagerduty_webhook_subscription}
219
+ */
220
+ export declare class WebhookSubscription extends cdktn.TerraformResource {
221
+ static readonly tfResourceType = "pagerduty_webhook_subscription";
222
+ /**
223
+ * Generates CDKTN code for importing a WebhookSubscription resource upon running "cdktn plan <stack-name>"
224
+ * @param scope The scope in which to define this construct
225
+ * @param importToId The construct id used in the generated config for the WebhookSubscription to import
226
+ * @param importFromId The id of the existing WebhookSubscription that should be imported. Refer to the {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription#import import section} in the documentation of this resource for the id to use
227
+ * @param provider? Optional instance of the provider where the WebhookSubscription to import is found
228
+ */
229
+ static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktn.TerraformProvider): cdktn.ImportableResource;
230
+ /**
231
+ * Create a new {@link https://registry.terraform.io/providers/pagerduty/pagerduty/3.31.0/docs/resources/webhook_subscription pagerduty_webhook_subscription} Resource
232
+ *
233
+ * @param scope The scope in which to define this construct
234
+ * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
235
+ * @param options WebhookSubscriptionConfig
236
+ */
237
+ constructor(scope: Construct, id: string, config: WebhookSubscriptionConfig);
238
+ private _active?;
239
+ get active(): boolean | cdktn.IResolvable;
240
+ set active(value: boolean | cdktn.IResolvable);
241
+ resetActive(): void;
242
+ get activeInput(): boolean | cdktn.IResolvable | undefined;
243
+ private _description?;
244
+ get description(): string;
245
+ set description(value: string);
246
+ resetDescription(): void;
247
+ get descriptionInput(): string | undefined;
248
+ private _events?;
249
+ get events(): string[];
250
+ set events(value: string[]);
251
+ get eventsInput(): string[] | undefined;
252
+ private _id?;
253
+ get id(): string;
254
+ set id(value: string);
255
+ resetId(): void;
256
+ get idInput(): string | undefined;
257
+ private _type?;
258
+ get type(): string;
259
+ set type(value: string);
260
+ resetType(): void;
261
+ get typeInput(): string | undefined;
262
+ private _deliveryMethod;
263
+ get deliveryMethod(): WebhookSubscriptionDeliveryMethodList;
264
+ putDeliveryMethod(value: WebhookSubscriptionDeliveryMethod[] | cdktn.IResolvable): void;
265
+ get deliveryMethodInput(): cdktn.IResolvable | WebhookSubscriptionDeliveryMethod[] | undefined;
266
+ private _filter;
267
+ get filter(): WebhookSubscriptionFilterList;
268
+ putFilter(value: WebhookSubscriptionFilter[] | cdktn.IResolvable): void;
269
+ get filterInput(): cdktn.IResolvable | WebhookSubscriptionFilter[] | undefined;
270
+ protected synthesizeAttributes(): {
271
+ [name: string]: any;
272
+ };
273
+ protected synthesizeHclAttributes(): {
274
+ [name: string]: any;
275
+ };
276
+ }