import type { DynamoDBClient } from '@aws-sdk/client-dynamodb';
import type { BatchGetCommandInput, DeleteCommandInput, DynamoDBDocumentClient, GetCommandInput, PutCommandInput, QueryCommandInput, ScanCommandInput, UpdateCommandInput } from '@aws-sdk/lib-dynamodb';
import { CMS_ENVIRONMENTS } from "../bsp/_constants.js";
import type { CopyObjectCommandInput, DeleteObjectCommandInput, HeadObjectCommandInput, ListObjectsCommandInput, PutObjectCommandInput, S3Client, StorageClass } from '@aws-sdk/client-s3';
import type { GetSecretValueCommandInput, SecretsManagerClient } from '@aws-sdk/client-secrets-manager';
import type { SSMClient } from '@aws-sdk/client-ssm';
import type { STSClient } from '@aws-sdk/client-sts';
import type Cloudflare from 'cloudflare';
import type { CachePurgeParams } from 'cloudflare/resources/cache/cache';
import type { Client as NotionClient } from '@notionhq/client';
import type { QueryDatabaseParameters } from '@notionhq/client/build/src/api-endpoints';
import { WebClient } from '@slack/web-api';
import type { CacheGenerator, FilePath } from "./misc.js";
import type { AWSAssumableRole, AWSCapitalCredentials, AWSCredentials, AWSProfileName, AWSS3Location } from "./aws.js";
import type { CloudflarePurgeZonesKey } from "./cloudflare.js";
import type { BSPClient, BSPContentType, BSPGenericEmbed } from "./bsp.js";
import type { TDateISO } from "./dates.js";
import { DomoClient } from "./domo.js";
import { NotionPropertyParsers } from "./notion.js";
type BaseParams
= {
client: DynamoDBClient;
docClient: DynamoDBDocumentClient;
table: string;
} & Partial
;
export interface DDBBatchGetDocumentsParams extends BaseParams {
docs: Record[];
}
export interface DDBDeleteDocumentsParams extends BaseParams {
doc: Record;
}
export interface DDBGetDocumentParams extends BaseParams {
doc: Record;
}
export interface DDBGetDocumentFromIndexParams extends BaseParams {
index: string;
doc: Record;
}
export interface DDBPutDocumentParams extends BaseParams {
doc: Record;
}
export interface DDBQueryParams extends BaseParams {
}
export interface DDBScanParams extends BaseParams {
}
export interface UpdateAttributeOptions {
append?: boolean;
}
export interface DDBUpdateDocumentParams extends BaseParams {
doc: Record;
updates?: Record;
attributeOptions?: Record;
}
type S3Base = {
client: S3Client;
bucket: string;
key: string;
};
export type S3CopyParams = {
client: S3Client;
source: string;
} & AWSS3Location & Partial;
export interface S3DeleteObjectParams extends S3Base, Partial {
}
export interface S3DownloadObjectParams extends S3Base {
responseContentType?: string;
}
export interface S3GetEtagParams extends S3Base {
}
export interface S3ExistsParams extends S3Base {
}
export interface S3HeadParams extends S3Base, Partial {
}
export interface S3ListParams extends Omit, Partial {
prefix?: string;
delimiter?: string;
}
export interface S3UploadParams extends S3Base, Partial {
body: PutObjectCommandInput['Body'];
contentType?: string;
cacheControl?: string;
storageClass?: StorageClass;
metadata?: Record;
}
export type AWSGetJSONSecretParams = {
client: SecretsManagerClient;
id: string;
} & Partial;
export type SSMGetParametersParams = {
client: SSMClient;
names: string[];
format?: 'json' | 'raw';
};
export type STSAssumeConfiguredRoleParams = {
client: STSClient;
role: AWSAssumableRole;
};
export type STSGetCallerIdentityParams = {
client: STSClient;
};
export type AWSGetCredentialsParams = {
profile?: AWSProfileName;
credentials?: AWSCredentials | AWSCapitalCredentials;
credentialsFilepath?: FilePath;
};
export type BSPFetchParams = {
client: BSPClient;
type: BSPContentType;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
body?: Record;
endpoint?: string;
query?: Record;
};
export type BSPArticleGetParams = {
client: BSPClient;
id: string;
};
export type BSPArticleCreateParams = {
client: BSPClient;
site?: string;
headline: string;
};
export type BSPArticleListParams = {
client: BSPClient;
start: TDateISO;
end?: TDateISO;
batchSize?: number;
};
export type BSPEmbedCreateParams = {
client: BSPClient;
embed: BSPGenericEmbed;
};
export type BSPEmbedUpdateParams = {
client: BSPClient;
id: string;
embed: BSPGenericEmbed;
};
export type BSPEmbedGetParams = {
client: BSPClient;
id: string;
};
export type CreateBrightspotServiceParams = {
token?: string;
env?: keyof typeof CMS_ENVIRONMENTS;
};
export type CreateCloudflareServiceParams = {
token?: string;
};
export type CloudflarePurgeParams = {
client: Cloudflare;
zone: string;
prefixes?: CachePurgeParams.CachePurgeFlexPurgeByPrefixes['prefixes'];
files?: CachePurgeParams.CachePurgeSingleFile['files'];
};
export type DomoQueryParams = {
client: DomoClient;
dataset: string;
query: string;
version?: string;
raw?: boolean;
};
export type NotionGetPageBlocksParams = {
client: NotionClient;
page: string;
};
export type NotionGetDatabaseDataParams = {
client: NotionClient;
database: string;
parsers?: NotionPropertyParsers;
metadata?: boolean;
} & Omit & {
database_id?: string;
};
export type NotionWriteHeadingParams = {
client: NotionClient;
page: string;
content: string;
};
export type NotionWriteTextParams = {
client: NotionClient;
page: string;
content: string;
newLine?: boolean;
};
export type SlackFindUserParams = {
client: WebClient;
name?: string;
email?: string;
id?: string;
};
export type SlackIsUserActivatedParams = {
client: WebClient;
email: string;
};
export type SyncParams = {
source: string;
destination: string;
bucket: string;
cache?: CacheGenerator | string;
ignore?: string[];
deleteRemoved?: boolean;
invalidate?: boolean;
credentials?: AWSCredentials;
profile?: AWSProfileName;
assumedAs?: AWSAssumableRole;
purge?: CloudflarePurgeZonesKey;
};
export type PublishParams = {
bucket?: string;
production?: boolean;
ignore?: string[];
deleteRemoved?: boolean;
credentials?: AWSCredentials;
profile?: AWSProfileName;
cache?: string | ((params: any) => string);
assumedAs?: AWSAssumableRole;
};
export {};