@netforbpo/aws-cdk-aws-connect-lib 0.2.1

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.
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Instance = exports.IdentityManagementType = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ const cxschema = require("aws-cdk-lib/cloud-assembly-schema");
8
+ var IdentityManagementType;
9
+ (function (IdentityManagementType) {
10
+ IdentityManagementType["SAML"] = "SAML";
11
+ IdentityManagementType["CONNECT_MANAGED"] = "CONNECT_MANAGED";
12
+ IdentityManagementType["EXISTING_DIRECTORY"] = "EXISTING_DIRECTORY";
13
+ })(IdentityManagementType || (exports.IdentityManagementType = IdentityManagementType = {}));
14
+ class InstanceBase extends aws_cdk_lib_1.Resource {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.storageResourceTypes = new Set();
18
+ }
19
+ addStorageConfig(config, id = undefined) {
20
+ if (this.storageResourceTypes.has(config.resourceType)) {
21
+ aws_cdk_lib_1.Annotations.of(this).addError(`Duplicate resourceType ${config.resourceType} in storageConfig`);
22
+ return;
23
+ }
24
+ if (!config.checkConfig()) {
25
+ aws_cdk_lib_1.Annotations.of(this).addError(`Invalid storage configuration for resourceType ${config.resourceType} and storageType ${config.storageType}`);
26
+ return;
27
+ }
28
+ this.storageResourceTypes.add(config.resourceType);
29
+ new aws_cdk_lib_1.aws_connect.CfnInstanceStorageConfig(this, id || `StorageConfig-${config.resourceType}`, config.asStorageConfigProps(this.instanceArn));
30
+ }
31
+ associateLambdaFunction(id, func) {
32
+ new aws_cdk_lib_1.aws_connect.CfnIntegrationAssociation(this, id, {
33
+ instanceId: this.instanceArn,
34
+ integrationType: 'LAMBDA_FUNCTION',
35
+ integrationArn: func.functionArn,
36
+ });
37
+ }
38
+ associateLexBot(id, bot) {
39
+ new aws_cdk_lib_1.aws_connect.CfnIntegrationAssociation(this, id, {
40
+ instanceId: this.instanceArn,
41
+ integrationType: 'LEX_BOT',
42
+ integrationArn: bot.botAliasRef.botAliasArn,
43
+ });
44
+ }
45
+ }
46
+ class LookedUpInstance extends InstanceBase {
47
+ constructor(scope, id, props, isIncomplete) {
48
+ super(scope, id, {
49
+ region: props.region,
50
+ account: props.ownerAccountId,
51
+ });
52
+ this.instanceId = props.instanceId;
53
+ this.instanceArn = props.instanceArn;
54
+ this.instanceName = props.instanceName;
55
+ this.incompleteInstanceDefinition = isIncomplete;
56
+ }
57
+ }
58
+ const DUMMY_INSTANCE_PROPS = {
59
+ instanceArn: 'instance-arn',
60
+ instanceId: 'instance-12345',
61
+ };
62
+ class Instance extends InstanceBase {
63
+ static fromLookup(scope, id, options) {
64
+ if (aws_cdk_lib_1.Token.isUnresolved(options.instanceId)
65
+ || aws_cdk_lib_1.Token.isUnresolved(options.instanceName)
66
+ || aws_cdk_lib_1.Token.isUnresolved(options.instanceArn)) {
67
+ throw new aws_cdk_lib_1.ValidationError('All arguments to Instance.fromLookup() must be concrete (no Tokens)', scope);
68
+ }
69
+ const filter = {};
70
+ if (options.instanceArn) {
71
+ filter.exactIdentifier = options.instanceArn;
72
+ }
73
+ if (options.instanceId) {
74
+ filter.propertyMatch || (filter.propertyMatch = {});
75
+ filter.propertyMatch.Id = options.instanceId;
76
+ }
77
+ if (options.instanceName) {
78
+ filter.propertyMatch || (filter.propertyMatch = {});
79
+ filter.propertyMatch.InstanceAlias = options.instanceName;
80
+ }
81
+ const response = aws_cdk_lib_1.ContextProvider.getValue(scope, {
82
+ provider: cxschema.ContextProvider.CC_API_PROVIDER,
83
+ props: {
84
+ typeName: 'AWS::Connect::Instance',
85
+ ...filter,
86
+ propertiesToReturn: ['Arn', 'InstanceAlias', 'Id', 'Tags'],
87
+ expectedMatchCount: 'exactly-one',
88
+ },
89
+ dummyValue: undefined,
90
+ }).value;
91
+ let instance = undefined;
92
+ if (response && response[0]) {
93
+ instance = {
94
+ instanceArn: response[0].Arn,
95
+ instanceId: response[0].Id,
96
+ instanceName: response[0].InstanceAlias,
97
+ };
98
+ }
99
+ return new LookedUpInstance(scope, id, instance ?? DUMMY_INSTANCE_PROPS, instance === undefined);
100
+ }
101
+ constructor(scope, id, props) {
102
+ super(scope, id);
103
+ const attributes = {
104
+ ...props.telephonyConfig,
105
+ ...props.pollyConfig,
106
+ ...props.otherConfig,
107
+ };
108
+ if (props.identityType === IdentityManagementType.EXISTING_DIRECTORY && !props.directoryId) {
109
+ aws_cdk_lib_1.Annotations.of(this).addError('directoryId is required when identityType is set to EXISTING_DIRECTORY');
110
+ }
111
+ if (props.identityType !== IdentityManagementType.EXISTING_DIRECTORY && !props.instanceAlias) {
112
+ aws_cdk_lib_1.Annotations.of(this).addError('instanceAlias is required when identityType is set to CONNECT_MANAGED or SAML');
113
+ }
114
+ this.instanceName = props.instanceAlias;
115
+ this.instance = new aws_cdk_lib_1.aws_connect.CfnInstance(this, 'Instance', {
116
+ attributes,
117
+ identityManagementType: props.identityType,
118
+ instanceAlias: props.instanceAlias,
119
+ });
120
+ if (props.storageConfigs) {
121
+ for (const config of props.storageConfigs) {
122
+ this.addStorageConfig(config);
123
+ }
124
+ }
125
+ }
126
+ get instanceArn() {
127
+ return this.instance.attrArn;
128
+ }
129
+ get instanceId() {
130
+ return this.instance.ref;
131
+ }
132
+ }
133
+ exports.Instance = Instance;
134
+ _a = JSII_RTTI_SYMBOL_1;
135
+ Instance[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.Instance", version: "0.2.1" };
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FVcUI7QUFDckIsOERBQThEO0FBSTlELElBQVksc0JBSVg7QUFKRCxXQUFZLHNCQUFzQjtJQUNoQyx1Q0FBYSxDQUFBO0lBQ2IsNkRBQW1DLENBQUE7SUFDbkMsbUVBQXlDLENBQUE7QUFDM0MsQ0FBQyxFQUpXLHNCQUFzQixzQ0FBdEIsc0JBQXNCLFFBSWpDO0FBNElELE1BQWUsWUFBYSxTQUFRLHNCQUFRO0lBQTVDOztRQUtVLHlCQUFvQixHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBOEJyRSxDQUFDO0lBNUJDLGdCQUFnQixDQUFDLE1BQXFCLEVBQUUsS0FBeUIsU0FBUztRQUN4RSxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7WUFDdkQseUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLDBCQUEwQixNQUFNLENBQUMsWUFBWSxtQkFBbUIsQ0FBQyxDQUFDO1lBQ2hHLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQzFCLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxrREFBa0QsTUFBTSxDQUFDLFlBQVksb0JBQW9CLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQzdJLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbkQsSUFBSSx5QkFBTyxDQUFDLHdCQUF3QixDQUFDLElBQUksRUFBRSxFQUFFLElBQUksaUJBQWlCLE1BQU0sQ0FBQyxZQUFZLEVBQUUsRUFBRSxN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QUFzQixDQUFDLGtCQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdGLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDeEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHlCQUFPLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEQsVUFBVTtZQUNWLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQzFDLGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtTQUNuQyxDQUFDLENBQUM7UUFFSCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN6QixLQUFLLE1BQU0sTUFBTSxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDMUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2hDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQzs7QUFwRkgsNEJBcUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQW5ub3RhdGlvbnMsXG4gIGF3c19jb25uZWN0IGFzIGNvbm5lY3QsXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3NfbGV4IGFzIGxleCxcbiAgQ29udGV4dFByb3ZpZGVyLFxuICBJUmVzb3VyY2UsXG4gIFJlc291cmNlLFxuICBUb2tlbixcbiAgVmFsaWRhdGlvbkVycm9yLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjeHNjaGVtYSBmcm9tICdhd3MtY2RrLWxpYi9jbG91ZC1hc3NlbWJseS1zY2hlbWEnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBTdG9yYWdlQ29uZmlnLCBTdG9yYWdlUmVzb3VyY2VUeXBlIH0gZnJvbSAnLi9zdG9yYWdlX2NvbmZpZyc7XG5cbmV4cG9ydCBlbnVtIElkZW50aXR5TWFuYWdlbWVudFR5cGUge1xuICBTQU1MID0gJ1NBTUwnLFxuICBDT05ORUNUX01BTkFHRUQgPSAnQ09OTkVDVF9NQU5BR0VEJyxcbiAgRVhJU1RJTkdfRElSRUNUT1JZID0gJ0VYSVNUSU5HX0RJUkVDVE9SWScsXG59XG5cbi8qKlxuICogVE9ETyBtaXNzaW5nIGF0dHJpYnV0ZXMgZnJvbSBDbG91ZEZvcm1hdGlvblxuICpcbiAqIEFVVE9NQVRFRF9JTlRFUkFDVElPTl9MT0dcbiAqIEJPVF9NQU5BR0VNRU5UXG4gKiBFTkFCTEVfQk9UX0FOQUxZVElDU19BTkRfVFJBTlNDUklQVFNcbiAqIEZPUkVDQVNUSU5HX1BMQU5OSU5HX1NDSEVEVUxJTkdcbiAqIE1BWF9QQUNLQUdFXG4gKiBNRVNTQUdFX1NUUkVBTUlOR1xuICovXG5cbi8qKlxuICogQWxsIG90aGVyIGNvbmZpZyBwcm9wc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE90aGVyQ29uZmlnUHJvcHMge1xuICAvKipcbiAgICogV2hldGhlciBjb250YWN0IGZsb3cgbG9ncyBhcmUgZW5hYmxlZC4gKENPTlRBQ1RGTE9XX0xPR1MpXG4gICAqL1xuICByZWFkb25seSBjb250YWN0Zmxvd0xvZ3M/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciBjb250YWN0IGxlbnMgaXMgZW5hYmxlZC4gKENPTlRBQ1RfTEVOUylcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhY3RMZW5zPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5oYW5jZWQgY2hhdCBtb25pdG9yaW5nIGlzIGVuYWJsZWQuIChFTkhBTkNFRF9DSEFUX01PTklUT1JJTkcpXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZENoYXRNb25pdG9yaW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgaGlnaCB2b2x1bWUgb3V0Ym91bmQgaXMgZW5hYmxlZC4gKEhJR0hfVk9MVU1FX09VVEJPVU5EKVxuICAgKi9cbiAgcmVhZG9ubHkgaGlnaFZvbHVtZU91dEJvdW5kPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgZW5oYW5jZWQgY29udGFjdCBtb25pdG9yaW5nIGlzIGVuYWJsZWQuIChFTkhBTkNFRF9DT05UQUNUX01PTklUT1JJTkcpXG4gICAqL1xuICByZWFkb25seSBlbmhhbmNlZENvbnRhY3RNb25pdG9yaW5nPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZWxlcGhvbnlDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGVhcmx5IG1lZGlhIGlzIGVuYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVhcmx5TWVkaWFFbmFibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgaW5ib3VuZCBjYWxscyBhcmUgYWxsb3dlZC4gKElOQk9VTkRfQ0FMTFMpXG4gICAqL1xuICByZWFkb25seSBpbmJvdW5kQ2FsbHM6IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG11bHRpIHBhcnR5IGNoYXQgaXMgZW5hYmxlZC4gKE1VTFRJX1BBUlRZX0NIQVRfQ09ORkVSRU5DRSlcbiAgICovXG4gIHJlYWRvbmx5IG11bHRpUGFydHlDaGF0Q29uZmVyZW5jZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG11bHRpIHBhcnR5IGNvbmZlcmVuY2UgaXMgZW5hYmxlZC4gKE1VTFRJX1BBUlRZX0NPTkZFUkVOQ0UpXG4gICAqL1xuICByZWFkb25seSBtdWx0aVBhcnR5Q29uZmVyZW5jZT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBXaGV0aGVyIG91dGJvdW5kIGNhbGxzIGFyZSBhbGxvd2VkLiAoT1VUQk9VTkRfQ0FMTFMpXG4gICAqL1xuICByZWFkb25seSBvdXRib3VuZENhbGxzOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBvbGx5Q29uZmlnUHJvcHMge1xuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJlc29sdmUgYmVzdCB2b2ljZXMuIChBVVRPX1JFU09MVkVfQkVTVF9WT0lDRVMpXG4gICAqL1xuICByZWFkb25seSBhdXRvUmVzb2x2ZUJlc3RWb2ljZXM/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB1c2VDdXN0b21UdHNWb2ljZXMgaXMgZW5hYmxlZCAoVVNFX0NVU1RPTV9UVFNfVk9JQ0VTKVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlQ3VzdG9tVHRzVm9pY2VzPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBpZGVudGl0eSB0eXBlIGZvciB0aGlzIGluc3RhbmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWRlbnRpdHlUeXBlOiBJZGVudGl0eU1hbmFnZW1lbnRUeXBlO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIGFsaWFzLCByZXF1aXJlZCB3aGVuIGlkZW50aXR5VHlwZSBpcyBzZXQgdG8gQ09OTkVDVF9NQU5BR0VEIG9yIFNBTUwuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUFsaWFzPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgb2YgYSBzaW1wbGVBRCBvciBNaWNyb3NvZnQgQUQgKF5kLVswLTlhLWZdezEwfSQpLCByZXF1aXJlZCB3aGVuIGlkZW50aXR5VHlwZSBpcyBzZXQgdG8gRVhJU1RJTkdfRElSRUNUT1JZLlxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5SWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUZWxlcGhvbnkgcHJvcGVydGllcy4gIFJlcXVpcmVkIChkdWUgdG8gcmVxdWlyZWQgc2V0dGluZyBvZiBpbmJvdW5kICYgb3V0Ym91bmQgY2FsbCBjb25maWd1cmF0aW9uKVxuICAgKi9cbiAgcmVhZG9ubHkgdGVsZXBob255Q29uZmlnOiBUZWxlcGhvbnlDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIFBvbGx5IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IHBvbGx5Q29uZmlnPzogUG9sbHlDb25maWdQcm9wcztcbiAgLyoqXG4gICAqIE90aGVyIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3NcbiAgICovXG4gIHJlYWRvbmx5IG90aGVyQ29uZmlnPzogT3RoZXJDb25maWdQcm9wcztcbiAgLyoqXG4gICAqXG4gICAqL1xuICByZWFkb25seSBzdG9yYWdlQ29uZmlncz86IFN0b3JhZ2VDb25maWdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJSW5zdGFuY2UgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgaW5zdGFuY2UuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIGlkZW50aWZpZXIuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgaW5zdGFuY2UgbmFtZS4gIE1heSBub3QgYWx3YXlzIGJlIGF2YWlsYWJsZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VOYW1lPzogc3RyaW5nO1xuXG4gIGFkZFN0b3JhZ2VDb25maWcoY29uZmlnOiBTdG9yYWdlQ29uZmlnLCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkKTogdm9pZDtcblxuICBhc3NvY2lhdGVMYW1iZGFGdW5jdGlvbihpZDogc3RyaW5nLCBmdW5jOiBsYW1iZGEuSUZ1bmN0aW9uKTogdm9pZDtcblxuICBhc3NvY2lhdGVMZXhCb3QoaWQ6IHN0cmluZywgYm90OiBsZXguSUJvdEFsaWFzUmVmKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZUxvb2t1cE9wdGlvbnMge1xuICAvKipcbiAgICogdGhlIElEIG9mIHRoZSBjb25uZWN0IGluc3RhbmNlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUlkPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGNvbm5lY3QgaW5zdGFuY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlIEFyblxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VBcm4/OiBzdHJpbmc7XG59XG5cbmFic3RyYWN0IGNsYXNzIEluc3RhbmNlQmFzZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSUluc3RhbmNlIHtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGluc3RhbmNlQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnN0YW5jZU5hbWU/OiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzdG9yYWdlUmVzb3VyY2VUeXBlczogU2V0PFN0b3JhZ2VSZXNvdXJjZVR5cGU+ID0gbmV3IFNldCgpO1xuXG4gIGFkZFN0b3JhZ2VDb25maWcoY29uZmlnOiBTdG9yYWdlQ29uZmlnLCBpZDogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHRoaXMuc3RvcmFnZVJlc291cmNlVHlwZXMuaGFzKGNvbmZpZy5yZXNvdXJjZVR5cGUpKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcihgRHVwbGljYXRlIHJlc291cmNlVHlwZSAke2NvbmZpZy5yZXNvdXJjZVR5cGV9IGluIHN0b3JhZ2VDb25maWdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKCFjb25maWcuY2hlY2tDb25maWcoKSkge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRXJyb3IoYEludmFsaWQgc3RvcmFnZSBjb25maWd1cmF0aW9uIGZvciByZXNvdXJjZVR5cGUgJHtjb25maWcucmVzb3VyY2VUeXBlfSBhbmQgc3RvcmFnZVR5cGUgJHtjb25maWcuc3RvcmFnZVR5cGV9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc3RvcmFnZVJlc291cmNlVHlwZXMuYWRkKGNvbmZpZy5yZXNvdXJjZVR5cGUpO1xuICAgIG5ldyBjb25uZWN0LkNmbkluc3RhbmNlU3RvcmFnZUNvbmZpZyh0aGlzLCBpZCB8fCBgU3RvcmFnZUNvbmZpZy0ke2NvbmZpZy5yZXNvdXJjZVR5cGV9YCwgY29uZmlnLmFzU3RvcmFnZUNvbmZpZ1Byb3BzKHRoaXMuaW5zdGFuY2VBcm4pKTtcbiAgfVxuXG4gIGFzc29jaWF0ZUxhbWJkYUZ1bmN0aW9uKGlkOiBzdHJpbmcsIGZ1bmM6IGxhbWJkYS5JRnVuY3Rpb24pIHtcbiAgICBuZXcgY29ubmVjdC5DZm5JbnRlZ3JhdGlvbkFzc29jaWF0aW9uKHRoaXMsIGlkLCB7XG4gICAgICBpbnN0YW5jZUlkOiB0aGlzLmluc3RhbmNlQXJuLFxuICAgICAgaW50ZWdyYXRpb25UeXBlOiAnTEFNQkRBX0ZVTkNUSU9OJyxcbiAgICAgIGludGVncmF0aW9uQXJuOiBmdW5jLmZ1bmN0aW9uQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgYXNzb2NpYXRlTGV4Qm90KGlkOiBzdHJpbmcsIGJvdDogbGV4LklCb3RBbGlhc1JlZikge1xuICAgIG5ldyBjb25uZWN0LkNmbkludGVncmF0aW9uQXNzb2NpYXRpb24odGhpcywgaWQsIHtcbiAgICAgIGluc3RhbmNlSWQ6IHRoaXMuaW5zdGFuY2VBcm4sXG4gICAgICBpbnRlZ3JhdGlvblR5cGU6ICdMRVhfQk9UJyxcbiAgICAgIGludGVncmF0aW9uQXJuOiBib3QuYm90QWxpYXNSZWYuYm90QWxpYXNBcm4sXG4gICAgfSk7XG4gIH1cbn1cblxuY2xhc3MgTG9va2VkVXBJbnN0YW5jZSBleHRlbmRzIEluc3RhbmNlQmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUlkOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBpbnN0YW5jZUFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgaW5zdGFuY2VOYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBpbmNvbXBsZXRlSW5zdGFuY2VEZWZpbml0aW9uOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBhbnksIGlzSW5jb21wbGV0ZTogYm9vbGVhbikge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcmVnaW9uOiBwcm9wcy5yZWdpb24sXG4gICAgICBhY2NvdW50OiBwcm9wcy5vd25lckFjY291bnRJZCxcbiAgICB9KTtcblxuICAgIHRoaXMuaW5zdGFuY2VJZCA9IHByb3BzLmluc3RhbmNlSWQ7XG4gICAgdGhpcy5pbnN0YW5jZUFybiA9IHByb3BzLmluc3RhbmNlQXJuO1xuICAgIHRoaXMuaW5zdGFuY2VOYW1lID0gcHJvcHMuaW5zdGFuY2VOYW1lO1xuICAgIHRoaXMuaW5jb21wbGV0ZUluc3RhbmNlRGVmaW5pdGlvbiA9IGlzSW5jb21wbGV0ZTtcbiAgfVxufVxuXG5jb25zdCBEVU1NWV9JTlNUQU5DRV9QUk9QUyA9IHtcbiAgaW5zdGFuY2VBcm46ICdpbnN0YW5jZS1hcm4nLFxuICBpbnN0YW5jZUlkOiAnaW5zdGFuY2UtMTIzNDUnLFxufTtcblxuZXhwb3J0IGNsYXNzIEluc3RhbmNlIGV4dGVuZHMgSW5zdGFuY2VCYXNlIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tTG9va3VwKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEluc3RhbmNlTG9va3VwT3B0aW9ucyk6IElJbnN0YW5jZSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLmluc3RhbmNlSWQpXG4gICAgICAgIHx8IFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLmluc3RhbmNlTmFtZSlcbiAgICAgICAgfHwgVG9rZW4uaXNVbnJlc29sdmVkKG9wdGlvbnMuaW5zdGFuY2VBcm4pKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdBbGwgYXJndW1lbnRzIHRvIEluc3RhbmNlLmZyb21Mb29rdXAoKSBtdXN0IGJlIGNvbmNyZXRlIChubyBUb2tlbnMpJywgc2NvcGUpO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcjogYW55ID0ge307XG5cbiAgICBpZiAob3B0aW9ucy5pbnN0YW5jZUFybikge1xuICAgICAgZmlsdGVyLmV4YWN0SWRlbnRpZmllciA9IG9wdGlvbnMuaW5zdGFuY2VBcm47XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuaW5zdGFuY2VJZCkge1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2ggfHw9IHt9O1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2guSWQgPSBvcHRpb25zLmluc3RhbmNlSWQ7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmluc3RhbmNlTmFtZSkge1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2ggfHw9IHt9O1xuICAgICAgZmlsdGVyLnByb3BlcnR5TWF0Y2guSW5zdGFuY2VBbGlhcyA9IG9wdGlvbnMuaW5zdGFuY2VOYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlIDogeyBba2V5OiBzdHJpbmddOiBhbnkgfVtdID0gQ29udGV4dFByb3ZpZGVyLmdldFZhbHVlKHNjb3BlLCB7XG4gICAgICBwcm92aWRlcjogY3hzY2hlbWEuQ29udGV4dFByb3ZpZGVyLkNDX0FQSV9QUk9WSURFUixcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHR5cGVOYW1lOiAnQVdTOjpDb25uZWN0OjpJbnN0YW5jZScsXG4gICAgICAgIC4uLmZpbHRlcixcbiAgICAgICAgcHJvcGVydGllc1RvUmV0dXJuOiBbJ0FybicsICdJbnN0YW5jZUFsaWFzJywgJ0lkJywgJ1RhZ3MnXSxcbiAgICAgICAgZXhwZWN0ZWRNYXRjaENvdW50OiAnZXhhY3RseS1vbmUnLFxuICAgICAgfSBhcyBjeHNjaGVtYS5DY0FwaUNvbnRleHRRdWVyeSxcbiAgICAgIGR1bW15VmFsdWU6IHVuZGVmaW5lZCxcbiAgICB9KS52YWx1ZTtcblxuICAgIGxldCBpbnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgICBpZiAocmVzcG9uc2UgJiYgcmVzcG9uc2VbMF0pIHtcbiAgICAgIGluc3RhbmNlID0ge1xuICAgICAgICBpbnN0YW5jZUFybjogcmVzcG9uc2VbMF0uQXJuLFxuICAgICAgICBpbnN0YW5jZUlkOiByZXNwb25zZVswXS5JZCxcbiAgICAgICAgaW5zdGFuY2VOYW1lOiByZXNwb25zZVswXS5JbnN0YW5jZUFsaWFzLFxuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBMb29rZWRVcEluc3RhbmNlKHNjb3BlLCBpZCwgaW5zdGFuY2UgPz8gRFVNTVlfSU5TVEFOQ0VfUFJPUFMsIGluc3RhbmNlID09PSB1bmRlZmluZWQpO1xuICB9XG5cbiAgcmVhZG9ubHkgaW5zdGFuY2U6IGNvbm5lY3QuQ2ZuSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGluc3RhbmNlTmFtZT86IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogSW5zdGFuY2VQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0ge1xuICAgICAgLi4ucHJvcHMudGVsZXBob255Q29uZmlnLFxuICAgICAgLi4ucHJvcHMucG9sbHlDb25maWcsXG4gICAgICAuLi5wcm9wcy5vdGhlckNvbmZpZyxcbiAgICB9O1xuXG4gICAgaWYgKHByb3BzLmlkZW50aXR5VHlwZSA9PT0gSWRlbnRpdHlNYW5hZ2VtZW50VHlwZS5FWElTVElOR19ESVJFQ1RPUlkgJiYgIXByb3BzLmRpcmVjdG9yeUlkKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRFcnJvcignZGlyZWN0b3J5SWQgaXMgcmVxdWlyZWQgd2hlbiBpZGVudGl0eVR5cGUgaXMgc2V0IHRvIEVYSVNUSU5HX0RJUkVDVE9SWScpO1xuICAgIH1cbiAgICBpZiAocHJvcHMuaWRlbnRpdHlUeXBlICE9PSBJZGVudGl0eU1hbmFnZW1lbnRUeXBlLkVYSVNUSU5HX0RJUkVDVE9SWSAmJiAhcHJvcHMuaW5zdGFuY2VBbGlhcykge1xuICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRXJyb3IoJ2luc3RhbmNlQWxpYXMgaXMgcmVxdWlyZWQgd2hlbiBpZGVudGl0eVR5cGUgaXMgc2V0IHRvIENPTk5FQ1RfTUFOQUdFRCBvciBTQU1MJyk7XG4gICAgfVxuXG4gICAgdGhpcy5pbnN0YW5jZU5hbWUgPSBwcm9wcy5pbnN0YW5jZUFsaWFzO1xuICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgY29ubmVjdC5DZm5JbnN0YW5jZSh0aGlzLCAnSW5zdGFuY2UnLCB7XG4gICAgICBhdHRyaWJ1dGVzLFxuICAgICAgaWRlbnRpdHlNYW5hZ2VtZW50VHlwZTogcHJvcHMuaWRlbnRpdHlUeXBlLFxuICAgICAgaW5zdGFuY2VBbGlhczogcHJvcHMuaW5zdGFuY2VBbGlhcyxcbiAgICB9KTtcblxuICAgIGlmIChwcm9wcy5zdG9yYWdlQ29uZmlncykge1xuICAgICAgZm9yIChjb25zdCBjb25maWcgb2YgcHJvcHMuc3RvcmFnZUNvbmZpZ3MpIHtcbiAgICAgICAgdGhpcy5hZGRTdG9yYWdlQ29uZmlnKGNvbmZpZyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGluc3RhbmNlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UuYXR0ckFybjtcbiAgfVxuXG4gIGdldCBpbnN0YW5jZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2UucmVmO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,50 @@
1
+ import { aws_connect as connect, IResource, Resource } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { IInstance } from './instance';
4
+ import { ITrafficDistributionGroup } from './traffic_distribution_group';
5
+ export interface IPhoneNumber extends IResource {
6
+ /**
7
+ * The ARN of the phone number.
8
+ */
9
+ readonly phoneNumberArn: string;
10
+ }
11
+ export declare enum PhoneNumberType {
12
+ TOLL_FREE = "TOLL_FREE",
13
+ DID = "DID",
14
+ UIFN = "UIFN",
15
+ SHARED = "SHARED",
16
+ THIRD_PARTY_DID = "THIRD_PARTY_DID",
17
+ THIRD_PARTY_TF = "THIRD_PARTY_TF",
18
+ SHORT_CODE = "SHORT_CODE"
19
+ }
20
+ export interface PhoneNumberProps {
21
+ /**
22
+ * The AWS connect instance or traffic distribution node to attach the phone number to.
23
+ */
24
+ readonly target: IInstance | ITrafficDistributionGroup;
25
+ /**
26
+ * The phone number type.
27
+ */
28
+ readonly type?: PhoneNumberType;
29
+ /**
30
+ * The ISO 2-letter country code of the phone number.
31
+ */
32
+ readonly countryCode?: string;
33
+ /**
34
+ * The phone number prefix with the + country code
35
+ */
36
+ readonly prefix?: string;
37
+ /**
38
+ * A description of the phone number.
39
+ */
40
+ readonly description?: string;
41
+ /**
42
+ * the ARN of an externally imported phone number (e.g. from AWS End User Messaging)
43
+ */
44
+ readonly sourcePhoneNumberArn?: string;
45
+ }
46
+ export declare class PhoneNumber extends Resource implements IPhoneNumber {
47
+ readonly phoneNumber: connect.CfnPhoneNumber;
48
+ constructor(scope: Construct, id: string, props: PhoneNumberProps);
49
+ get phoneNumberArn(): string;
50
+ }
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.PhoneNumber = exports.PhoneNumberType = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ var PhoneNumberType;
8
+ (function (PhoneNumberType) {
9
+ PhoneNumberType["TOLL_FREE"] = "TOLL_FREE";
10
+ PhoneNumberType["DID"] = "DID";
11
+ PhoneNumberType["UIFN"] = "UIFN";
12
+ PhoneNumberType["SHARED"] = "SHARED";
13
+ PhoneNumberType["THIRD_PARTY_DID"] = "THIRD_PARTY_DID";
14
+ PhoneNumberType["THIRD_PARTY_TF"] = "THIRD_PARTY_TF";
15
+ PhoneNumberType["SHORT_CODE"] = "SHORT_CODE";
16
+ })(PhoneNumberType || (exports.PhoneNumberType = PhoneNumberType = {}));
17
+ class PhoneNumber extends aws_cdk_lib_1.Resource {
18
+ constructor(scope, id, props) {
19
+ super(scope, id);
20
+ let targetArn;
21
+ if ('instanceArn' in props.target) {
22
+ targetArn = props.target.instanceArn;
23
+ }
24
+ else if ('trafficDistributionGroupArn' in props.target) {
25
+ targetArn = props.target.trafficDistributionGroupArn;
26
+ }
27
+ else {
28
+ throw new Error('Invalid target');
29
+ }
30
+ this.phoneNumber = new aws_cdk_lib_1.aws_connect.CfnPhoneNumber(this, 'PhoneNumber', {
31
+ targetArn,
32
+ description: props.description,
33
+ countryCode: props.countryCode,
34
+ prefix: props.prefix,
35
+ type: props.type,
36
+ sourcePhoneNumberArn: props.sourcePhoneNumberArn,
37
+ });
38
+ }
39
+ get phoneNumberArn() {
40
+ return this.phoneNumber.attrPhoneNumberArn;
41
+ }
42
+ }
43
+ exports.PhoneNumber = PhoneNumber;
44
+ _a = JSII_RTTI_SYMBOL_1;
45
+ PhoneNumber[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.PhoneNumber", version: "0.2.1" };
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmVfbnVtYmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Bob25lX251bWJlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUlxQjtBQVlyQixJQUFZLGVBUVg7QUFSRCxXQUFZLGVBQWU7SUFDekIsMENBQXVCLENBQUE7SUFDdkIsOEJBQVcsQ0FBQTtJQUNYLGdDQUFhLENBQUE7SUFDYixvQ0FBaUIsQ0FBQTtJQUNqQixzREFBbUMsQ0FBQTtJQUNuQyxvREFBaUMsQ0FBQTtJQUNqQyw0Q0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBUlcsZUFBZSwrQkFBZixlQUFlLFFBUTFCO0FBNkJELE1BQWEsV0FBWSxTQUFRLHNCQUFRO0lBR3ZDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLFNBQVMsQ0FBQztRQUNkLElBQUksYUFBYSxJQUFJLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQyxTQUFTLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDdkMsQ0FBQzthQUFNLElBQUksNkJBQTZCLElBQUksS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3pELFNBQVMsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLDJCQUEyQixDQUFDO1FBQ3ZELENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUkseUJBQU8sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRTtZQUNqRSxTQUFTO1lBQ1QsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07WUFDcEIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7U0FDakQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUM7SUFDN0MsQ0FBQzs7QUEzQkgsa0NBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCxcbiAgSVJlc291cmNlLFxuICBSZXNvdXJjZSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJSW5zdGFuY2UgfSBmcm9tICcuL2luc3RhbmNlJztcbmltcG9ydCB7IElUcmFmZmljRGlzdHJpYnV0aW9uR3JvdXAgfSBmcm9tICcuL3RyYWZmaWNfZGlzdHJpYnV0aW9uX2dyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBJUGhvbmVOdW1iZXIgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcGhvbmUgbnVtYmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgcGhvbmVOdW1iZXJBcm46IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUGhvbmVOdW1iZXJUeXBlIHtcbiAgVE9MTF9GUkVFID0gJ1RPTExfRlJFRScsXG4gIERJRCA9ICdESUQnLFxuICBVSUZOID0gJ1VJRk4nLFxuICBTSEFSRUQgPSAnU0hBUkVEJyxcbiAgVEhJUkRfUEFSVFlfRElEID0gJ1RISVJEX1BBUlRZX0RJRCcsXG4gIFRISVJEX1BBUlRZX1RGID0gJ1RISVJEX1BBUlRZX1RGJyxcbiAgU0hPUlRfQ09ERSA9ICdTSE9SVF9DT0RFJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQaG9uZU51bWJlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgY29ubmVjdCBpbnN0YW5jZSBvciB0cmFmZmljIGRpc3RyaWJ1dGlvbiBub2RlIHRvIGF0dGFjaCB0aGUgcGhvbmUgbnVtYmVyIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBJSW5zdGFuY2UgfCBJVHJhZmZpY0Rpc3RyaWJ1dGlvbkdyb3VwO1xuICAvKipcbiAgICogVGhlIHBob25lIG51bWJlciB0eXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZT86IFBob25lTnVtYmVyVHlwZTtcbiAgLyoqXG4gICAqIFRoZSBJU08gMi1sZXR0ZXIgY291bnRyeSBjb2RlIG9mIHRoZSBwaG9uZSBudW1iZXIuXG4gICAqL1xuICByZWFkb25seSBjb3VudHJ5Q29kZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBwaG9uZSBudW1iZXIgcHJlZml4IHdpdGggdGhlICsgY291bnRyeSBjb2RlXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBwaG9uZSBudW1iZXIuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIHRoZSBBUk4gb2YgYW4gZXh0ZXJuYWxseSBpbXBvcnRlZCBwaG9uZSBudW1iZXIgKGUuZy4gZnJvbSBBV1MgRW5kIFVzZXIgTWVzc2FnaW5nKVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlUGhvbmVOdW1iZXJBcm4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBQaG9uZU51bWJlciBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVBob25lTnVtYmVyIHtcbiAgcmVhZG9ubHkgcGhvbmVOdW1iZXI6IGNvbm5lY3QuQ2ZuUGhvbmVOdW1iZXI7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFBob25lTnVtYmVyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgbGV0IHRhcmdldEFybjtcbiAgICBpZiAoJ2luc3RhbmNlQXJuJyBpbiBwcm9wcy50YXJnZXQpIHtcbiAgICAgIHRhcmdldEFybiA9IHByb3BzLnRhcmdldC5pbnN0YW5jZUFybjtcbiAgICB9IGVsc2UgaWYgKCd0cmFmZmljRGlzdHJpYnV0aW9uR3JvdXBBcm4nIGluIHByb3BzLnRhcmdldCkge1xuICAgICAgdGFyZ2V0QXJuID0gcHJvcHMudGFyZ2V0LnRyYWZmaWNEaXN0cmlidXRpb25Hcm91cEFybjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHRhcmdldCcpO1xuICAgIH1cblxuICAgIHRoaXMucGhvbmVOdW1iZXIgPSBuZXcgY29ubmVjdC5DZm5QaG9uZU51bWJlcih0aGlzLCAnUGhvbmVOdW1iZXInLCB7XG4gICAgICB0YXJnZXRBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBjb3VudHJ5Q29kZTogcHJvcHMuY291bnRyeUNvZGUsXG4gICAgICBwcmVmaXg6IHByb3BzLnByZWZpeCxcbiAgICAgIHR5cGU6IHByb3BzLnR5cGUsXG4gICAgICBzb3VyY2VQaG9uZU51bWJlckFybjogcHJvcHMuc291cmNlUGhvbmVOdW1iZXJBcm4sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgcGhvbmVOdW1iZXJBcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMucGhvbmVOdW1iZXIuYXR0clBob25lTnVtYmVyQXJuO1xuICB9XG59XG4iXX0=
package/lib/queue.d.ts ADDED
@@ -0,0 +1,56 @@
1
+ import { aws_connect as connect, IResource, Resource } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { IContactFlow } from './contact_flow';
4
+ import { IEmailAddress } from './email_address';
5
+ import { IHoursOfOperation } from './hours_of_operation';
6
+ import { IInstance } from './instance';
7
+ import { IPhoneNumber } from './phone_number';
8
+ import { IQuickConnect } from './quick_connect';
9
+ export interface IQueue extends IResource {
10
+ readonly queueArn: string;
11
+ }
12
+ export declare enum QueueStatus {
13
+ ENABLED = "ENABLED",
14
+ DISABLED = "DISABLED"
15
+ }
16
+ export interface QueueOutboundCallerConfig {
17
+ readonly callerIdName: string;
18
+ readonly callerIdNumber: IPhoneNumber;
19
+ readonly flow: IContactFlow;
20
+ }
21
+ export interface QueueProps {
22
+ /**
23
+ * The AWS connect instance to attach the queue to.
24
+ */
25
+ readonly instance: IInstance;
26
+ /**
27
+ * The hours of operation to associate with the queue.
28
+ */
29
+ readonly hoursOfOperation: IHoursOfOperation;
30
+ /**
31
+ * The name of the hours of operation.
32
+ */
33
+ readonly name: string;
34
+ /**
35
+ * A description of the queue.
36
+ */
37
+ readonly description?: string;
38
+ /**
39
+ * The status of the queue. Default QueueStats.ENABLED
40
+ */
41
+ readonly status?: QueueStatus;
42
+ /**
43
+ * The maximum number of contacts that can be in the queue before it is considered full (default 0/unlimited).
44
+ */
45
+ readonly maxQueueSize?: number;
46
+ readonly outboundCallerConfig?: QueueOutboundCallerConfig;
47
+ readonly outboundEmail?: IEmailAddress;
48
+ readonly quickConnects: IQuickConnect[];
49
+ }
50
+ export declare class Queue extends Resource implements IQueue {
51
+ readonly queue: connect.CfnQueue;
52
+ readonly instance: IInstance;
53
+ readonly hoursOfOperation: IHoursOfOperation;
54
+ constructor(scope: Construct, id: string, props: QueueProps);
55
+ get queueArn(): string;
56
+ }
package/lib/queue.js ADDED
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Queue = exports.QueueStatus = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ var QueueStatus;
8
+ (function (QueueStatus) {
9
+ QueueStatus["ENABLED"] = "ENABLED";
10
+ QueueStatus["DISABLED"] = "DISABLED";
11
+ })(QueueStatus || (exports.QueueStatus = QueueStatus = {}));
12
+ class Queue extends aws_cdk_lib_1.Resource {
13
+ constructor(scope, id, props) {
14
+ super(scope, id);
15
+ this.instance = props.instance;
16
+ this.hoursOfOperation = props.hoursOfOperation;
17
+ this.queue = new aws_cdk_lib_1.aws_connect.CfnQueue(this, 'Queue', {
18
+ instanceArn: this.instance.instanceArn,
19
+ hoursOfOperationArn: this.hoursOfOperation.hoursOfOperationArn,
20
+ name: props.name,
21
+ description: props.description,
22
+ maxContacts: props.maxQueueSize,
23
+ outboundCallerConfig: props.outboundCallerConfig && {
24
+ outboundCallerIdName: props.outboundCallerConfig.callerIdName,
25
+ outboundCallerIdNumberArn: props.outboundCallerConfig.callerIdNumber.phoneNumberArn,
26
+ outboundFlowArn: props.outboundCallerConfig.flow.contactFlowArn,
27
+ },
28
+ outboundEmailConfig: props.outboundEmail && {
29
+ outboundEmailAddressId: props.outboundEmail.emailAddressArn,
30
+ },
31
+ quickConnectArns: props.quickConnects.map(qc => qc.quickConnectArn),
32
+ status: props.status ?? QueueStatus.ENABLED,
33
+ });
34
+ }
35
+ get queueArn() {
36
+ return this.queue.attrQueueArn;
37
+ }
38
+ }
39
+ exports.Queue = Queue;
40
+ _a = JSII_RTTI_SYMBOL_1;
41
+ Queue[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.Queue", version: "0.2.1" };
42
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvcXVldWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FJcUI7QUFhckIsSUFBWSxXQUdYO0FBSEQsV0FBWSxXQUFXO0lBQ3JCLGtDQUFtQixDQUFBO0lBQ25CLG9DQUFxQixDQUFBO0FBQ3ZCLENBQUMsRUFIVyxXQUFXLDJCQUFYLFdBQVcsUUFHdEI7QUFzQ0QsTUFBYSxLQUFNLFNBQVEsc0JBQVE7SUFLakMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQjtRQUN6RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQztRQUMvQixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBRS9DLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSx5QkFBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO1lBQy9DLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDdEMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLG1CQUFtQjtZQUM5RCxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsWUFBWTtZQUMvQixvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CLElBQUk7Z0JBQ2xELG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxZQUFZO2dCQUM3RCx5QkFBeUIsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLGNBQWM7Z0JBQ25GLGVBQWUsRUFBRSxLQUFLLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWM7YUFDaEU7WUFDRCxtQkFBbUIsRUFBRSxLQUFLLENBQUMsYUFBYSxJQUFJO2dCQUMxQyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLGVBQWU7YUFDNUQ7WUFDRCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUM7WUFDbkUsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNLElBQUksV0FBVyxDQUFDLE9BQU87U0FDNUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUM7SUFDakMsQ0FBQzs7QUFoQ0gsc0JBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXdzX2Nvbm5lY3QgYXMgY29ubmVjdCxcbiAgSVJlc291cmNlLFxuICBSZXNvdXJjZSxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJQ29udGFjdEZsb3cgfSBmcm9tICcuL2NvbnRhY3RfZmxvdyc7XG5pbXBvcnQgeyBJRW1haWxBZGRyZXNzIH0gZnJvbSAnLi9lbWFpbF9hZGRyZXNzJztcbmltcG9ydCB7IElIb3Vyc09mT3BlcmF0aW9uIH0gZnJvbSAnLi9ob3Vyc19vZl9vcGVyYXRpb24nO1xuaW1wb3J0IHsgSUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBJUGhvbmVOdW1iZXIgfSBmcm9tICcuL3Bob25lX251bWJlcic7XG5pbXBvcnQgeyBJUXVpY2tDb25uZWN0IH0gZnJvbSAnLi9xdWlja19jb25uZWN0JztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVldWUgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICByZWFkb25seSBxdWV1ZUFybjogc3RyaW5nO1xufVxuXG5leHBvcnQgZW51bSBRdWV1ZVN0YXR1cyB7XG4gIEVOQUJMRUQgPSAnRU5BQkxFRCcsXG4gIERJU0FCTEVEID0gJ0RJU0FCTEVEJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWV1ZU91dGJvdW5kQ2FsbGVyQ29uZmlnIHtcbiAgcmVhZG9ubHkgY2FsbGVySWROYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGNhbGxlcklkTnVtYmVyOiBJUGhvbmVOdW1iZXI7XG4gIHJlYWRvbmx5IGZsb3c6IElDb250YWN0Rmxvdztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgY29ubmVjdCBpbnN0YW5jZSB0byBhdHRhY2ggdGhlIHF1ZXVlIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2U6IElJbnN0YW5jZTtcbiAgLyoqXG4gICAqIFRoZSBob3VycyBvZiBvcGVyYXRpb24gdG8gYXNzb2NpYXRlIHdpdGggdGhlIHF1ZXVlLlxuICAgKi9cbiAgcmVhZG9ubHkgaG91cnNPZk9wZXJhdGlvbjogSUhvdXJzT2ZPcGVyYXRpb247XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaG91cnMgb2Ygb3BlcmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgcXVldWUuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIHF1ZXVlLiBEZWZhdWx0IFF1ZXVlU3RhdHMuRU5BQkxFRFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzPzogUXVldWVTdGF0dXM7XG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29udGFjdHMgdGhhdCBjYW4gYmUgaW4gdGhlIHF1ZXVlIGJlZm9yZSBpdCBpcyBjb25zaWRlcmVkIGZ1bGwgKGRlZmF1bHQgMC91bmxpbWl0ZWQpLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UXVldWVTaXplPzogbnVtYmVyO1xuICByZWFkb25seSBvdXRib3VuZENhbGxlckNvbmZpZz86IFF1ZXVlT3V0Ym91bmRDYWxsZXJDb25maWc7XG4gIHJlYWRvbmx5IG91dGJvdW5kRW1haWw/OiBJRW1haWxBZGRyZXNzO1xuICByZWFkb25seSBxdWlja0Nvbm5lY3RzOiBJUXVpY2tDb25uZWN0W107XG59XG5cbmV4cG9ydCBjbGFzcyBRdWV1ZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVF1ZXVlIHtcbiAgcmVhZG9ubHkgcXVldWU6IGNvbm5lY3QuQ2ZuUXVldWU7XG4gIHJlYWRvbmx5IGluc3RhbmNlOiBJSW5zdGFuY2U7XG4gIHJlYWRvbmx5IGhvdXJzT2ZPcGVyYXRpb246IElIb3Vyc09mT3BlcmF0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBRdWV1ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuaW5zdGFuY2UgPSBwcm9wcy5pbnN0YW5jZTtcbiAgICB0aGlzLmhvdXJzT2ZPcGVyYXRpb24gPSBwcm9wcy5ob3Vyc09mT3BlcmF0aW9uO1xuXG4gICAgdGhpcy5xdWV1ZSA9IG5ldyBjb25uZWN0LkNmblF1ZXVlKHRoaXMsICdRdWV1ZScsIHtcbiAgICAgIGluc3RhbmNlQXJuOiB0aGlzLmluc3RhbmNlLmluc3RhbmNlQXJuLFxuICAgICAgaG91cnNPZk9wZXJhdGlvbkFybjogdGhpcy5ob3Vyc09mT3BlcmF0aW9uLmhvdXJzT2ZPcGVyYXRpb25Bcm4sXG4gICAgICBuYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgbWF4Q29udGFjdHM6IHByb3BzLm1heFF1ZXVlU2l6ZSxcbiAgICAgIG91dGJvdW5kQ2FsbGVyQ29uZmlnOiBwcm9wcy5vdXRib3VuZENhbGxlckNvbmZpZyAmJiB7XG4gICAgICAgIG91dGJvdW5kQ2FsbGVySWROYW1lOiBwcm9wcy5vdXRib3VuZENhbGxlckNvbmZpZy5jYWxsZXJJZE5hbWUsXG4gICAgICAgIG91dGJvdW5kQ2FsbGVySWROdW1iZXJBcm46IHByb3BzLm91dGJvdW5kQ2FsbGVyQ29uZmlnLmNhbGxlcklkTnVtYmVyLnBob25lTnVtYmVyQXJuLFxuICAgICAgICBvdXRib3VuZEZsb3dBcm46IHByb3BzLm91dGJvdW5kQ2FsbGVyQ29uZmlnLmZsb3cuY29udGFjdEZsb3dBcm4sXG4gICAgICB9LFxuICAgICAgb3V0Ym91bmRFbWFpbENvbmZpZzogcHJvcHMub3V0Ym91bmRFbWFpbCAmJiB7XG4gICAgICAgIG91dGJvdW5kRW1haWxBZGRyZXNzSWQ6IHByb3BzLm91dGJvdW5kRW1haWwuZW1haWxBZGRyZXNzQXJuLFxuICAgICAgfSxcbiAgICAgIHF1aWNrQ29ubmVjdEFybnM6IHByb3BzLnF1aWNrQ29ubmVjdHMubWFwKHFjID0+IHFjLnF1aWNrQ29ubmVjdEFybiksXG4gICAgICBzdGF0dXM6IHByb3BzLnN0YXR1cyA/PyBRdWV1ZVN0YXR1cy5FTkFCTEVELFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHF1ZXVlQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuYXR0clF1ZXVlQXJuO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,63 @@
1
+ import { aws_connect as connect, IResource, Resource } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
3
+ import { IContactFlow } from './contact_flow';
4
+ import { IInstance } from './instance';
5
+ import { IQueue } from './queue';
6
+ import { IUser } from './user';
7
+ export interface IQuickConnect extends IResource {
8
+ /**
9
+ * The ARN of the quick connect.
10
+ */
11
+ readonly quickConnectArn: string;
12
+ }
13
+ export declare enum QuickConnectType {
14
+ PHONE_NUMBER = "PHONE_NUMBER",
15
+ QUEUE = "QUEUE",
16
+ USER = "USER"
17
+ }
18
+ export interface QuickConnectQueueConfig {
19
+ readonly flow: IContactFlow;
20
+ readonly queue: IQueue;
21
+ }
22
+ export interface QuickConnectUserConfig {
23
+ readonly user: IUser;
24
+ readonly flow: IContactFlow;
25
+ }
26
+ export interface QuickConnectProps {
27
+ /**
28
+ * The AWS connect instance to attach the quick connect to.
29
+ */
30
+ readonly instance: IInstance;
31
+ /**
32
+ * The name of the quick connect.
33
+ */
34
+ readonly name: string;
35
+ /**
36
+ * The description of the quick connect.
37
+ */
38
+ readonly description?: string;
39
+ /**
40
+ * the phone number to use for this quick connect.
41
+ *
42
+ * Cannot be set with queueConfig or userConfig
43
+ */
44
+ readonly phoneNumber?: string;
45
+ /**
46
+ * the queue and flow to use for this quick connect.
47
+ *
48
+ * Cannot be set with phoneNumber or userConfig
49
+ */
50
+ readonly queueConfig?: QuickConnectQueueConfig;
51
+ /**
52
+ * the user to use for this quick connect.
53
+ *
54
+ * Cannot be set with phoneNumber or queueConfig
55
+ */
56
+ readonly userConfig?: QuickConnectUserConfig;
57
+ }
58
+ export declare class QuickConnect extends Resource implements IQuickConnect {
59
+ readonly quickConnect: connect.CfnQuickConnect;
60
+ constructor(scope: Construct, id: string, props: QuickConnectProps);
61
+ private buildQuickConnect;
62
+ get quickConnectArn(): string;
63
+ }
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.QuickConnect = exports.QuickConnectType = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
7
+ var QuickConnectType;
8
+ (function (QuickConnectType) {
9
+ QuickConnectType["PHONE_NUMBER"] = "PHONE_NUMBER";
10
+ QuickConnectType["QUEUE"] = "QUEUE";
11
+ QuickConnectType["USER"] = "USER";
12
+ })(QuickConnectType || (exports.QuickConnectType = QuickConnectType = {}));
13
+ class QuickConnect extends aws_cdk_lib_1.Resource {
14
+ constructor(scope, id, props) {
15
+ super(scope, id);
16
+ this.quickConnect = new aws_cdk_lib_1.aws_connect.CfnQuickConnect(this, 'QuickConnect', {
17
+ instanceArn: props.instance.instanceArn,
18
+ name: props.name,
19
+ description: props.description,
20
+ quickConnectConfig: this.buildQuickConnect(props),
21
+ });
22
+ }
23
+ buildQuickConnect(props) {
24
+ if (props.phoneNumber) {
25
+ if (props.queueConfig || props.userConfig) {
26
+ throw new Error('phoneNumber cannot be set with queueConfig or userConfig');
27
+ }
28
+ return {
29
+ quickConnectType: QuickConnectType.PHONE_NUMBER,
30
+ phoneConfig: {
31
+ phoneNumber: props.phoneNumber,
32
+ },
33
+ };
34
+ }
35
+ else if (props.queueConfig) {
36
+ if (props.phoneNumber || props.userConfig) {
37
+ throw new Error('queueConfig cannot be set with phoneNumber or userConfig');
38
+ }
39
+ return {
40
+ quickConnectType: QuickConnectType.QUEUE,
41
+ queueConfig: {
42
+ contactFlowArn: props.queueConfig.flow.contactFlowArn,
43
+ queueArn: props.queueConfig.queue.queueArn,
44
+ },
45
+ };
46
+ }
47
+ else if (props.userConfig) {
48
+ if (props.phoneNumber || props.queueConfig) {
49
+ throw new Error('userConfig cannot be set with phoneNumber or queueConfig');
50
+ }
51
+ return {
52
+ quickConnectType: QuickConnectType.USER,
53
+ userConfig: {
54
+ contactFlowArn: props.userConfig.flow.contactFlowArn,
55
+ userArn: props.userConfig.user.userArn,
56
+ },
57
+ };
58
+ }
59
+ else {
60
+ throw new Error('One of phoneNumber, userConfig, or queueConfig must be specified');
61
+ }
62
+ }
63
+ get quickConnectArn() {
64
+ return this.quickConnect.attrQuickConnectArn;
65
+ }
66
+ }
67
+ exports.QuickConnect = QuickConnect;
68
+ _a = JSII_RTTI_SYMBOL_1;
69
+ QuickConnect[_a] = { fqn: "@netforbpo/aws-cdk-aws-connect-lib.QuickConnect", version: "0.2.1" };
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2tfY29ubmVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9xdWlja19jb25uZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBSXFCO0FBY3JCLElBQVksZ0JBSVg7QUFKRCxXQUFZLGdCQUFnQjtJQUMxQixpREFBNkIsQ0FBQTtJQUM3QixtQ0FBZSxDQUFBO0lBQ2YsaUNBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUkzQjtBQTZDRCxNQUFhLFlBQWEsU0FBUSxzQkFBUTtJQUd4QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1FBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLHlCQUFPLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDcEUsV0FBVyxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsV0FBVztZQUN2QyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLGtCQUFrQixFQUFFLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7U0FDbEQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGlCQUFpQixDQUFDLEtBQXdCO1FBQ2hELElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3RCLElBQUksS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUM7Z0JBQzFDLE1BQU0sSUFBSSxLQUFLLENBQUMsMERBQTBELENBQUMsQ0FBQztZQUM5RSxDQUFDO1lBQ0QsT0FBTztnQkFDTCxnQkFBZ0IsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZO2dCQUMvQyxXQUFXLEVBQUU7b0JBQ1gsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2lCQUMvQjthQUNGLENBQUM7UUFDSixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDN0IsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztnQkFDMUMsTUFBTSxJQUFJLEtBQUssQ0FBQywwREFBMEQsQ0FBQyxDQUFDO1lBQzlFLENBQUM7WUFDRCxPQUFPO2dCQUNMLGdCQUFnQixFQUFFLGdCQUFnQixDQUFDLEtBQUs7Z0JBQ3hDLFdBQVcsRUFBRTtvQkFDWCxjQUFjLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsY0FBYztvQkFDckQsUUFBUSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVE7aUJBQzNDO2FBQ0YsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUM1QixJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7WUFDOUUsQ0FBQztZQUNELE9BQU87Z0JBQ0wsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsSUFBSTtnQkFDdkMsVUFBVSxFQUFFO29CQUNWLGNBQWMsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxjQUFjO29CQUNwRCxPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsT0FBTztpQkFDdkM7YUFDRixDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUFDLGtFQUFrRSxDQUFDLENBQUM7UUFDdEYsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUFDO0lBQy9DLENBQUM7O0FBdERILG9DQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19jb25uZWN0IGFzIGNvbm5lY3QsXG4gIElSZXNvdXJjZSxcbiAgUmVzb3VyY2UsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNvbnRhY3RGbG93IH0gZnJvbSAnLi9jb250YWN0X2Zsb3cnO1xuaW1wb3J0IHsgSUluc3RhbmNlIH0gZnJvbSAnLi9pbnN0YW5jZSc7XG5pbXBvcnQgeyBJUXVldWUgfSBmcm9tICcuL3F1ZXVlJztcbmltcG9ydCB7IElVc2VyIH0gZnJvbSAnLi91c2VyJztcblxuZXhwb3J0IGludGVyZmFjZSBJUXVpY2tDb25uZWN0IGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHF1aWNrIGNvbm5lY3QuXG4gICAqL1xuICByZWFkb25seSBxdWlja0Nvbm5lY3RBcm46IHN0cmluZztcbn1cblxuZXhwb3J0IGVudW0gUXVpY2tDb25uZWN0VHlwZSB7XG4gIFBIT05FX05VTUJFUiA9ICdQSE9ORV9OVU1CRVInLFxuICBRVUVVRSA9ICdRVUVVRScsXG4gIFVTRVIgPSAnVVNFUicsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tDb25uZWN0UXVldWVDb25maWcge1xuICByZWFkb25seSBmbG93OiBJQ29udGFjdEZsb3c7XG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tDb25uZWN0VXNlckNvbmZpZyB7XG4gIHJlYWRvbmx5IHVzZXI6IElVc2VyO1xuICByZWFkb25seSBmbG93OiBJQ29udGFjdEZsb3c7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVpY2tDb25uZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIEFXUyBjb25uZWN0IGluc3RhbmNlIHRvIGF0dGFjaCB0aGUgcXVpY2sgY29ubmVjdCB0by5cbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlOiBJSW5zdGFuY2U7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcXVpY2sgY29ubmVjdC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcXVpY2sgY29ubmVjdC5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIHBob25lIG51bWJlciB0byB1c2UgZm9yIHRoaXMgcXVpY2sgY29ubmVjdC5cbiAgICpcbiAgICogQ2Fubm90IGJlIHNldCB3aXRoIHF1ZXVlQ29uZmlnIG9yIHVzZXJDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHBob25lTnVtYmVyPzogc3RyaW5nO1xuICAvKipcbiAgICogdGhlIHF1ZXVlIGFuZCBmbG93IHRvIHVzZSBmb3IgdGhpcyBxdWljayBjb25uZWN0LlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc2V0IHdpdGggcGhvbmVOdW1iZXIgb3IgdXNlckNvbmZpZ1xuICAgKi9cbiAgcmVhZG9ubHkgcXVldWVDb25maWc/OiBRdWlja0Nvbm5lY3RRdWV1ZUNvbmZpZztcbiAgLyoqXG4gICAqIHRoZSB1c2VyIHRvIHVzZSBmb3IgdGhpcyBxdWljayBjb25uZWN0LlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc2V0IHdpdGggcGhvbmVOdW1iZXIgb3IgcXVldWVDb25maWdcbiAgICovXG4gIHJlYWRvbmx5IHVzZXJDb25maWc/OiBRdWlja0Nvbm5lY3RVc2VyQ29uZmlnO1xufVxuXG5leHBvcnQgY2xhc3MgUXVpY2tDb25uZWN0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUXVpY2tDb25uZWN0IHtcbiAgcmVhZG9ubHkgcXVpY2tDb25uZWN0OiBjb25uZWN0LkNmblF1aWNrQ29ubmVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUXVpY2tDb25uZWN0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5xdWlja0Nvbm5lY3QgPSBuZXcgY29ubmVjdC5DZm5RdWlja0Nvbm5lY3QodGhpcywgJ1F1aWNrQ29ubmVjdCcsIHtcbiAgICAgIGluc3RhbmNlQXJuOiBwcm9wcy5pbnN0YW5jZS5pbnN0YW5jZUFybixcbiAgICAgIG5hbWU6IHByb3BzLm5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBxdWlja0Nvbm5lY3RDb25maWc6IHRoaXMuYnVpbGRRdWlja0Nvbm5lY3QocHJvcHMpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFF1aWNrQ29ubmVjdChwcm9wczogUXVpY2tDb25uZWN0UHJvcHMpOiBjb25uZWN0LkNmblF1aWNrQ29ubmVjdC5RdWlja0Nvbm5lY3RDb25maWdQcm9wZXJ0eSB7XG4gICAgaWYgKHByb3BzLnBob25lTnVtYmVyKSB7XG4gICAgICBpZiAocHJvcHMucXVldWVDb25maWcgfHwgcHJvcHMudXNlckNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Bob25lTnVtYmVyIGNhbm5vdCBiZSBzZXQgd2l0aCBxdWV1ZUNvbmZpZyBvciB1c2VyQ29uZmlnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWlja0Nvbm5lY3RUeXBlOiBRdWlja0Nvbm5lY3RUeXBlLlBIT05FX05VTUJFUixcbiAgICAgICAgcGhvbmVDb25maWc6IHtcbiAgICAgICAgICBwaG9uZU51bWJlcjogcHJvcHMucGhvbmVOdW1iZXIsXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAocHJvcHMucXVldWVDb25maWcpIHtcbiAgICAgIGlmIChwcm9wcy5waG9uZU51bWJlciB8fCBwcm9wcy51c2VyQ29uZmlnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcigncXVldWVDb25maWcgY2Fubm90IGJlIHNldCB3aXRoIHBob25lTnVtYmVyIG9yIHVzZXJDb25maWcnKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHF1aWNrQ29ubmVjdFR5cGU6IFF1aWNrQ29ubmVjdFR5cGUuUVVFVUUsXG4gICAgICAgIHF1ZXVlQ29uZmlnOiB7XG4gICAgICAgICAgY29udGFjdEZsb3dBcm46IHByb3BzLnF1ZXVlQ29uZmlnLmZsb3cuY29udGFjdEZsb3dBcm4sXG4gICAgICAgICAgcXVldWVBcm46IHByb3BzLnF1ZXVlQ29uZmlnLnF1ZXVlLnF1ZXVlQXJuLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLnVzZXJDb25maWcpIHtcbiAgICAgIGlmIChwcm9wcy5waG9uZU51bWJlciB8fCBwcm9wcy5xdWV1ZUNvbmZpZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZXJDb25maWcgY2Fubm90IGJlIHNldCB3aXRoIHBob25lTnVtYmVyIG9yIHF1ZXVlQ29uZmlnJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBxdWlja0Nvbm5lY3RUeXBlOiBRdWlja0Nvbm5lY3RUeXBlLlVTRVIsXG4gICAgICAgIHVzZXJDb25maWc6IHtcbiAgICAgICAgICBjb250YWN0Rmxvd0FybjogcHJvcHMudXNlckNvbmZpZy5mbG93LmNvbnRhY3RGbG93QXJuLFxuICAgICAgICAgIHVzZXJBcm46IHByb3BzLnVzZXJDb25maWcudXNlci51c2VyQXJuLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdPbmUgb2YgcGhvbmVOdW1iZXIsIHVzZXJDb25maWcsIG9yIHF1ZXVlQ29uZmlnIG11c3QgYmUgc3BlY2lmaWVkJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHF1aWNrQ29ubmVjdEFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1aWNrQ29ubmVjdC5hdHRyUXVpY2tDb25uZWN0QXJuO1xuICB9XG59XG5cbiJdfQ==
@@ -0,0 +1,4 @@
1
+ import { IResource } from 'aws-cdk-lib';
2
+ export interface IRoutingProfile extends IResource {
3
+ readonly routingProfileArn: string;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZ19wcm9maWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JvdXRpbmdfcHJvZmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWInO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSb3V0aW5nUHJvZmlsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IHJvdXRpbmdQcm9maWxlQXJuOiBzdHJpbmc7XG59Il19
@@ -0,0 +1,4 @@
1
+ import { IResource } from 'aws-cdk-lib';
2
+ export interface ISecurityProfile extends IResource {
3
+ readonly securityProfileArn: string;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlfcHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zZWN1cml0eV9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb3VyY2UgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVNlY3VyaXR5UHJvZmlsZSBleHRlbmRzIElSZXNvdXJjZSB7XG4gIHJlYWRvbmx5IHNlY3VyaXR5UHJvZmlsZUFybjogc3RyaW5nO1xufSJdfQ==
@@ -0,0 +1,80 @@
1
+ import { aws_kinesis as kinesis, aws_kinesisfirehose as kinesisfirehose, aws_kms as kms, aws_connect as connect, aws_s3 as s3 } from 'aws-cdk-lib';
2
+ export declare enum StorageResourceType {
3
+ CHAT_TRANSCRIPTS = "CHAT_TRANSCRIPTS",
4
+ CALL_RECORDINGS = "CALL_RECORDINGS",
5
+ SCHEDULED_REPORTS = "SCHEDULED_REPORTS",
6
+ MEDIA_STREAMS = "MEDIA_STREAMS",
7
+ CONTACT_TRACE_RECORDS = "CONTACT_TRACE_RECORDS",
8
+ AGENT_EVENTS = "AGENT_EVENTS"
9
+ }
10
+ export declare enum StorageEncryptionType {
11
+ KMS = "KMS"
12
+ }
13
+ export declare enum StorageConfigType {
14
+ S3_BUCKET = "S3_BUCKET",
15
+ KINESIS_VIDEO_STREAM = "KINESIS_VIDEO_STREAM",
16
+ KINESIS_STREAM = "KINESIS_STREAM",
17
+ KINESIS_FIREHOSE = "KINESIS_FIREHOSE"
18
+ }
19
+ export interface StorageEncryptionConfig {
20
+ /**
21
+ * The type of encryption used on the stream.
22
+ */
23
+ readonly encryptionType: StorageEncryptionType;
24
+ /**
25
+ * The KMS key used for encryption.
26
+ */
27
+ readonly encryptionKey: kms.IKey;
28
+ }
29
+ export interface StorageConfigKinesisVideoStream {
30
+ /**
31
+ * The encryption configuration for the Kinesis Video Stream.
32
+ */
33
+ readonly encryptionConfig: StorageEncryptionConfig;
34
+ /**
35
+ * The prefix of the video stream
36
+ */
37
+ readonly prefix: string;
38
+ /**
39
+ * Kinesis Video Streams retains the data in a data store that is associated with the stream.
40
+ *
41
+ * The default value is 0, indicating that the stream does not persist data.
42
+ */
43
+ readonly retentionPeriodHours?: number;
44
+ }
45
+ export interface StorageConfigS3 {
46
+ /**
47
+ * The bucket where the data will be stored
48
+ */
49
+ readonly bucket: s3.IBucket;
50
+ /**
51
+ * The prefix within the bucket
52
+ */
53
+ readonly prefix: string;
54
+ /**
55
+ * The optional encryption configuration.
56
+ */
57
+ readonly encryptionConfig?: StorageEncryptionConfig;
58
+ }
59
+ export interface StorageConfigKinesisStream {
60
+ readonly stream: kinesis.IStream;
61
+ }
62
+ export interface StorageConfigKinesisFirehose {
63
+ readonly firehose: kinesisfirehose.IDeliveryStream;
64
+ }
65
+ export declare class StorageConfig {
66
+ static buildS3(resourceType: StorageResourceType, props: StorageConfigS3): StorageConfig;
67
+ static buildKinesisVideoStream(resourceType: StorageResourceType, props: StorageConfigKinesisVideoStream): StorageConfig;
68
+ static buildKinesisStream(resourceType: StorageResourceType, props: StorageConfigKinesisStream): StorageConfig;
69
+ static buildKinesisFirehose(resourceType: StorageResourceType, props: StorageConfigKinesisFirehose): StorageConfig;
70
+ private static readonly VALID_RESOURCES;
71
+ readonly resourceType: StorageResourceType;
72
+ readonly storageType: StorageConfigType;
73
+ readonly kinesisFirehose?: kinesisfirehose.IDeliveryStream;
74
+ readonly kinesisStream?: kinesis.IStream;
75
+ readonly kinesisVideoStreamConfig?: StorageConfigKinesisVideoStream;
76
+ readonly s3Config?: StorageConfigS3;
77
+ private constructor();
78
+ checkConfig(): boolean;
79
+ asStorageConfigProps(instanceArn: string): connect.CfnInstanceStorageConfigProps;
80
+ }