/** * AttributeSyncStrategy - Handles synchronization of Customer and Project Attributes * * This strategy implements ISyncStrategy for the Attributes resource. * * Key responsibilities: * - Pull customer attributes from NEWO platform * - Pull project attributes for all projects * - Push changed attributes back to platform * - Detect changes using stored hashes */ import type { ISyncStrategy, PullOptions, PullResult, PushResult, ChangeItem, ValidationResult, StatusSummary } from './ISyncStrategy.js'; import type { CustomerConfig, ILogger } from '../../resources/common/types.js'; import type { AxiosInstance } from 'axios'; import type { CustomerAttribute, CustomerAttributesResponse } from '../../../types.js'; /** * Local attribute data for storage */ export interface LocalAttributeData { type: 'customer' | 'project'; projectIdn?: string; attributes: CustomerAttribute[]; idMapping: Record; } /** * API client factory type */ export type ApiClientFactory = (customer: CustomerConfig, verbose: boolean) => Promise; /** * AttributeSyncStrategy - Handles attribute synchronization */ export declare class AttributeSyncStrategy implements ISyncStrategy { private apiClientFactory; private logger; readonly resourceType = "attributes"; readonly displayName = "Attributes"; constructor(apiClientFactory: ApiClientFactory, logger: ILogger); /** * Pull all attributes from NEWO platform */ pull(customer: CustomerConfig, options?: PullOptions): Promise>; /** * Pull customer attributes */ private pullCustomerAttributes; /** * Pull project attributes */ private pullProjectAttributes; /** * Clean an attribute for local storage */ private cleanAttribute; /** * Format attributes as YAML */ private formatAttributesYaml; /** * Push changed attributes to NEWO platform */ push(customer: CustomerConfig, changes?: ChangeItem[]): Promise; /** * Push customer attributes */ private pushCustomerAttributes; /** * Push project attributes */ private pushProjectAttributes; /** * Detect changes in attribute files */ getChanges(customer: CustomerConfig): Promise[]>; /** * Validate attribute data */ validate(_customer: CustomerConfig, items: LocalAttributeData[]): Promise; /** * Get status summary */ getStatus(customer: CustomerConfig): Promise; } /** * Factory function for creating AttributeSyncStrategy */ export declare function createAttributeSyncStrategy(apiClientFactory: ApiClientFactory, logger: ILogger): AttributeSyncStrategy; //# sourceMappingURL=AttributeSyncStrategy.d.ts.map