import type { BentoClient } from '../client'; import type { DataResponse } from '../client/types'; import type { EmailTemplate } from '../email-templates/types'; import type { CreateSequenceEmailParameters, GetSequencesParameters, Sequence } from './types'; export class BentoSequences { private readonly _url = '/fetch/sequences'; constructor(private readonly _client: BentoClient) {} /** * Returns all of the sequences for the site, including their email templates. * * @param parameters Optional pagination parameters (e.g., { page: 2 }) * @returns Promise\ */ public async getSequences(parameters: GetSequencesParameters = {}): Promise { const result = await this._client.get>(this._url, parameters); if (!result || Object.keys(result).length === 0) return []; return result.data ?? []; } /** * Creates a new email template inside a sequence. * * @param sequenceId string * @param parameters CreateSequenceEmailParameters * @returns Promise\ */ public async createSequenceEmail( sequenceId: string, parameters: CreateSequenceEmailParameters ): Promise { const result = await this._client.post>( `${this._url}/${sequenceId}/emails/templates`, { email_template: parameters, } ); if (Object.keys(result).length === 0 || !result.data) return null; return result.data; } }