@insurup/sdk 0.1.10 → 0.1.11

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../package.json","../src/version.ts","../src/core/error-types.ts","../src/core/errors.ts","../src/core/result.ts","../src/core/config.ts","../src/core/retry.ts","../src/client/http.ts","../src/client/graphql.ts","../src/core/endpoints.ts","../src/clients/agent.ts","../src/clients/agentBranch.ts","../src/clients/agentRole.ts","../src/clients/agentSetup.ts","../src/clients/agentUser.ts","../src/clients/customer.ts","../src/clients/vehicle.ts","../src/clients/property.ts","../src/clients/policy.ts","../src/clients/case.ts","../src/clients/webhook.ts","../src/clients/coverage.ts","../src/clients/insurance.ts","../src/clients/proposal.ts","../src/clients/file.ts","../src/clients/language.ts","../src/clients/template.ts","../src/client/client.ts"],"sourcesContent":["/**\n * @fileoverview InsurUp TypeScript SDK - Main export file\n * @description Comprehensive TypeScript SDK for InsurUp platform operations\n */\n\n// Version export\nexport { VERSION } from \"./version.js\";\n\n// Main client export\nexport { DefaultInsurUpClient } from \"./client/client.js\";\n\n// GraphQL transport types\nexport type { GraphQLRequest, GraphQLResponse } from \"./client/graphql.js\";\nexport { GraphQLTransport } from \"./client/graphql.js\";\n\n// Specialized client exports\nexport { InsurUpAgentClient } from \"./clients/agent.js\";\nexport { InsurUpAgentBranchClient } from \"./clients/agentBranch.js\";\nexport { InsurUpAgentRoleClient } from \"./clients/agentRole.js\";\nexport { InsurUpAgentSetupClient } from \"./clients/agentSetup.js\";\nexport { InsurUpAgentUserClient } from \"./clients/agentUser.js\";\nexport { InsurUpCustomerClient } from \"./clients/customer.js\";\nexport { InsurUpVehicleClient } from \"./clients/vehicle.js\";\nexport { InsurUpPropertyClient } from \"./clients/property.js\";\nexport { InsurUpPolicyClient } from \"./clients/policy.js\";\nexport { InsurUpCaseClient } from \"./clients/case.js\";\nexport { InsurUpWebhookClient } from \"./clients/webhook.js\";\nexport { InsurUpCoverageClient } from \"./clients/coverage.js\";\nexport { InsurUpInsuranceClient } from \"./clients/insurance.js\";\nexport { InsurUpProposalClient } from \"./clients/proposal.js\";\nexport { InsurUpFileClient } from \"./clients/file.js\";\nexport { InsurUpLanguageClient } from \"./clients/language.js\";\nexport { InsurUpTemplateClient } from \"./clients/template.js\";\n\n// Core types and results\nexport type {\n // REST API result types\n InsurUpResult,\n Success,\n SuccessNoContent,\n ServerError,\n ClientError,\n ValidationError,\n // GraphQL result types\n InsurUpGraphQLResult,\n GraphQLErrors,\n GraphQLErrorItem,\n GraphQLErrorExtensions,\n GraphQLErrorLocation,\n} from \"./core/result.js\";\n\nexport {\n InsurUpServerErrorType,\n InsurUpClientErrorType,\n InsurUpGraphQLErrorCode,\n // REST helpers\n getDataOrThrow,\n throwIfError,\n // GraphQL helpers\n getGraphQLDataOrThrow,\n throwIfGraphQLError,\n createGraphQLErrors,\n} from \"./core/result.js\";\nexport { InsurUpError, extractError } from \"./core/errors.js\";\n\nexport type {\n InsurUpClientOptions,\n TokenProvider,\n RequestConfig,\n RequestInterceptor,\n ResponseInterceptor,\n RequestOptions,\n BackoffStrategy,\n RetryOptions,\n} from \"./core/options.js\";\n\n// Re-export all contract types from @insurup/contracts\nexport * from \"@insurup/contracts\";\n\n// Export endpoint constants for advanced usage\nexport * as Endpoints from \"./core/endpoints.js\";\n","{\n \"name\": \"@insurup/sdk\",\n \"version\": \"0.1.10\",\n \"description\": \"Type-safe TypeScript SDK for the InsurUp insurance platform with GraphQL support. Tree-shakeable, works everywhere.\",\n \"keywords\": [\n \"insurup\",\n \"insurance\",\n \"sdk\",\n \"typescript\",\n \"api-client\",\n \"graphql\",\n \"policy\",\n \"claims\",\n \"coverage\",\n \"vehicle-insurance\",\n \"property-insurance\"\n ],\n \"author\": \"InsurUp Team\",\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/InsurUp/ts-toolkit#readme\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/InsurUp/ts-toolkit.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/InsurUp/ts-toolkit/issues\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"type\": \"module\",\n \"sideEffects\": false,\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.js\"\n },\n \"./browser\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.browser.js\",\n \"default\": \"./dist/index.browser.js\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:tsc\": \"tsc\",\n \"check-types\": \"tsc --noEmit\",\n \"dev\": \"tsup --watch\",\n \"docs\": \"typedoc\",\n \"lint\": \"eslint src test --max-warnings 0\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.2\",\n \"@vitest/coverage-v8\": \"^4.0.17\",\n \"eslint\": \"^9.39.2\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-prettier\": \"^5.5.5\",\n \"msw\": \"^2.12.7\",\n \"prettier\": \"^3.8.0\",\n \"tsup\": \"^8.5.1\",\n \"typedoc\": \"^0.28.16\",\n \"typescript\": \"^5.9.3\",\n \"typescript-eslint\": \"^8.53.1\",\n \"vitest\": \"^4.0.17\"\n },\n \"dependencies\": {\n \"@insurup/contracts\": \"workspace:*\"\n }\n}\n","/**\n * SDK version information.\n * @module version\n */\n\nimport pkg from \"../package.json\" with { type: \"json\" };\n\n/**\n * The current version of the InsurUp SDK.\n * This value is automatically derived from package.json.\n */\nexport const VERSION: string = pkg.version;\n","/**\n * @fileoverview Error Type Enums - Foundational error types used across the SDK\n * @description Centralized error type definitions to avoid circular dependencies\n */\n\n/**\n * Client-side error types that can occur during API operations\n */\nexport enum InsurUpClientErrorType {\n Unknown = \"Unknown\",\n JsonSerialization = \"JsonSerialization\",\n JsonDeserialization = \"JsonDeserialization\",\n NullResponse = \"NullResponse\",\n Timeout = \"Timeout\",\n HttpRequestFailed = \"HttpRequestFailed\",\n UnexpectedNoContent = \"UnexpectedNoContent\",\n GraphQLError = \"GraphQLError\",\n}\n\n/**\n * Server-side error types from HTTP responses\n */\nexport enum InsurUpServerErrorType {\n Unknown = \"Unknown\",\n AccessDenied = \"AccessDenied\",\n BusinessValidation = \"BusinessValidation\",\n FeatureNotSupported = \"FeatureNotSupported\",\n InputValidation = \"InputValidation\",\n ResourceDuplicate = \"ResourceDuplicate\",\n ResourceInvalidState = \"ResourceInvalidState\",\n ResourceNotFound = \"ResourceNotFound\",\n EndpointNotFound = \"EndpointNotFound\",\n UnsupportedMediaType = \"UnsupportedMediaType\",\n MethodNotAllowed = \"MethodNotAllowed\",\n Unauthorized = \"Unauthorized\",\n Upstream = \"Upstream\",\n}\n\n/**\n * GraphQL error codes from the server\n * These match the error codes set by the GraphQL error filter on the backend\n */\nexport enum InsurUpGraphQLErrorCode {\n /** Access denied - user lacks permission */\n Forbidden = \"FORBIDDEN\",\n /** Authentication required or invalid */\n Unauthorized = \"UNAUTHORIZED\",\n /** Requested resource not found */\n NotFound = \"NOT_FOUND\",\n /** Invalid input or business validation failure */\n BadRequest = \"BAD_REQUEST\",\n /** Resource conflict (duplicate or invalid state) */\n Conflict = \"CONFLICT\",\n /** Feature not supported */\n NotSupported = \"NOT_SUPPORTED\",\n /** Upstream service error */\n UpstreamError = \"UPSTREAM_ERROR\",\n /** Internal server error */\n InternalError = \"INTERNAL_ERROR\",\n /** GraphQL validation error */\n ValidationError = \"VALIDATION_ERROR\",\n /** Filter is required for this query */\n FilterRequired = \"FILTER_REQUIRED\",\n /** Filter time span exceeds maximum allowed */\n FilterMaxSpanExceeded = \"FILTER_MAX_SPAN_EXCEEDED\",\n /** Unknown error code */\n Unknown = \"UNKNOWN\",\n}\n","/**\n * @fileoverview Error handling and mapping utilities\n * @description Error type mapping and parsing logic\n */\n\nimport {\n InsurUpServerErrorType,\n InsurUpClientErrorType,\n} from \"./error-types.js\";\nimport type {\n ValidationError} from \"./result.js\";\nimport {\n type ServerError,\n type ClientError,\n type GraphQLErrors,\n} from \"./result.js\";\n\n/**\n * Error type URLs from the API\n */\nconst ERROR_TYPE_URLS = {\n \"https://api.insurup.com/problems/access-denied\":\n InsurUpServerErrorType.AccessDenied,\n \"https://api.insurup.com/problems/business-validation\":\n InsurUpServerErrorType.BusinessValidation,\n \"https://api.insurup.com/problems/feature-not-supported\":\n InsurUpServerErrorType.FeatureNotSupported,\n \"https://api.insurup.com/problems/input-validation\":\n InsurUpServerErrorType.InputValidation,\n \"https://api.insurup.com/problems/resource-duplicate\":\n InsurUpServerErrorType.ResourceDuplicate,\n \"https://api.insurup.com/problems/resource-invalid-state\":\n InsurUpServerErrorType.ResourceInvalidState,\n \"https://api.insurup.com/problems/resource-not-found\":\n InsurUpServerErrorType.ResourceNotFound,\n \"https://api.insurup.com/problems/endpoint-not-found\":\n InsurUpServerErrorType.EndpointNotFound,\n \"https://api.insurup.com/problems/unauthorized\":\n InsurUpServerErrorType.Unauthorized,\n \"https://api.insurup.com/problems/upstream-service\":\n InsurUpServerErrorType.Upstream,\n \"https://api.insurup.com/problems/unsupported-media-type\":\n InsurUpServerErrorType.UnsupportedMediaType,\n \"https://api.insurup.com/problems/method-not-allowed\":\n InsurUpServerErrorType.MethodNotAllowed,\n} as const;\n\n/**\n * Interface representing the server error response structure\n */\ninterface ServerErrorResponse {\n type?: string;\n title?: string;\n detail?: string;\n instance?: string;\n status?: number;\n codes?: string[];\n traceId?: string;\n template?: string;\n templateArgs?: Record<string, unknown>;\n suggestions?: string[];\n validationErrors?: Array<{\n propertyName?: string;\n errorMessage?: string;\n attemptedValue?: unknown;\n }>;\n}\n\n/**\n * Maps a server error type string to the corresponding enum value\n */\nfunction mapServerErrorType(typeString: string): InsurUpServerErrorType {\n const normalizedType = typeString.toLowerCase().trim();\n return (\n ERROR_TYPE_URLS[normalizedType as keyof typeof ERROR_TYPE_URLS] ??\n InsurUpServerErrorType.Unknown\n );\n}\n\n/**\n * Parses validation errors from server response\n */\nfunction parseValidationErrors(\n validationErrors?: Array<{\n propertyName?: string;\n errorMessage?: string;\n attemptedValue?: unknown;\n }>,\n): ValidationError[] {\n if (!validationErrors || !Array.isArray(validationErrors)) {\n return [];\n }\n\n return validationErrors\n .filter((error): error is NonNullable<typeof error> => error != null)\n .map(\n (error): ValidationError => ({\n propertyName: error.propertyName ?? \"\",\n errorMessage: error.errorMessage ?? \"\",\n attemptedValue: error.attemptedValue ?? null,\n }),\n );\n}\n\n/**\n * Parses server error response and creates a ServerError object\n */\nexport function parseServerError(\n response: Response,\n responseBody: string,\n): ServerError {\n let errorData: ServerErrorResponse = {};\n\n // Try to parse JSON response body\n try {\n if (responseBody.trim()) {\n const parsed = JSON.parse(responseBody) as unknown;\n if (typeof parsed === \"object\" && parsed !== null) {\n errorData = parsed as ServerErrorResponse;\n }\n }\n } catch {\n // If JSON parsing fails, create minimal error info from response\n }\n\n const typeString =\n errorData.type ?? \"https://api.insurup.com/problems/unknown\";\n const type = mapServerErrorType(typeString);\n\n return {\n kind: \"server-error\",\n isSuccess: false,\n message:\n errorData.detail ?? (response.statusText || \"Unknown server error\"),\n type,\n typeString,\n title: errorData.title ?? `HTTP ${response.status}`,\n detail: errorData.detail ?? (response.statusText || \"Unknown server error\"),\n instance: errorData.instance ?? \"\",\n status: errorData.status ?? response.status,\n codes: errorData.codes ?? [],\n traceId: errorData.traceId ?? undefined,\n template: errorData.template ?? \"\",\n templateArgs: errorData.templateArgs ?? {},\n suggestions: errorData.suggestions ?? [],\n validationErrors: parseValidationErrors(errorData.validationErrors),\n };\n}\n\n/**\n * Creates a client error for network/timeout issues\n */\nexport function createNetworkError(error: unknown): ClientError {\n if (error instanceof Error) {\n if (error.name === \"AbortError\" || error.message.includes(\"timeout\")) {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Request timed out\",\n type: InsurUpClientErrorType.Timeout,\n error: error,\n };\n }\n\n const messageLower = error.message.toLowerCase();\n if (\n error.name === \"TypeError\" ||\n messageLower.includes(\"fetch\") ||\n messageLower.includes(\"network\") ||\n messageLower.includes(\"failed\") ||\n messageLower.includes(\"econn\") ||\n messageLower.includes(\"enotfound\")\n ) {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"HTTP request failed\",\n type: InsurUpClientErrorType.HttpRequestFailed,\n error: error,\n };\n }\n\n // Default other Error instances to HttpRequestFailed for better DX\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"HTTP request failed\",\n type: InsurUpClientErrorType.HttpRequestFailed,\n error: error,\n };\n }\n\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Unknown error occurred\",\n type: InsurUpClientErrorType.Unknown,\n error: error,\n };\n}\n\n/**\n * Creates a client error for JSON serialization issues\n */\nexport function createSerializationError(error: unknown): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message:\n error instanceof Error\n ? error.message\n : \"Failed to serialize request to JSON\",\n type: InsurUpClientErrorType.JsonSerialization,\n error: error,\n };\n}\n\n/**\n * Creates a client error for JSON deserialization issues\n */\nexport function createDeserializationError(error: unknown): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Failed to parse response JSON\",\n type: InsurUpClientErrorType.JsonDeserialization,\n error: error,\n };\n}\n\n/**\n * Creates a client error for null/empty responses when data was expected\n */\nexport function createNullResponseError(): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Response was empty or null when data was expected\",\n type: InsurUpClientErrorType.NullResponse,\n };\n}\n\n/**\n * Creates a client error for unexpected empty/no-content responses\n * Used when an endpoint that should return data receives 204 or empty body\n */\nexport function createUnexpectedNoContentError(): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Expected response data but received no content\",\n type: InsurUpClientErrorType.UnexpectedNoContent,\n };\n}\n\nexport function extractError(\n error: Error,\n): ClientError | ServerError | GraphQLErrors {\n if (error instanceof InsurUpError) {\n return error.error;\n }\n\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: error.message,\n type: InsurUpClientErrorType.Unknown,\n } as ClientError;\n}\n\n/**\n * Custom InsurUp error class that extends the standard Error\n */\nexport class InsurUpError extends Error {\n /**\n * The original client, server, or GraphQL error object\n */\n public readonly error: ClientError | ServerError | GraphQLErrors;\n\n constructor(error: ClientError | ServerError | GraphQLErrors) {\n super(error.message);\n this.name = \"InsurUpError\";\n this.error = error;\n }\n}\n","/**\n * @fileoverview InsurUp Result Types - Type-safe discriminated unions for operation results\n * @description Type-safe discriminated unions for operation results\n */\n\nimport { InsurUpError } from \"./errors.js\";\nimport {\n InsurUpClientErrorType,\n InsurUpServerErrorType,\n InsurUpGraphQLErrorCode,\n} from \"./error-types.js\";\n\n/**\n * Represents a validation error that occurred during request processing\n */\nexport interface ValidationError {\n /**\n * The name of the property that failed validation\n * The name of the property.\n */\n readonly propertyName: string;\n\n /**\n * The error message describing what went wrong\n * The error message\n */\n readonly errorMessage: string;\n\n /**\n * The property value that caused the validation failure\n * The property value that caused the failure.\n */\n readonly attemptedValue: unknown;\n}\n\n// Re-export error types for convenience\nexport {\n InsurUpClientErrorType,\n InsurUpServerErrorType,\n InsurUpGraphQLErrorCode,\n};\n\n/**\n * Represents a successful operation with data\n */\nexport interface Success<T> {\n readonly kind: \"success\";\n readonly isSuccess: true;\n readonly message: \"Success\";\n readonly data: T;\n}\n\n/**\n * Represents a successful operation without data (e.g., 204 No Content)\n */\nexport interface SuccessNoContent {\n readonly kind: \"success\";\n readonly isSuccess: true;\n readonly message: \"Success\";\n}\n\n/**\n * Represents an error response from the server (4xx and 5xx HTTP status codes)\n */\nexport interface ServerError {\n readonly kind: \"server-error\";\n readonly isSuccess: false;\n readonly message: string;\n readonly type: InsurUpServerErrorType;\n readonly typeString: string;\n readonly title: string;\n readonly detail: string;\n readonly instance: string;\n readonly status: number;\n readonly codes: readonly string[];\n readonly traceId: string | undefined;\n readonly template: string;\n readonly templateArgs: Readonly<Record<string, unknown>>;\n readonly suggestions: readonly string[];\n readonly validationErrors: readonly ValidationError[];\n}\n\n/**\n * Represents a client-side error (exceptions, null JSON responses, etc.)\n */\nexport interface ClientError {\n readonly kind: \"client-error\";\n readonly isSuccess: false;\n readonly message: string;\n readonly type: InsurUpClientErrorType;\n readonly error?: unknown;\n}\n\n// ============================================\n// GraphQL Error Types\n// ============================================\n\n/**\n * Represents the location of an error in a GraphQL document\n */\nexport interface GraphQLErrorLocation {\n readonly line: number;\n readonly column: number;\n}\n\n/**\n * Extensions attached to GraphQL errors by the server\n * Contains structured error information from the backend error filter\n */\nexport interface GraphQLErrorExtensions {\n /** The error code (e.g., FORBIDDEN, UNAUTHORIZED, NOT_FOUND) */\n readonly code?: InsurUpGraphQLErrorCode;\n /** Trace ID for debugging/correlation */\n readonly traceId?: string;\n /** Array of error codes from the backend AppException */\n readonly codes?: readonly string[];\n /** Message template for localization */\n readonly template?: string;\n /** Arguments for the message template */\n readonly templateArgs?: Readonly<Record<string, unknown>>;\n /** Suggested actions or fixes */\n readonly suggestions?: readonly string[];\n /** Additional extension fields */\n readonly [key: string]: unknown;\n}\n\n/**\n * Represents a single GraphQL error item\n */\nexport interface GraphQLErrorItem {\n /** The error message */\n readonly message: string;\n /** Locations in the GraphQL document where the error occurred */\n readonly locations?: readonly GraphQLErrorLocation[];\n /** Path to the field that caused the error */\n readonly path?: readonly (string | number)[];\n /** Extensions containing additional error information */\n readonly extensions?: GraphQLErrorExtensions;\n}\n\n/**\n * Represents a GraphQL error response containing one or more errors\n */\nexport interface GraphQLErrors {\n readonly kind: \"graphql-error\";\n readonly isSuccess: false;\n /** First error message for convenience */\n readonly message: string;\n /** All GraphQL errors from the response */\n readonly errors: readonly GraphQLErrorItem[];\n}\n\n/**\n * Discriminated union representing the result of a GraphQL operation\n *\n * Similar to InsurUpResult but uses GraphQLErrors instead of ServerError\n * since GraphQL errors have a different schema and can contain multiple errors.\n *\n * @template T The type of the success data (void for no-content operations)\n */\nexport type InsurUpGraphQLResult<T = void> = T extends void\n ? SuccessNoContent | GraphQLErrors | ClientError\n : Success<T> | GraphQLErrors | ClientError;\n\n/**\n * Discriminated union representing the result of an InsurUp operation\n *\n * When called without a type parameter (InsurUpResult), represents a no-content result\n * where the success case has no data field.\n *\n * When called with a type parameter (InsurUpResult<T>), represents a result with data\n * where the success case has a data field of type T.\n *\n * @template T The type of the success data (void for no-content operations)\n */\nexport type InsurUpResult<T = void> = T extends void\n ? SuccessNoContent | ServerError | ClientError\n : Success<T> | ServerError | ClientError;\n\n/**\n * Creates a successful result with data\n */\nexport function createSuccess<T>(data: T): Success<T> {\n return {\n kind: \"success\",\n isSuccess: true,\n message: \"Success\",\n data,\n };\n}\n\n/**\n * Creates a successful result without data (for 204 No Content responses)\n */\nexport function createSuccessNoContent(): SuccessNoContent {\n return {\n kind: \"success\",\n isSuccess: true,\n message: \"Success\",\n };\n}\n\n/**\n * Helper type to extract data type from a Success result\n */\nexport type ExtractSuccessData<R> = R extends Success<infer T> ? T : never;\n\n/**\n * Extracts data from a successful result or throws an InsurUpError\n * Only works with InsurUpResult<T> where T is not void\n */\nexport function getDataOrThrow<T>(result: InsurUpResult<T>): T {\n if (result.isSuccess) {\n // When T is not void, result.isSuccess means result is Success<T>\n return (result as unknown as Success<T>).data;\n }\n throw new InsurUpError(result);\n}\n\n/**\n * Throws an InsurUpError if the result is not successful\n * Works with any InsurUpResult type\n */\nexport function throwIfError(\n result: InsurUpResult<unknown> | InsurUpResult,\n): void {\n if (result.isSuccess) {\n return;\n }\n throw new InsurUpError(result);\n}\n\n// ============================================\n// GraphQL Result Helpers\n// ============================================\n\n/**\n * Extracts data from a successful GraphQL result or throws an InsurUpError\n * Only works with InsurUpGraphQLResult<T> where T is not void\n */\nexport function getGraphQLDataOrThrow<T>(result: InsurUpGraphQLResult<T>): T {\n if (result.isSuccess) {\n return (result as unknown as Success<T>).data;\n }\n throw new InsurUpError(result);\n}\n\n/**\n * Throws an InsurUpError if the GraphQL result is not successful\n * Works with any InsurUpGraphQLResult type\n */\nexport function throwIfGraphQLError(\n result: InsurUpGraphQLResult<unknown> | InsurUpGraphQLResult,\n): void {\n if (result.isSuccess) {\n return;\n }\n throw new InsurUpError(result);\n}\n\n/**\n * Creates a GraphQL errors result from an array of GraphQL error items\n */\nexport function createGraphQLErrors(\n errors: readonly GraphQLErrorItem[],\n): GraphQLErrors {\n return {\n kind: \"graphql-error\",\n isSuccess: false,\n message: errors[0]?.message ?? \"Unknown GraphQL error\",\n errors,\n };\n}\n","/**\n * @fileoverview SDK Configuration - Default values and configuration constants\n * @description Default configuration values for the InsurUp SDK client\n */\n\nimport type {\n InsurUpClientOptions,\n RetryOptions,\n TokenProvider,\n RequestInterceptor,\n ResponseInterceptor,\n} from \"./options.js\";\n\n/**\n * Default retry options for transient failure handling\n * Based on standard exponential backoff defaults with InsurUp-specific settings\n */\nexport const DEFAULT_RETRY_OPTIONS: Required<RetryOptions> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 10000,\n randomize: true,\n backoffStrategy: \"exponential\",\n retryableStatusCodes: [408, 429, 500, 502, 503, 504],\n onFailedAttempt: () => {}, // No-op by default\n} as const;\n\n/**\n * Default logger implementation using console\n */\nexport const DEFAULT_LOGGER = {\n info: (message: string, data?: unknown) => {\n if (data !== undefined) {\n console.info(message, data);\n } else {\n console.info(message);\n }\n },\n warn: (message: string, data?: unknown) => {\n if (data !== undefined) {\n console.warn(message, data);\n } else {\n console.warn(message);\n }\n },\n error: (message: string, data?: unknown) => {\n if (data !== undefined) {\n console.error(message, data);\n } else {\n console.error(message);\n }\n },\n} as const;\n\n/**\n * Required client options type (tokenProvider, onRequest, onResponse, retry remain optional)\n */\nexport type RequiredClientOptions = Required<\n Omit<\n InsurUpClientOptions,\n \"tokenProvider\" | \"onRequest\" | \"onResponse\" | \"retry\"\n >\n> & {\n tokenProvider?: TokenProvider;\n onRequest?: RequestInterceptor;\n onResponse?: ResponseInterceptor;\n retry?: Required<RetryOptions>;\n};\n\n/**\n * Default configuration values for the InsurUp SDK client\n */\nexport const DEFAULT_CLIENT_OPTIONS: RequiredClientOptions = {\n baseUrl: \"https://api.insurup.com/api/\",\n customHeaders: {},\n userAgent: \"@insurup/sdk\",\n timeoutMs: 30000,\n logLevel: \"none\",\n logger: DEFAULT_LOGGER,\n retry: undefined,\n tokenProvider: undefined,\n onRequest: undefined,\n onResponse: undefined,\n} as const;\n\n/**\n * Merges user-provided options with defaults\n * @param options User-provided options\n * @returns Complete options object with defaults applied\n */\nexport function mergeWithDefaults(\n options?: InsurUpClientOptions,\n): RequiredClientOptions {\n return {\n baseUrl: options?.baseUrl ?? DEFAULT_CLIENT_OPTIONS.baseUrl,\n customHeaders: {\n ...DEFAULT_CLIENT_OPTIONS.customHeaders,\n ...options?.customHeaders,\n },\n userAgent: options?.userAgent ?? DEFAULT_CLIENT_OPTIONS.userAgent,\n timeoutMs: options?.timeoutMs ?? DEFAULT_CLIENT_OPTIONS.timeoutMs,\n logLevel: options?.logLevel ?? DEFAULT_CLIENT_OPTIONS.logLevel,\n logger: options?.logger ?? DEFAULT_CLIENT_OPTIONS.logger,\n retry: options?.retry\n ? { ...DEFAULT_RETRY_OPTIONS, ...options.retry }\n : undefined,\n tokenProvider: options?.tokenProvider,\n onRequest: options?.onRequest,\n onResponse: options?.onResponse,\n };\n}\n","/**\n * @fileoverview Lightweight retry utility for transient failure handling\n * @description Provides configurable backoff strategies with jitter, zero-dependency replacement for p-retry\n */\n\nimport type { RetryOptions } from \"./options.js\";\n\n/**\n * Executes a function with configurable backoff retry logic\n * @template T The return type of the function\n * @param fn The function to execute, receives attempt number (1-based)\n * @param options Retry configuration options\n * @returns Promise resolving to the function's result\n * @throws The last error encountered if all retry attempts fail\n */\nexport async function withRetry<T>(\n fn: (attemptNumber: number) => Promise<T>,\n options: Required<RetryOptions>,\n): Promise<T> {\n const {\n retries,\n factor,\n minTimeout,\n maxTimeout,\n randomize,\n backoffStrategy,\n onFailedAttempt,\n } = options;\n\n let attempt = 1;\n\n while (true) {\n try {\n return await fn(attempt);\n } catch (error) {\n const isLastAttempt = attempt > retries;\n\n if (isLastAttempt) {\n throw error;\n }\n\n // Calculate delay based on backoff strategy\n let delay: number;\n switch (backoffStrategy) {\n case \"linear\":\n delay = minTimeout * attempt;\n break;\n case \"constant\":\n delay = minTimeout;\n break;\n case \"exponential\":\n default:\n delay = minTimeout * Math.pow(factor, attempt - 1);\n }\n\n // Apply jitter if enabled\n if (randomize) {\n // Random factor between 1 and 2, matching p-retry behavior\n delay *= 1 + Math.random();\n }\n\n // Cap at maxTimeout\n delay = Math.min(delay, maxTimeout);\n\n // Notify callback\n if (onFailedAttempt) {\n onFailedAttempt({\n attemptNumber: attempt,\n retriesLeft: retries - attempt + 1,\n name: error instanceof Error ? error.name : \"Error\",\n message: error instanceof Error ? error.message : String(error),\n error: error instanceof Error ? error : new Error(String(error)),\n });\n }\n\n // Wait before next attempt\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n attempt++;\n }\n }\n}\n","/**\n * @fileoverview HTTP Transport Layer - Fetch-based HTTP client\n * @description Cross-environment HTTP transport with timeout support and error handling\n */\n\nimport type { InsurUpResult } from \"../core/result.js\";\nimport {\n createSuccess,\n createSuccessNoContent,\n InsurUpClientErrorType,\n} from \"../core/result.js\";\nimport {\n parseServerError,\n createNetworkError,\n createSerializationError,\n createDeserializationError,\n createUnexpectedNoContentError,\n} from \"../core/errors.js\";\nimport type {\n InsurUpClientOptions,\n RequestConfig,\n RequestOptions,\n} from \"../core/options.js\";\nimport {\n mergeWithDefaults,\n type RequiredClientOptions,\n} from \"../core/config.js\";\nimport { withRetry } from \"../core/retry.js\";\n\n/**\n * HTTP method types\n */\nexport type HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\";\n\n/**\n * Valid request body types for HTTP requests\n */\nexport type RequestBody = unknown | FormData;\n\n/**\n * Error type that built-in retry can understand\n */\ninterface RetryableError extends Error {\n result: InsurUpResult<unknown> | InsurUpResult;\n attemptNumber: number;\n}\n\n/**\n * HTTP transport class providing fetch-based request capabilities\n * with environment detection and timeout support\n */\nexport class HttpTransport {\n private readonly options: RequiredClientOptions;\n\n constructor(options?: InsurUpClientOptions) {\n this.options = mergeWithDefaults(options);\n }\n\n /**\n * Sends an HTTP request and returns the parsed result\n * @template T The expected response type (void for no-content operations)\n * @param method HTTP method\n * @param path Relative path (will be prefixed with baseUrl)\n * @param body Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @param expectContent Whether the response should contain data (internal use)\n * @returns Promise resolving to InsurUpResult<T>\n */\n private async sendInternal<T>(\n method: HttpMethod,\n path: string,\n body?: RequestBody,\n options?: RequestOptions,\n expectContent: boolean = true,\n ): Promise<InsurUpResult<T> | InsurUpResult> {\n const startTime = Date.now();\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n\n // Build initial request config for interceptors\n let requestConfig: RequestConfig = {\n url,\n method,\n headers: { ...this.options.customHeaders, ...options?.headers },\n body,\n };\n\n // Call request interceptor if provided\n if (this.options.onRequest) {\n try {\n requestConfig = await this.options.onRequest(requestConfig);\n } catch (error) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Request interceptor failed:\", error);\n }\n }\n }\n\n this.logRequest(method, path, body, options?.headers);\n\n const executeRequest = async (\n attemptNumber: number,\n ): Promise<InsurUpResult<T> | InsurUpResult> => {\n try {\n const result = await this.sendSingleRequest<T>(\n requestConfig.method as HttpMethod,\n path,\n requestConfig.body,\n {\n headers: requestConfig.headers,\n signal: options?.signal,\n timeoutMs: options?.timeoutMs,\n },\n expectContent,\n );\n\n // If it's a success, return it\n if (result.kind === \"success\") {\n return result;\n }\n\n // Check if this error should be retried\n if (this.shouldRetryResult(result)) {\n const error = new Error(result.message) as RetryableError;\n error.result = result;\n error.attemptNumber = attemptNumber;\n\n throw error;\n }\n\n // Non-retryable error, return it directly\n return result;\n } catch (rawError) {\n // Handle raw errors from fetch (like timeout errors)\n const networkError = createNetworkError(rawError);\n\n // Don't retry timeout errors\n if (networkError.type === InsurUpClientErrorType.Timeout) {\n return networkError;\n }\n\n // Only retry HttpRequestFailed errors\n if (\n networkError.type === InsurUpClientErrorType.HttpRequestFailed &&\n this.options.retry\n ) {\n const error = new Error(networkError.message) as RetryableError;\n error.result = networkError;\n error.attemptNumber = attemptNumber;\n\n throw error;\n }\n\n // Non-retryable error, return it directly\n return networkError;\n }\n };\n\n try {\n let result: InsurUpResult<T> | InsurUpResult;\n\n if (this.options.retry) {\n result = await withRetry(executeRequest, {\n ...this.options.retry,\n onFailedAttempt: (error) => {\n const originalError = error.error as RetryableError;\n if (originalError.result) {\n this.logRetry(error.attemptNumber, originalError.result);\n }\n\n // Call user's onFailedAttempt if provided\n if (this.options.retry?.onFailedAttempt) {\n this.options.retry.onFailedAttempt(error);\n }\n },\n });\n } else {\n result = await executeRequest(1);\n }\n\n const duration = Date.now() - startTime;\n this.logResponse(\"SUCCESS\", duration, 1, result);\n\n // Call response interceptor if provided\n if (this.options.onResponse) {\n try {\n return (await this.options.onResponse(\n result as InsurUpResult<unknown>,\n requestConfig,\n )) as InsurUpResult<T> | InsurUpResult;\n } catch (error) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Response interceptor failed:\", error);\n }\n }\n }\n\n return result;\n } catch (error) {\n const duration = Date.now() - startTime;\n // If it's our custom error with a result, use that\n const retryableError = error as RetryableError;\n if (retryableError.result) {\n this.logResponse(\n \"ERROR\",\n duration,\n retryableError.attemptNumber || 1,\n retryableError.result,\n );\n\n // Call response interceptor for errors too\n if (this.options.onResponse) {\n try {\n return (await this.options.onResponse(\n retryableError.result as InsurUpResult<unknown>,\n requestConfig,\n )) as InsurUpResult<T> | InsurUpResult;\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return retryableError.result as InsurUpResult<T> | InsurUpResult;\n }\n\n // Otherwise, it's a network error\n const networkError = createNetworkError(error);\n this.logResponse(\"ERROR\", duration, 1, networkError);\n\n // Call response interceptor for network errors too\n if (this.options.onResponse) {\n try {\n return (await this.options.onResponse(\n networkError as InsurUpResult<unknown>,\n requestConfig,\n )) as InsurUpResult<T> | InsurUpResult;\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return networkError;\n }\n }\n\n /**\n * Sends a single HTTP request without retry logic\n */\n private async sendSingleRequest<T>(\n method: HttpMethod,\n path: string,\n body?: RequestBody,\n options?: RequestOptions,\n expectContent: boolean = true,\n ): Promise<InsurUpResult<T> | InsurUpResult> {\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n const requestHeaders = await this.buildHeaders(options?.headers);\n\n // Serialize request body\n let serializedBody: string | FormData | null = null;\n if (body) {\n if (body instanceof FormData) {\n // Don't serialize FormData - let browser set Content-Type with boundary\n serializedBody = body;\n } else {\n try {\n serializedBody = JSON.stringify(body);\n // Set Content-Type header for JSON requests\n if (!this.hasContentTypeHeader(requestHeaders)) {\n requestHeaders[\"Content-Type\"] = \"application/json\";\n }\n } catch (error) {\n return createSerializationError(error);\n }\n }\n }\n\n // Create AbortController for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(),\n options?.timeoutMs ?? this.options.timeoutMs,\n );\n\n // Bridge external signal (if provided) to our controller\n let signalCleanup: (() => void) | undefined;\n if (options?.signal) {\n if (options.signal.aborted) {\n controller.abort();\n } else {\n const abortHandler = () => controller.abort();\n options.signal.addEventListener(\"abort\", abortHandler, { once: true });\n signalCleanup = () =>\n options.signal!.removeEventListener(\"abort\", abortHandler);\n }\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers: requestHeaders,\n body: serializedBody,\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timeoutId);\n signalCleanup?.();\n }\n\n return await this.handleResponse<T>(response, expectContent);\n }\n\n /**\n * Convenience method for GET requests - always expects content\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n */\n async get<T>(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"GET\", path, null, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * POST request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async post<T>(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"POST\", path, data, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * POST request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async postNoContent(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"POST\",\n path,\n data,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * PUT request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async put<T>(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"PUT\", path, data, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * PUT request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async putNoContent(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"PUT\",\n path,\n data,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * PATCH request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async patch<T>(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"PATCH\", path, data, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * PATCH request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async patchNoContent(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"PATCH\",\n path,\n data,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * DELETE request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async delete<T>(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"DELETE\", path, null, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * DELETE request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async deleteNoContent(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"DELETE\",\n path,\n null,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * Downloads a binary file as a Blob\n * Use this for downloading documents, images, or other binary content\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<Blob>\n */\n async getBlob(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<Blob>> {\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n const requestHeaders = await this.buildHeaders(options?.headers);\n\n // Build request config for interceptors\n let requestConfig: RequestConfig = {\n url,\n method: \"GET\",\n headers: requestHeaders,\n };\n\n // Call request interceptor if provided\n if (this.options.onRequest) {\n try {\n requestConfig = await this.options.onRequest(requestConfig);\n } catch (error) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Request interceptor failed:\", error);\n }\n }\n }\n\n this.logRequest(\"GET\", path, undefined, options?.headers);\n\n // Create AbortController for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(),\n options?.timeoutMs ?? this.options.timeoutMs,\n );\n\n // Bridge external signal (if provided) to our controller\n let signalCleanup: (() => void) | undefined;\n if (options?.signal) {\n if (options.signal.aborted) {\n controller.abort();\n } else {\n const abortHandler = () => controller.abort();\n options.signal.addEventListener(\"abort\", abortHandler, { once: true });\n signalCleanup = () =>\n options.signal!.removeEventListener(\"abort\", abortHandler);\n }\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: \"GET\",\n headers: requestConfig.headers,\n signal: controller.signal,\n });\n } catch (error) {\n // Cleanup is handled by finally block\n const networkError = createNetworkError(error);\n\n // Call response interceptor for errors\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(networkError, requestConfig);\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return networkError;\n } finally {\n clearTimeout(timeoutId);\n signalCleanup?.();\n }\n\n // Handle non-success HTTP status codes\n if (!response.ok) {\n const errorText = await response.text();\n const serverError = parseServerError(response, errorText);\n\n // Call response interceptor for errors\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(serverError, requestConfig);\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return serverError;\n }\n\n // Return the blob\n try {\n const blob = await response.blob();\n const result = createSuccess(blob);\n\n // Call response interceptor\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(result, requestConfig);\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return result;\n } catch (error) {\n const deserializationError = createDeserializationError(error);\n\n // Call response interceptor for errors\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(\n deserializationError,\n requestConfig,\n );\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return deserializationError;\n }\n }\n\n /**\n * Builds request headers including defaults and custom headers\n * Invokes token provider if available and adds Authorization header\n */\n private async buildHeaders(\n additionalHeaders?: Record<string, string>,\n ): Promise<Record<string, string>> {\n const headers: Record<string, string> = {\n ...this.options.customHeaders,\n ...additionalHeaders,\n };\n\n // Set User-Agent in environments where it's allowed (Node.js)\n // Use type-safe check for browser environment\n const isBrowser =\n typeof globalThis === \"object\" && \"window\" in globalThis;\n if (!isBrowser && this.options.userAgent) {\n headers[\"User-Agent\"] = this.options.userAgent;\n }\n\n // Add Authorization header if token provider is available\n if (this.options.tokenProvider) {\n try {\n const token = await this.options.tokenProvider();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n } catch (error) {\n // Log token provider error but don't fail the request\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Token provider failed:\", error);\n }\n }\n }\n\n return headers;\n }\n\n /**\n * Checks if Content-Type header is present (case-insensitive)\n */\n private hasContentTypeHeader(headers: Record<string, string>): boolean {\n return Object.keys(headers).some(\n (key) => key.toLowerCase() === \"content-type\",\n );\n }\n\n /**\n * Checks if a content type is a valid JSON content type\n */\n private isJsonContentType(contentType: string): boolean {\n const lowerContentType = contentType.toLowerCase();\n return (\n lowerContentType.includes(\"application/json\") ||\n lowerContentType.includes(\"application/vnd.api+json\") ||\n lowerContentType.includes(\"application/hal+json\") ||\n lowerContentType.includes(\"application/problem+json\") ||\n lowerContentType.includes(\"text/json\") ||\n /^application\\/.*\\+json/i.test(contentType)\n );\n }\n\n /**\n * Handles HTTP response and converts to InsurUpResult\n * @param response The fetch Response object\n * @param expectContent Whether the caller expects response data\n */\n private async handleResponse<T>(\n response: Response,\n expectContent: boolean,\n ): Promise<InsurUpResult<T> | InsurUpResult> {\n // Handle non-success HTTP status codes first\n if (!response.ok) {\n const errorText = await response.text();\n return parseServerError(response, errorText);\n }\n\n // No Content responses (204, 205)\n if (response.status === 204 || response.status === 205) {\n if (expectContent) {\n return createUnexpectedNoContentError();\n }\n return createSuccessNoContent();\n }\n\n // Get response text first to determine if it's empty\n const responseText = await response.text();\n\n // Handle empty response body\n if (!responseText.trim()) {\n if (expectContent) {\n return createUnexpectedNoContentError();\n }\n return createSuccessNoContent();\n }\n\n // For non-empty responses, validate Content-Type\n const contentType = response.headers.get(\"content-type\");\n if (contentType && !this.isJsonContentType(contentType)) {\n return createDeserializationError(\n new Error(`Expected JSON response but got ${contentType}`),\n );\n }\n\n // Parse the JSON response\n return this.parseSuccessResponse<T>(responseText);\n }\n\n /**\n * Parses successful JSON response body\n */\n private parseSuccessResponse<T>(\n responseText: string,\n ): InsurUpResult<T> | InsurUpResult {\n try {\n const data = JSON.parse(responseText) as T;\n return createSuccess(data);\n } catch (error) {\n return createDeserializationError(error);\n }\n }\n\n /**\n * Determines if a result should be retried\n */\n private shouldRetryResult(\n result: InsurUpResult<unknown> | InsurUpResult,\n ): boolean {\n if (!this.options.retry) {\n return false;\n }\n\n // Retry server errors with retryable status codes\n if (result.kind === \"server-error\") {\n return this.options.retry.retryableStatusCodes.includes(result.status);\n }\n\n // Retry client errors for network issues but not timeouts\n if (result.kind === \"client-error\") {\n return result.type === InsurUpClientErrorType.HttpRequestFailed;\n }\n\n return false;\n }\n\n /**\n * Logs outgoing request details\n */\n private logRequest(\n method: HttpMethod,\n path: string,\n body?: RequestBody,\n headers?: Record<string, string>,\n ): void {\n if (this.options.logLevel === \"none\") {\n return;\n }\n\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n\n if (this.options.logLevel === \"basic\") {\n this.options.logger.info(`${method} ${url}`);\n } else if (this.options.logLevel === \"detailed\") {\n // Only compute sanitized values when detailed logging is enabled\n const sanitizedHeaders = this.sanitizeHeaders(headers);\n const sanitizedBody = this.sanitizeBody(body);\n this.options.logger.info(`Request: ${method} ${url}`, {\n headers: sanitizedHeaders,\n body: sanitizedBody,\n });\n }\n }\n\n /**\n * Logs response details\n */\n private logResponse(\n status: \"SUCCESS\" | \"ERROR\",\n duration: number,\n attempt: number,\n result: InsurUpResult<unknown> | InsurUpResult,\n ): void {\n if (this.options.logLevel === \"none\") {\n return;\n }\n\n const attemptInfo = attempt > 1 ? ` (attempt ${attempt})` : \"\";\n\n if (this.options.logLevel === \"basic\") {\n if (status === \"SUCCESS\") {\n this.options.logger.info(`${status} in ${duration}ms${attemptInfo}`);\n } else {\n this.options.logger.error(`${status} in ${duration}ms${attemptInfo}`);\n }\n } else if (this.options.logLevel === \"detailed\") {\n // Only compute sanitized values when detailed logging is enabled\n if (status === \"SUCCESS\") {\n const data =\n result.kind === \"success\" && \"data\" in result\n ? this.sanitizeResponseData(result.data)\n : undefined;\n this.options.logger.info(\n `Response: ${status} in ${duration}ms${attemptInfo}`,\n { data },\n );\n } else {\n const sanitizedError = this.sanitizeError(result);\n this.options.logger.error(\n `Response: ${status} in ${duration}ms${attemptInfo}`,\n { error: sanitizedError },\n );\n }\n }\n }\n\n /**\n * Logs retry attempt\n */\n private logRetry(\n attemptNumber: number,\n result: InsurUpResult<unknown> | InsurUpResult,\n ): void {\n if (this.options.logLevel === \"none\") {\n return;\n }\n\n const reason =\n result.kind === \"server-error\"\n ? `HTTP ${result.status}`\n : result.kind === \"client-error\"\n ? result.type\n : \"Unknown error\";\n\n this.options.logger.warn(\n `Retry attempt ${attemptNumber} failed due to: ${reason}`,\n );\n }\n\n /**\n * Sanitizes headers for logging (removes sensitive information)\n */\n private sanitizeHeaders(\n headers?: Record<string, string>,\n ): Record<string, string> | undefined {\n if (!headers) {\n return undefined;\n }\n\n const sanitized: Record<string, string> = {};\n const sensitiveHeaders = [\n \"authorization\",\n \"cookie\",\n \"x-api-key\",\n \"x-auth-token\",\n ];\n\n for (const [key, value] of Object.entries(headers)) {\n const lowerKey = key.toLowerCase();\n if (sensitiveHeaders.includes(lowerKey)) {\n sanitized[key] = \"[REDACTED]\";\n } else {\n sanitized[key] = value;\n }\n }\n\n return sanitized;\n }\n\n /**\n * Sanitizes request body for logging with memory-efficient handling\n */\n private sanitizeBody(body?: RequestBody): unknown {\n if (!body) {\n return undefined;\n }\n\n // Handle FormData\n if (body instanceof FormData) {\n return \"[FormData body]\";\n }\n\n // Handle string bodies efficiently\n if (typeof body === \"string\") {\n if (body.length > 10000) {\n return \"[Large string body - truncated for logging]\";\n }\n return body.length > 1000\n ? `${body.substring(0, 1000)}... [truncated]`\n : body;\n }\n\n // Handle primitive types\n if (typeof body === \"number\" || typeof body === \"boolean\") {\n return body;\n }\n\n // For objects/arrays, use memory-efficient serialization\n try {\n // Quick size estimation to avoid expensive stringification of large objects\n if (this.isLargeObject(body)) {\n return \"[Large object body - truncated for logging]\";\n }\n\n const stringified = JSON.stringify(body);\n return stringified.length > 1000\n ? `${stringified.substring(0, 1000)}... [truncated]`\n : body;\n } catch {\n return \"[Unable to serialize body]\";\n }\n }\n\n /**\n * Efficiently estimates if an object is large without full serialization\n */\n private isLargeObject(obj: unknown): boolean {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n\n try {\n // Quick heuristic: count properties and nested levels\n let propertyCount = 0;\n let maxDepth = 0;\n\n const countProperties = (item: unknown, depth = 0): boolean => {\n if (depth > 3) return true; // Too deep\n if (propertyCount > 50) return true; // Too many properties\n\n maxDepth = Math.max(maxDepth, depth);\n\n if (Array.isArray(item)) {\n if (item.length > 100) return true; // Large array\n for (let i = 0; i < Math.min(item.length, 10); i++) {\n if (countProperties(item[i], depth + 1)) return true;\n }\n } else if (item && typeof item === \"object\") {\n const keys = Object.keys(item);\n propertyCount += keys.length;\n\n for (const key of keys.slice(0, 10)) {\n // Check first 10 properties\n if (\n countProperties((item as Record<string, unknown>)[key], depth + 1)\n )\n return true;\n }\n }\n\n return false;\n };\n\n return countProperties(obj);\n } catch {\n // If estimation fails, assume it might be large\n return true;\n }\n }\n\n /**\n * Sanitizes response data for logging with memory-efficient handling\n */\n private sanitizeResponseData(data: unknown): unknown {\n if (data === null || data === undefined) {\n return data;\n }\n\n try {\n // Use the same efficient large object detection\n if (this.isLargeObject(data)) {\n return \"[Large response data - truncated for logging]\";\n }\n\n const stringified = JSON.stringify(data);\n return stringified.length > 1000\n ? `${stringified.substring(0, 1000)}... [truncated]`\n : data;\n } catch {\n return \"[Unable to serialize response data]\";\n }\n }\n\n /**\n * Sanitizes error information for logging\n */\n private sanitizeError(\n result: InsurUpResult<unknown> | InsurUpResult,\n ): unknown {\n if (result.kind === \"server-error\") {\n return {\n type: result.type,\n status: result.status,\n title: result.title,\n detail: result.detail,\n traceId: result.traceId,\n };\n }\n\n if (result.kind === \"client-error\") {\n return {\n type: result.type,\n message: result.message,\n };\n }\n\n return { message: \"Unknown error type\" };\n }\n}\n","/**\n * @fileoverview GraphQL Transport Layer - Fetch-based GraphQL client\n * @description GraphQL transport with error handling and type safety\n */\n\nimport type {\n InsurUpGraphQLResult,\n GraphQLErrorItem,\n GraphQLErrorExtensions,\n GraphQLErrorLocation,\n} from \"../core/result.js\";\nimport {\n createSuccess,\n createGraphQLErrors,\n InsurUpGraphQLErrorCode,\n} from \"../core/result.js\";\nimport { createDeserializationError } from \"../core/errors.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type { HttpTransport } from \"./http.js\";\n\n/**\n * Raw GraphQL error from the server response\n */\ninterface RawGraphQLError {\n message: string;\n locations?: Array<{ line: number; column: number }>;\n path?: (string | number)[];\n extensions?: Record<string, unknown>;\n}\n\n/**\n * GraphQL response structure\n */\nexport interface GraphQLResponse<T> {\n data?: T;\n errors?: RawGraphQLError[];\n}\n\n/**\n * GraphQL request payload\n */\nexport interface GraphQLRequest {\n query: string;\n variables?: Record<string, unknown>;\n operationName?: string;\n}\n\n/**\n * Maps a raw error code string to the InsurUpGraphQLErrorCode enum\n */\nfunction mapGraphQLErrorCode(code: unknown): InsurUpGraphQLErrorCode {\n if (typeof code !== \"string\") {\n return InsurUpGraphQLErrorCode.Unknown;\n }\n\n const upperCode = code.toUpperCase();\n\n switch (upperCode) {\n case \"FORBIDDEN\":\n return InsurUpGraphQLErrorCode.Forbidden;\n case \"UNAUTHORIZED\":\n return InsurUpGraphQLErrorCode.Unauthorized;\n case \"NOT_FOUND\":\n return InsurUpGraphQLErrorCode.NotFound;\n case \"BAD_REQUEST\":\n return InsurUpGraphQLErrorCode.BadRequest;\n case \"CONFLICT\":\n return InsurUpGraphQLErrorCode.Conflict;\n case \"NOT_SUPPORTED\":\n return InsurUpGraphQLErrorCode.NotSupported;\n case \"UPSTREAM_ERROR\":\n return InsurUpGraphQLErrorCode.UpstreamError;\n case \"INTERNAL_ERROR\":\n return InsurUpGraphQLErrorCode.InternalError;\n case \"VALIDATION_ERROR\":\n return InsurUpGraphQLErrorCode.ValidationError;\n case \"FILTER_REQUIRED\":\n return InsurUpGraphQLErrorCode.FilterRequired;\n case \"FILTER_MAX_SPAN_EXCEEDED\":\n return InsurUpGraphQLErrorCode.FilterMaxSpanExceeded;\n default:\n return InsurUpGraphQLErrorCode.Unknown;\n }\n}\n\n/**\n * Parses raw extensions into typed GraphQLErrorExtensions\n */\nfunction parseExtensions(\n raw: Record<string, unknown> | undefined,\n): GraphQLErrorExtensions | undefined {\n if (!raw) {\n return undefined;\n }\n\n const extensions: GraphQLErrorExtensions = {\n ...raw,\n code: mapGraphQLErrorCode(raw.code),\n traceId: typeof raw.traceId === \"string\" ? raw.traceId : undefined,\n codes: Array.isArray(raw.codes)\n ? (raw.codes.filter((c) => typeof c === \"string\") as string[])\n : undefined,\n template: typeof raw.template === \"string\" ? raw.template : undefined,\n templateArgs:\n typeof raw.templateArgs === \"object\" && raw.templateArgs !== null\n ? (raw.templateArgs as Record<string, unknown>)\n : undefined,\n suggestions: Array.isArray(raw.suggestions)\n ? (raw.suggestions.filter((s) => typeof s === \"string\") as string[])\n : undefined,\n };\n\n return extensions;\n}\n\n/**\n * Parses raw GraphQL errors into typed GraphQLErrorItem array\n */\nfunction parseGraphQLErrors(rawErrors: RawGraphQLError[]): GraphQLErrorItem[] {\n return rawErrors.map((error): GraphQLErrorItem => {\n const locations: GraphQLErrorLocation[] | undefined = error.locations?.map(\n (loc) => ({\n line: loc.line,\n column: loc.column,\n }),\n );\n\n return {\n message: error.message,\n locations,\n path: error.path,\n extensions: parseExtensions(error.extensions),\n };\n });\n}\n\n/**\n * GraphQL transport class providing typed query execution\n */\nexport class GraphQLTransport {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Executes a GraphQL query or mutation\n * @param query The GraphQL query string\n * @param variables Optional variables for the query\n * @param options Optional request options\n * @returns Promise resolving to InsurUpGraphQLResult<T>\n */\n async query<T>(\n query: string,\n variables?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<T>> {\n const payload: GraphQLRequest = {\n query,\n variables,\n };\n\n // Use the existing HTTP transport to send the POST request\n const result = await this.http.post<GraphQLResponse<T>>(\n \"graphql\",\n payload,\n options,\n );\n\n // Handle transport-level errors (network, timeout, etc.)\n if (!result.isSuccess) {\n // Pass through both server errors and client errors\n return result as InsurUpGraphQLResult<T>;\n }\n\n const response = result.data;\n\n // Handle GraphQL-level errors\n if (response.errors && response.errors.length > 0) {\n const parsedErrors = parseGraphQLErrors(response.errors);\n return createGraphQLErrors(parsedErrors) as InsurUpGraphQLResult<T>;\n }\n\n // If no data and no errors, something is wrong with the response\n if (!response.data) {\n return createDeserializationError(\n new Error(\"GraphQL response contained no data and no errors\"),\n ) as InsurUpGraphQLResult<T>;\n }\n\n return createSuccess(response.data) as InsurUpGraphQLResult<T>;\n }\n}\n","/**\n * @fileoverview InsurUp API Endpoints - API endpoint definitions\n * @description API endpoint definitions with identical names and render functions\n */\n\n/**\n * Contact form endpoints\n */\nexport const contactForm = {\n submit: \"contact-form\",\n} as const;\n\n/**\n * Agent management endpoints\n */\nexport const agents = {\n getCurrentAgent: \"agents/me\",\n updateCurrentAgent: \"agents/me\",\n reSyncCurrentAgentWithInsurance: \"agents/me/re-sync\",\n\n insuranceCompanies: {\n getMyInsuranceCompanies: \"agents/me/insurance-companies\",\n addInsuranceCompanyToAgent: \"agents/me/insurance-companies\",\n\n getBranches: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n getConnection: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n updateConnection: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n updateBranches: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n reSyncAgentInsuranceCompanyWithInsurance: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/re-sync\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/re-sync\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n remove: {\n definition: \"agents/me/insurance-companies/{AgentInsuranceCompanyId}\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n },\n} as const;\n\n/**\n * Insurance company endpoints\n */\nexport const insuranceCompanies = {\n getInsuranceCompanies: \"insurance-companies\",\n\n getInsuranceCompanyProducts: {\n definition: \"insurance-companies/{InsuranceCompanyId}/products\",\n render: (insuranceCompanyId: number): string =>\n \"insurance-companies/{InsuranceCompanyId}/products\".replace(\n \"{InsuranceCompanyId}\",\n encodeURIComponent(insuranceCompanyId.toString()),\n ),\n },\n\n getAllProducts: \"insurance-companies/products\",\n\n connectionFields: {\n getAgentBasedConnectionFieldsByCompanyId: {\n definition:\n \"insurance-companies/{InsuranceCompanyId}/connection-fields:agent-based\",\n render: (insuranceCompanyId: number): string =>\n \"insurance-companies/{InsuranceCompanyId}/connection-fields:agent-based\".replace(\n \"{InsuranceCompanyId}\",\n encodeURIComponent(insuranceCompanyId.toString()),\n ),\n },\n },\n} as const;\n\n/**\n * Resource keys endpoints\n */\nexport const resourceKeys = {\n getAll: \"resource-keys\",\n} as const;\n\n/**\n * Customer management endpoints\n */\nexport const customers = {\n createCustomer: \"customers\",\n getCurrentCustomer: \"customers/me\",\n externalLookup: \"customers/external-lookup\",\n\n setCustomerRepresentative: {\n definition: \"customers/{CustomerId}/representative\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/representative\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n getCustomer: {\n definition: \"customers/{CustomerId}\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n updateCustomer: {\n definition: \"customers/{CustomerId}\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n deleteCustomer: {\n definition: \"customers/{CustomerId}\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n getHealthInfo: {\n definition: \"customers/{CustomerId}/health-info\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/health-info\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n updateHealthInfo: {\n definition: \"customers/{CustomerId}/health-info\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/health-info\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n emails: {\n addCustomerEmail: {\n definition: \"customers/{CustomerId}/emails\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/emails\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n removeCustomerEmail: {\n definition: \"customers/{CustomerId}/emails/{Email}\",\n render: (request: { customerId: string; email: string }): string =>\n \"customers/{CustomerId}/emails/{Email}\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\"{Email}\", encodeURIComponent(request.email)),\n },\n\n changePrimaryCustomerEmail: {\n definition: \"customers/{CustomerId}/emails/{Email}/primary\",\n render: (request: { customerId: string; email: string }): string =>\n \"customers/{CustomerId}/emails/{Email}/primary\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\"{Email}\", encodeURIComponent(request.email)),\n },\n\n getCustomerEmails: {\n definition: \"customers/{CustomerId}/emails\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/emails\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n\n phoneNumbers: {\n addCustomerPhoneNumber: {\n definition: \"customers/{CustomerId}/phone-numbers\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/phone-numbers\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n removeCustomerPhoneNumber: {\n definition:\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}\",\n render: (request: {\n customerId: string;\n countryCode: number;\n phoneNumber: string;\n }): string =>\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\n \"{CountryCode}\",\n encodeURIComponent(request.countryCode.toString()),\n )\n .replace(\"{PhoneNumber}\", encodeURIComponent(request.phoneNumber)),\n },\n\n changePrimaryCustomerPhoneNumber: {\n definition:\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}/primary\",\n render: (request: {\n customerId: string;\n countryCode: number;\n phoneNumber: string;\n }): string =>\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}/primary\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\n \"{CountryCode}\",\n encodeURIComponent(request.countryCode.toString()),\n )\n .replace(\"{PhoneNumber}\", encodeURIComponent(request.phoneNumber)),\n },\n\n getCustomerPhoneNumbers: {\n definition: \"customers/{CustomerId}/phone-numbers\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/phone-numbers\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n\n contactFlows: {\n getCustomerContactFlows: {\n definition: \"customers/{CustomerId}/contact-flows\",\n render: (customerId: string, caseRef?: string | null): string => {\n const base = \"customers/{CustomerId}/contact-flows\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n );\n return caseRef\n ? base + \"?caseRef=\" + encodeURIComponent(caseRef)\n : base;\n },\n },\n\n createContactFlow: {\n definition: \"customers/{CustomerId}/contact-flows\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/contact-flows\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n endContactFlow: {\n definition: \"customers/{CustomerId}/contact-flows/{ContactFlowId}/end\",\n render: (customerId: string, contactFlowId: string): string =>\n \"customers/{CustomerId}/contact-flows/{ContactFlowId}/end\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{ContactFlowId}\", encodeURIComponent(contactFlowId)),\n },\n },\n\n contacts: {\n getCustomerContacts: {\n definition: \"customers/{CustomerId}/contacts\",\n render: (customerId: string, caseRef?: string | null): string => {\n const base = \"customers/{CustomerId}/contacts\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n );\n return caseRef\n ? base + \"?caseRef=\" + encodeURIComponent(caseRef)\n : base;\n },\n },\n\n create: {\n definition: \"customers/{CustomerId}/contacts\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/contacts\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n\n setCustomerBranch: {\n definition: \"customers/{CustomerId}/branch\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/branch\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n addresses: {\n create: {\n definition: \"customers/{CustomerId}/addresses\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/addresses\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n update: {\n definition: \"customers/{CustomerId}/addresses/{AddressId}\",\n render: (customerId: string, addressId: string): string =>\n \"customers/{CustomerId}/addresses/{AddressId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{AddressId}\", encodeURIComponent(addressId)),\n },\n getById: {\n definition: \"customers/{CustomerId}/addresses/{AddressId}\",\n render: (customerId: string, addressId: string): string =>\n \"customers/{CustomerId}/addresses/{AddressId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{AddressId}\", encodeURIComponent(addressId)),\n },\n getAll: {\n definition: \"customers/{CustomerId}/addresses\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/addresses\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n delete: {\n definition: \"customers/{CustomerId}/addresses/{AddressId}\",\n render: (customerId: string, addressId: string): string =>\n \"customers/{CustomerId}/addresses/{AddressId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{AddressId}\", encodeURIComponent(addressId)),\n },\n },\n\n consents: {\n give: {\n definition: \"customers/{CustomerId}/consents\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/consents\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n revoke: {\n definition: \"customers/{CustomerId}/consents/revoke\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/consents/revoke\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n getAll: {\n definition: \"customers/{CustomerId}/consents\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/consents\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n} as const;\n\n/**\n * Address parameter endpoints\n */\nexport const addressParameters = {\n queryCities: \"address-parameters/cities\",\n\n queryDistricts: {\n definition: \"address-parameters/districts\",\n render: (request: { cityReference: string }): string =>\n \"address-parameters/districts?cityReference={cityReference}\".replace(\n \"{cityReference}\",\n request.cityReference,\n ),\n },\n\n queryTowns: {\n definition: \"address-parameters/towns\",\n render: (request: { districtReference: string }): string =>\n \"address-parameters/towns?districtReference={districtReference}\".replace(\n \"{districtReference}\",\n request.districtReference,\n ),\n },\n\n queryNeighbourhoods: {\n definition: \"address-parameters/neighbourhoods\",\n render: (request: { townReference: string }): string =>\n \"address-parameters/neighbourhoods?townReference={townReference}\".replace(\n \"{townReference}\",\n request.townReference,\n ),\n },\n\n queryStreets: {\n definition: \"address-parameters/streets\",\n render: (request: { neighbourhoodReference: string }): string =>\n \"address-parameters/streets?neighbourhoodReference={neighbourhoodReference}\".replace(\n \"{neighbourhoodReference}\",\n request.neighbourhoodReference,\n ),\n },\n\n queryBuildings: {\n definition: \"address-parameters/buildings\",\n render: (request: { streetReference: string }): string =>\n \"address-parameters/buildings?streetReference={streetReference}\".replace(\n \"{streetReference}\",\n request.streetReference,\n ),\n },\n\n queryApartments: {\n definition: \"address-parameters/apartments\",\n render: (request: { buildingReference: string }): string =>\n \"address-parameters/apartments?buildingReference={buildingReference}\".replace(\n \"{buildingReference}\",\n request.buildingReference,\n ),\n },\n} as const;\n\n/**\n * Vehicle parameter endpoints\n */\nexport const vehicleParameters = {\n queryBrands: \"vehicle-parameters/brands\",\n\n queryModels: {\n definition: \"vehicle-parameters/models\",\n render: (request: { brandReference: string; year: number }): string =>\n \"vehicle-parameters/models?brandReference={brandReference}&year={year}\"\n .replace(\"{brandReference}\", encodeURIComponent(request.brandReference))\n .replace(\"{year}\", encodeURIComponent(request.year.toString())),\n },\n} as const;\n\n/**\n * Vehicle endpoints\n */\nexport const vehicles = {\n getCurrentCustomerVehicles: \"customers/me/vehicles\",\n\n externalLookup: {\n definition: \"customers/{CustomerId}/vehicles/external-lookup\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/vehicles/external-lookup\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n create: {\n definition: \"customers/{CustomerId}/vehicles\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/vehicles\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n update: {\n definition: \"customers/{CustomerId}/vehicles/{VehicleId}\",\n render: (customerId: string, vehicleId: string): string =>\n \"customers/{CustomerId}/vehicles/{VehicleId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{VehicleId}\", encodeURIComponent(vehicleId)),\n },\n\n delete: {\n definition: \"customers/{CustomerId}/vehicles/{VehicleId}\",\n render: (customerId: string, vehicleId: string): string =>\n \"customers/{CustomerId}/vehicles/{VehicleId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{VehicleId}\", encodeURIComponent(vehicleId)),\n },\n\n get: {\n definition: \"customers/{CustomerId}/vehicles/{VehicleId}\",\n render: (customerId: string, vehicleId: string): string =>\n \"customers/{CustomerId}/vehicles/{VehicleId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{VehicleId}\", encodeURIComponent(vehicleId)),\n },\n\n getCustomerVehicles: {\n definition: \"customers/{CustomerId}/vehicles\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/vehicles\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n} as const;\n\n/**\n * Insurance services endpoints\n */\nexport const insuranceServices = {\n queryVehicleByBrandCode: \"insurance-services/query-vehicle-by-brand-code\",\n} as const;\n\n/**\n * Property endpoints\n */\nexport const properties = {\n getPropertyAddressByPropertyNumber:\n \"properties/query-address-by-property-number\",\n queryPropertyByDaskOldPolicy: \"properties/query-property-by-dask-old-policy\",\n getCurrentCustomerProperties: \"customers/me/properties\",\n\n getAll: {\n definition: \"customers/{CustomerId}/properties\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/properties\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n create: {\n definition: \"customers/{CustomerId}/properties\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/properties\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n getById: {\n definition: \"customers/{CustomerId}/properties/{PropertyId}\",\n render: (customerId: string, propertyId: string): string =>\n \"customers/{CustomerId}/properties/{PropertyId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{PropertyId}\", encodeURIComponent(propertyId)),\n },\n\n update: {\n definition: \"customers/{CustomerId}/properties/{PropertyId}\",\n render: (customerId: string, propertyId: string): string =>\n \"customers/{CustomerId}/properties/{PropertyId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{PropertyId}\", encodeURIComponent(propertyId)),\n },\n\n delete: {\n definition: \"customers/{CustomerId}/properties/{PropertyId}\",\n render: (customerId: string, propertyId: string): string =>\n \"customers/{CustomerId}/properties/{PropertyId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{PropertyId}\", encodeURIComponent(propertyId)),\n },\n} as const;\n\n/**\n * Proposal endpoints\n */\nexport const proposals = {\n create: \"proposals\",\n\n getProposalById: {\n definition: \"proposals/{ProposalId}\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalSnapshot: {\n definition: \"proposals/{ProposalId}/snapshot\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/snapshot\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalCoverage: {\n definition: \"proposals/{ProposalId}/coverage\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/coverage\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalProductCoverage: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/coverage\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/coverage\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n retryFailedProposalProduct: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/retry\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/retry\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n getProposalProductPremiumDetail: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/premium-detail/{InstallmentNumber}\",\n render: (\n proposalId: string,\n proposalProductId: string,\n installmentNumber: number,\n ): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/premium-detail/{InstallmentNumber}\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId))\n .replace(\n \"{InstallmentNumber}\",\n encodeURIComponent(installmentNumber.toString()),\n ),\n },\n\n purchaseProposalProductSync: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/sync\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/sync\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n purchaseProposalProductAsync: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/async\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/async\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n reviseProposal: {\n definition: \"proposals/{ProposalId}/revise\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/revise\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n reviseProposalProduct: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/revise\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/revise\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n fetchProposalProductDocument: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/document\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/document\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n fetchProposalInformationFormDocument: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n sendProposalProductDocument: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/document/send\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/document/send\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n sendProposalInformationFormDocument: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form/send\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form/send\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n generateCompareProposalProductsPdf: {\n definition: \"proposals/{ProposalId}/products/compare-pdf\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/products/compare-pdf\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n sendCompareProposalProductsPdf: {\n definition: \"proposals/{ProposalId}/products/compare-pdf/send\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/products/compare-pdf/send\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n setProposalRepresentative: {\n definition: \"proposals/{ProposalId}/representative\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/representative\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n setProposalBranch: {\n definition: \"proposals/{ProposalId}/branch\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/branch\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n generateCustomerProposalDocumentPdf: {\n definition: \"proposals/{ProposalId}/customer-document-pdf\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/customer-document-pdf\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalConversionTrend: {\n definition: \"proposals/analytics/conversion-trend\",\n },\n} as const;\n\n/**\n * Policy endpoints\n */\nexport const policies = {\n getPolicyDetail: {\n definition: \"policies/{PolicyId}\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}\".replace(\"{PolicyId}\", encodeURIComponent(policyId)),\n },\n\n fetchPolicyDocument: {\n definition: \"policies/{PolicyId}/document\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/document\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n sendPolicyDocument: {\n definition: \"policies/{PolicyId}/document/send\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/document/send\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n setPolicyRepresentative: {\n definition: \"policies/{PolicyId}/representative\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/representative\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n setPolicyBranch: {\n definition: \"policies/{PolicyId}/branch\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/branch\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n createManualPolicy: {\n definition: \"policies/manual\",\n },\n\n updateManualPolicy: {\n definition: \"policies/manual/{PolicyId}\",\n render: (policyId: string): string =>\n \"policies/manual/{PolicyId}\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n getPolicyCountAndPremiumAnalytics: {\n definition: \"policies/analytics/count-and-premium\",\n },\n\n getPolicyRenewalAnalytics: {\n definition: \"policies/analytics/renewal\",\n },\n\n getPolicyDistributionByBranch: {\n definition: \"policies/analytics/distribution-by-branch\",\n },\n\n getRepresentativeEarningsAnalytics: {\n definition: \"policies/analytics/representative-earnings\",\n },\n} as const;\n\n/**\n * Policy transfer endpoints\n */\nexport const policyTransfers = {\n create: \"policy-transfers\",\n\n getPolicyTransferDetail: {\n definition: \"policy-transfers/{PolicyTransferId}\",\n render: (policyTransferId: string): string =>\n \"policy-transfers/{PolicyTransferId}\".replace(\n \"{PolicyTransferId}\",\n encodeURIComponent(policyTransferId),\n ),\n },\n\n getPolicyTransferTriggerDetail: {\n definition:\n \"policy-transfers/{PolicyTransferId}/triggers/{PolicyTransferTriggerId}\",\n render: (\n policyTransferId: string,\n policyTransferTriggerId: string,\n ): string =>\n \"policy-transfers/{PolicyTransferId}/triggers/{PolicyTransferTriggerId}\"\n .replace(\"{PolicyTransferId}\", encodeURIComponent(policyTransferId))\n .replace(\n \"{PolicyTransferTriggerId}\",\n encodeURIComponent(policyTransferTriggerId),\n ),\n },\n\n triggerPolicyTransfer: {\n definition: \"policy-transfers/{PolicyTransferId}/trigger\",\n render: (policyTransferId: string): string =>\n \"policy-transfers/{PolicyTransferId}/trigger\".replace(\n \"{PolicyTransferId}\",\n encodeURIComponent(policyTransferId),\n ),\n },\n} as const;\n\n/**\n * File policy transfer endpoints\n */\nexport const filePolicyTransfers = {\n create: \"file-policy-transfers\",\n\n getFilePolicyTransferDetail: {\n definition: \"file-policy-transfers/{FilePolicyTransferId}\",\n render: (filePolicyTransferId: string): string =>\n \"file-policy-transfers/{FilePolicyTransferId}\".replace(\n \"{FilePolicyTransferId}\",\n encodeURIComponent(filePolicyTransferId),\n ),\n },\n} as const;\n\n/**\n * Coverage choice endpoints\n */\nexport const coverageChoices = {\n getKaskoCoverageChoices: {\n definition: \"coverage-choices:kasko\",\n render: (vehicleUtilizationStyle?: string): string =>\n vehicleUtilizationStyle !== undefined\n ? \"coverage-choices:kasko?vehicleUtilizationStyle={vehicleUtilizationStyle}\".replace(\n \"{vehicleUtilizationStyle}\",\n encodeURIComponent(vehicleUtilizationStyle),\n )\n : \"coverage-choices:kasko\",\n },\n\n getKonutCoverageChoices: {\n definition: \"coverage-choices:konut\",\n render: (): string => \"coverage-choices:konut\",\n },\n\n getImmCoverageChoices: {\n definition: \"coverage-choices:imm\",\n render: (): string => \"coverage-choices:imm\",\n },\n\n getTssCoverageChoices: {\n definition: \"coverage-choices:tss\",\n render: (): string => \"coverage-choices:tss\",\n },\n} as const;\n\n/**\n * Agent setup request endpoints\n */\nexport const agentSetupRequests = {\n complete: \"agent-setup-requests/complete\",\n create: \"agent-setup-requests\",\n getAll: \"agent-setup-requests\",\n enter: \"agent-setup-requests/enter\",\n\n getAgentSetupRequestById: {\n definition: \"agent-setup-requests/{Id}\",\n render: (id: string): string =>\n \"agent-setup-requests/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n disableAgentSetupRequest: {\n definition: \"agent-setup-requests/{Id}/disable\",\n render: (id: string): string =>\n \"agent-setup-requests/{Id}/disable\".replace(\n \"{Id}\",\n encodeURIComponent(id),\n ),\n },\n} as const;\n\n/**\n * Agent user endpoints\n */\nexport const agentUsers = {\n forgotPassword: \"agent-users/forgot-password\",\n resetPassword: \"agent-users/reset-password\",\n checkAgentUserForgotPasswordToken: \"agent-users/check-forgot-password-token\",\n me: \"agent-users/me\",\n meRobotCode: \"agent-users/me/robot-code\",\n invite: \"agent-users/invite\",\n updateMyUser: \"agent-users/me\",\n acceptInvite: \"agent-users/accept-invite\",\n updatePassword: \"agent-users/me/password\",\n\n reSendInvite: {\n definition: \"agent-users/{AgentUserId}/re-send-invite\",\n render: (userId: string): string =>\n \"agent-users/{AgentUserId}/re-send-invite\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(userId),\n ),\n },\n\n deactivate: {\n definition: \"agent-users/{AgentUserId}/deactivate\",\n render: (userId: string): string =>\n \"agent-users/{AgentUserId}/deactivate\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(userId),\n ),\n },\n\n activate: {\n definition: \"agent-users/{AgentUserId}/activate\",\n render: (userId: string): string =>\n \"agent-users/{AgentUserId}/activate\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(userId),\n ),\n },\n\n delete: {\n definition: \"agent-users/{UserId}\",\n render: (userId: string): string =>\n \"agent-users/{UserId}\".replace(\"{UserId}\", encodeURIComponent(userId)),\n },\n\n getById: {\n definition: \"agent-users/{UserId}\",\n render: (userId: string): string =>\n \"agent-users/{UserId}\".replace(\"{UserId}\", encodeURIComponent(userId)),\n },\n\n checkAgentUserInviteCode: {\n definition: \"agent-users/check-invite-code\",\n render: (code: string): string =>\n \"agent-users/check-invite-code?code={code}\".replace(\n \"{code}\",\n encodeURIComponent(code),\n ),\n },\n\n update: {\n definition: \"agent-users/{Id}\",\n render: (userId: string): string =>\n \"agent-users/{Id}\".replace(\"{Id}\", encodeURIComponent(userId)),\n },\n\n migrate: {\n definition: \"agent-users/{AgentUserId}/migrate\",\n render: (agentUserId: string): string =>\n \"agent-users/{AgentUserId}/migrate\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(agentUserId),\n ),\n },\n\n migrateAll: \"agent-users/migrate-all\",\n} as const;\n\n/**\n * Agent role endpoints\n */\nexport const agentRoles = {\n getAll: \"agent-roles\",\n create: \"agent-roles\",\n\n update: {\n definition: \"agent-roles/{Id}\",\n render: (agentRoleId: string): string =>\n \"agent-roles/{Id}\".replace(\"{Id}\", encodeURIComponent(agentRoleId)),\n },\n\n delete: {\n definition: \"agent-roles/{Id}\",\n render: (agentRoleId: string): string =>\n \"agent-roles/{Id}\".replace(\"{Id}\", encodeURIComponent(agentRoleId)),\n },\n\n getById: {\n definition: \"agent-roles/{Id}\",\n render: (agentRoleId: string): string =>\n \"agent-roles/{Id}\".replace(\"{Id}\", encodeURIComponent(agentRoleId)),\n },\n} as const;\n\n/**\n * Webhook endpoints\n */\nexport const webhooks = {\n getAll: \"webhooks\",\n create: \"webhooks\",\n\n getById: {\n definition: \"webhooks/{Id}\",\n render: (id: string): string =>\n \"webhooks/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n update: {\n definition: \"webhooks/{Id}\",\n render: (id: string): string =>\n \"webhooks/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n delete: {\n definition: \"webhooks/{Id}\",\n render: (id: string): string =>\n \"webhooks/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n deliveries: {\n getById: {\n definition: \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}\",\n render: (webhookId: string, webhookDeliveryId: string): string =>\n \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}\"\n .replace(\"{WebhookId}\", encodeURIComponent(webhookId))\n .replace(\n \"{WebhookDeliveryId}\",\n encodeURIComponent(webhookDeliveryId),\n ),\n },\n\n redeliver: {\n definition:\n \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}/redeliver\",\n render: (webhookId: string, webhookDeliveryId: string): string =>\n \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}/redeliver\"\n .replace(\"{WebhookId}\", encodeURIComponent(webhookId))\n .replace(\n \"{WebhookDeliveryId}\",\n encodeURIComponent(webhookDeliveryId),\n ),\n },\n },\n} as const;\n\n/**\n * Case management endpoints\n */\nexport const cases = {\n createNewSaleOpportunity: \"cases:new-sale-opportunity\",\n createCrossSaleOpportunity: \"cases:cross-sale-opportunity\",\n createCancel: \"cases:cancel\",\n createEndorsement: \"cases:endorsement\",\n createComplaint: \"cases:complaint\",\n\n assignRepresentative: {\n definition: \"cases/{Ref}/representative\",\n render: (ref: string): string =>\n \"cases/{Ref}/representative\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n addNoteToCase: {\n definition: \"cases/{Ref}/notes\",\n render: (ref: string): string =>\n \"cases/{Ref}/notes\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n changeChannel: {\n definition: \"cases/{Ref}/channel\",\n render: (ref: string): string =>\n \"cases/{Ref}/channel\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n changeState: {\n definition: \"cases/{Ref}/state\",\n render: (ref: string): string =>\n \"cases/{Ref}/state\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getActivities: {\n definition: \"cases/{Ref}/activities\",\n render: (ref: string): string =>\n \"cases/{Ref}/activities\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getCaseByRef: {\n definition: \"cases/{Ref}\",\n render: (ref: string): string =>\n \"cases/{Ref}\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getProposals: {\n definition: \"cases/{Ref}/proposals\",\n render: (ref: string): string =>\n \"cases/{Ref}/proposals\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getPolicies: {\n definition: \"cases/{Ref}/policies\",\n render: (ref: string): string =>\n \"cases/{Ref}/policies\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n setAsset: {\n definition: \"cases/{Ref}/asset\",\n render: (ref: string): string =>\n \"cases/{Ref}/asset\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n setBranch: {\n definition: \"cases/{Ref}/branch\",\n render: (ref: string): string =>\n \"cases/{Ref}/branch\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getSalesOpportunityFunnelAnalytics: {\n definition: \"cases/analytics/sales-opportunity-funnel\",\n },\n\n getOpenCaseBacklogPivotAnalytics: {\n definition: \"cases/analytics/open-case-backlog-pivot\",\n },\n\n getFailedCasesReasonDistribution: {\n definition: \"cases/analytics/failed-cases-reason-distribution\",\n },\n\n communicationAutomations: {\n getAll: \"cases/communication-automations\",\n },\n\n getPriorityTemplates: \"cases/priority-templates\",\n} as const;\n\n/**\n * Coverage Groups endpoints for managing insurance coverage groups\n * Sigorta teminat gruplarını yönetmek için teminat grupları endpoint'leri\n */\nexport const coverageGroups = {\n getAll: \"coverage-groups\",\n create: \"coverage-groups\",\n\n update: {\n definition: \"coverage-groups/{Id}\",\n render: (id: string): string =>\n \"coverage-groups/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n delete: {\n definition: \"coverage-groups/{Id}\",\n render: (id: string): string =>\n \"coverage-groups/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n getById: {\n definition: \"coverage-groups/{Id}\",\n render: (id: string): string =>\n \"coverage-groups/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n} as const;\n\n/**\n * Release Notes endpoints\n */\nexport const releaseNotes = {\n getAll: \"release-notes\",\n} as const;\n\n/**\n * Banks endpoints\n */\nexport const banks = {\n getAll: \"banks\",\n\n getBranches: {\n definition: \"banks/{BankId}/branches\",\n render: (bankId: string): string =>\n \"banks/{BankId}/branches\".replace(\"{BankId}\", encodeURIComponent(bankId)),\n },\n} as const;\n\n/**\n * Financial Institutions endpoints\n */\nexport const financialInstitutions = {\n getAll: \"financial-institutions\",\n} as const;\n\n/**\n * Agent Branches endpoints\n */\nexport const agentBranches = {\n getAll: \"agent-branches\",\n create: \"agent-branches\",\n getById: {\n definition: \"agent-branches/{Id}\",\n render: (id: string): string =>\n \"agent-branches/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n update: {\n definition: \"agent-branches/{Id}\",\n render: (id: string): string =>\n \"agent-branches/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n delete: {\n definition: \"agent-branches/{Id}\",\n render: (id: string): string =>\n \"agent-branches/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n} as const;\n\n/**\n * Files endpoints\n */\nexport const files = {\n uploadPublicFile: \"files/upload-public\",\n} as const;\n\n/**\n * Languages endpoints\n */\nexport const languages = {\n getAll: \"languages\",\n} as const;\n\n/**\n * Templates endpoints\n */\nexport const templates = {\n getDefinitions: \"templates/definitions\",\n getAll: \"templates\",\n getByKey: {\n definition: \"templates/{Key}\",\n render: (key: string): string =>\n \"templates/{Key}\".replace(\"{Key}\", encodeURIComponent(key)),\n },\n update: {\n definition: \"templates/{Key}\",\n render: (key: string): string =>\n \"templates/{Key}\".replace(\"{Key}\", encodeURIComponent(key)),\n },\n delete: {\n definition: \"templates/{Key}\",\n render: (key: string): string =>\n \"templates/{Key}\".replace(\"{Key}\", encodeURIComponent(key)),\n },\n} as const;\n\n/**\n * B2C Configuration endpoints\n */\nexport const b2c = {\n configFields: {\n getAll: \"b2c/config-fields\",\n updateAll: \"b2c/config-fields\",\n },\n} as const;\n\n/**\n * Main endpoints export object\n */\nexport const endpoints = {\n customers,\n vehicles,\n vehicleParameters,\n insuranceServices,\n agents,\n insuranceCompanies,\n resourceKeys,\n releaseNotes,\n banks,\n financialInstitutions,\n policies,\n policyTransfers,\n filePolicyTransfers,\n cases,\n coverageGroups,\n webhooks,\n agentBranches,\n files,\n languages,\n templates,\n b2c,\n proposals,\n} as const;\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agents } from \"../core/endpoints.js\";\nimport type {\n GetCurrentAgentResult,\n UpdateCurrentAgentRequest,\n GetMyAgentInsuranceCompaniesResult,\n GetAgentInsuranceCompanyBranchesResult,\n GetAgentInsuranceCompanyConnectionResult,\n AddInsuranceCompanyToAgentRequest,\n UpdateAgentInsuranceCompanyConnectionRequest,\n UpdateAgentInsuranceCompanyBranchesRequest,\n ReSyncAgentInsuranceCompanyWithInsuranceRequest,\n GetB2CConfigFieldsResult,\n UpdateB2CConfigFieldsRequest,\n} from \"@insurup/contracts\";\nimport { b2c } from \"../core/endpoints.js\";\n\n/**\n * Provides agent management operations for the InsurUp platform, enabling agents to manage their profile,\n * insurance company connections, and business relationships within the insurance ecosystem.\n *\n * InsurUp platformunda acente yönetimi işlemlerini sağlar; acentelerin profilerini, sigorta şirketi\n * bağlantılarını ve sigorta ekosistemi içindeki iş ilişkilerini yönetmelerine olanak tanır.\n */\nexport class InsurUpAgentClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves the current agent's profile information including business details and configuration settings.\n *\n * Mevcut acentenin iş detayları ve yapılandırma ayarları dahil profil bilgilerini getirir.\n *\n * @returns Agent profile information / Acente profil bilgileri\n */\n async getCurrentAgent(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCurrentAgentResult>> {\n return this.http.get<GetCurrentAgentResult>(\n agents.getCurrentAgent,\n options,\n );\n }\n\n /**\n * Updates the current agent's profile information such as business details, contact information, and operational preferences.\n *\n * Mevcut acentenin iş detayları, iletişim bilgileri ve operasyonel tercihleri gibi profil bilgilerini günceller.\n *\n * @param request Agent profile update data / Acente profil güncelleme verileri\n * @returns Operation result / İşlem sonucu\n */\n async updateCurrentAgent(\n request: UpdateCurrentAgentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(agents.updateCurrentAgent, request, options);\n }\n\n /**\n * Retrieves all insurance companies that the current agent is affiliated with or has authorization to work with.\n *\n * Mevcut acentenin bağlı olduğu veya çalışma yetkisine sahip olduğu tüm sigorta şirketlerini getirir.\n *\n * @returns List of agent's insurance companies / Acentenin sigorta şirketleri listesi\n */\n async getAgentInsuranceCompaniesAsync(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetMyAgentInsuranceCompaniesResult[]>> {\n return this.http.get<GetMyAgentInsuranceCompaniesResult[]>(\n agents.insuranceCompanies.getMyInsuranceCompanies,\n options,\n );\n }\n\n /**\n * Retrieves the available product branches (Kasko, TSS, IMM, DASK, etc.) for a specific insurance company that the agent can offer.\n *\n * Acentenin sunabileceği belirli bir sigorta şirketi için mevcut ürün dallarını (Kasko, TSS, İMM, DASK, vb.) getirir.\n *\n * @param agentInsuranceCompanyId Insurance company relationship identifier / Sigorta şirketi ilişki tanımlayıcısı\n * @returns Available product branches / Mevcut ürün dalları\n */\n async getAgentInsuranceCompanyBranchesAsync(\n agentInsuranceCompanyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentInsuranceCompanyBranchesResult[]>> {\n const endpoint = agents.insuranceCompanies.getBranches.render(\n agentInsuranceCompanyId,\n );\n return this.http.get<GetAgentInsuranceCompanyBranchesResult[]>(\n endpoint,\n options,\n );\n }\n\n /**\n * Retrieves the technical connection configuration and credentials for integrating with a specific insurance company's systems.\n *\n * Belirli bir sigorta şirketinin sistemleri ile entegrasyon için teknik bağlantı yapılandırması ve kimlik bilgilerini getirir.\n *\n * @param agentInsuranceCompanyId Insurance company relationship identifier / Sigorta şirketi ilişki tanımlayıcısı\n * @returns Connection configuration details / Bağlantı yapılandırma detayları\n */\n async getAgentInsuranceCompanyConnectionAsync(\n agentInsuranceCompanyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentInsuranceCompanyConnectionResult>> {\n const endpoint = agents.insuranceCompanies.getConnection.render(\n agentInsuranceCompanyId,\n );\n return this.http.get<GetAgentInsuranceCompanyConnectionResult>(\n endpoint,\n options,\n );\n }\n\n /**\n * Establishes a new business relationship between the agent and an insurance company, enabling the agent to offer that company's products.\n *\n * Acente ile sigorta şirketi arasında yeni bir iş ilişkisi kurar ve acentenin o şirketin ürünlerini sunmasına olanak tanır.\n *\n * @param request Insurance company association request / Sigorta şirketi ilişkilendirme talebi\n * @returns Operation result / İşlem sonucu\n */\n async addAgentInsuranceCompany(\n request: AddInsuranceCompanyToAgentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n agents.insuranceCompanies.addInsuranceCompanyToAgent,\n request,\n options,\n );\n }\n\n /**\n * Removes the business relationship between the agent and an insurance company, terminating the agent's ability to offer that company's products.\n *\n * Acente ile sigorta şirketi arasındaki iş ilişkisini kaldırır ve acentenin o şirketin ürünlerini sunma yeteneğini sonlandırır.\n *\n * @param agentInsuranceCompanyId Insurance company relationship identifier to remove / Kaldırılacak sigorta şirketi ilişki tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async removeAgentInsuranceCompany(\n agentInsuranceCompanyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agents.insuranceCompanies.remove.render(\n agentInsuranceCompanyId,\n );\n return this.http.deleteNoContent(endpoint, options);\n }\n\n /**\n * Updates the technical connection settings and credentials for integrating with an insurance company's API or systems.\n *\n * Bir sigorta şirketinin API'si veya sistemleri ile entegrasyon için teknik bağlantı ayarları ve kimlik bilgilerini günceller.\n *\n * @param request Connection configuration update request / Bağlantı yapılandırma güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentInsuranceCompanyConnection(\n request: UpdateAgentInsuranceCompanyConnectionRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agents.insuranceCompanies.updateConnection.render(\n request.agentInsuranceCompanyId,\n );\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Updates which product branches (Kasko, TSS, IMM, DASK, etc.) the agent is authorized to offer for a specific insurance company.\n *\n * Acentenin belirli bir sigorta şirketi için hangi ürün dallarını (Kasko, TSS, İMM, DASK, vb.) sunma yetkisine sahip olduğunu günceller.\n *\n * @param request Branch authorization update request / Şube yetkilendirme güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentInsuranceCompanyBranches(\n request: UpdateAgentInsuranceCompanyBranchesRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agents.insuranceCompanies.updateBranches.render(\n request.agentInsuranceCompanyId,\n );\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Re-synchronizes the agent's configuration and authorizations with the insurance company's systems to ensure data consistency and updated permissions.\n *\n * Veri tutarlılığını ve güncellenmiş izinleri sağlamak için acentenin yapılandırması ve yetkilendirmelerini sigorta şirketinin sistemleri ile yeniden senkronize eder.\n *\n * @param request Re-synchronization request details / Yeniden senkronizasyon talep detayları\n * @returns Operation result / İşlem sonucu\n */\n async reSyncAgentInsuranceCompanyWithInsurance(\n request: ReSyncAgentInsuranceCompanyWithInsuranceRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint =\n agents.insuranceCompanies.reSyncAgentInsuranceCompanyWithInsurance.render(\n request.agentInsuranceCompanyId,\n );\n return this.http.postNoContent(endpoint, request, options);\n }\n\n /**\n * Retrieves all B2C configuration fields that define the customizable settings and parameters for the agent's customer-facing interface.\n *\n * Acentenin müşteriye yönelik arayüzü için özelleştirilebilir ayarları ve parametreleri tanımlayan tüm B2C yapılandırma alanlarını getirir.\n *\n * @returns List of B2C configuration fields\n */\n async getB2CConfigFields(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetB2CConfigFieldsResult>> {\n return this.http.get<GetB2CConfigFieldsResult>(\n b2c.configFields.getAll,\n options,\n );\n }\n\n /**\n * Updates all B2C configuration fields at once, allowing agents to customize their customer-facing interface settings and branding parameters.\n *\n * Tüm B2C yapılandırma alanlarını bir kerede günceller, acentelerin müşteriye yönelik arayüz ayarlarını ve marka parametrelerini özelleştirmelerine olanak tanır.\n *\n * @param request B2C configuration fields update data\n * @returns Operation result\n */\n async updateB2CConfigFields(\n request: UpdateB2CConfigFieldsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(b2c.configFields.updateAll, request, options);\n }\n}\n","/**\n * @fileoverview Agent Branch Client - Agent branch management operations\n * @description Provides branch management operations for insurance agents\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentBranches } from \"../core/endpoints.js\";\nimport type {\n CreateAgentBranchRequest,\n UpdateAgentBranchRequest,\n DeleteAgentBranchRequest,\n GetAgentBranchResult,\n GetAllAgentBranchesResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides branch management operations for insurance agents, enabling the creation and administration\n * of organizational branches within agency structures.\n */\nexport class InsurUpAgentBranchClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Creates a new agent branch within the agency structure with optional parent branch relationship.\n *\n * Acente yapısı içinde isteğe bağlı üst şube ilişkisi ile yeni bir acente şubesi oluşturur.\n *\n * @param request Branch creation request with name and optional parent\n * @returns Created branch details\n */\n async createAgentBranch(\n request: CreateAgentBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return this.http.post<string>(agentBranches.create, request, options);\n }\n\n /**\n * Retrieves detailed information about a specific agent branch including its parent relationship.\n *\n * Belirli bir acente şubesi hakkında üst şube ilişkisi dahil detaylı bilgileri getirir.\n *\n * @param id Unique identifier of the agent branch\n * @returns Agent branch details\n */\n async getAgentBranchById(\n id: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentBranchResult>> {\n const endpoint = agentBranches.getById.render(id);\n return this.http.get<GetAgentBranchResult>(endpoint, options);\n }\n\n /**\n * Retrieves all available agent branches within the current agency, showing the complete branch hierarchy.\n *\n * Mevcut acente içindeki tüm kullanılabilir acente şubelerini getirir ve tam şube hiyerarşisini gösterir.\n *\n * @returns List of all agent branches\n */\n async getAgentBranches(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllAgentBranchesResult[]>> {\n return this.http.get<GetAllAgentBranchesResult[]>(\n agentBranches.getAll,\n options,\n );\n }\n\n /**\n * Updates an existing agent branch's name or parent branch relationship to reflect changing organizational needs.\n *\n * Değişen organizasyonel ihtiyaçları yansıtmak için mevcut bir acente şubesinin adını veya üst şube ilişkisini günceller.\n *\n * @param request Branch update request with modified details\n * @returns Operation result\n */\n async updateAgentBranch(\n request: UpdateAgentBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentBranches.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Removes an agent branch from the agency structure. The branch must not have any child branches.\n *\n * Acente yapısından bir acente şubesini kaldırır. Şubenin alt şubeleri olmamalıdır.\n *\n * @param request Branch deletion request\n * @returns Operation result\n */\n async deleteAgentBranch(\n request: DeleteAgentBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentBranches.delete.render(request.id);\n return this.http.deleteNoContent(endpoint, options);\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentRoles } from \"../core/endpoints.js\";\nimport type {\n CreateAgentRoleRequest,\n UpdateAgentRoleRequest,\n DeleteAgentRoleRequest,\n GetAgentRoleByIdResult,\n GetAllAgentRolesResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides role management operations for insurance agents, enabling the creation and administration\n * of role-based access control within agency hierarchies and permission structures.\n *\n * Sigorta acenteleri için rol yönetimi işlemlerini sağlar; acente hiyerarşileri ve izin yapıları\n * içinde rol tabanlı erişim kontrolünün oluşturulması ve yönetimini mümkün kılar.\n */\nexport class InsurUpAgentRoleClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Creates a new agent role with specified permissions and access levels for use within the agency structure.\n *\n * Acente yapısı içinde kullanım için belirtilen izinler ve erişim seviyeleri ile yeni bir acente rolü oluşturur.\n *\n * @param request Role creation request with permissions and configurations / İzinler ve yapılandırmalar ile rol oluşturma talebi\n * @returns Operation result / İşlem sonucu\n */\n async createAgentRole(\n request: CreateAgentRoleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(agentRoles.create, request, options);\n }\n\n /**\n * Retrieves detailed information about a specific agent role including its permissions and access configurations.\n *\n * Belirli bir acente rolü hakkında izinleri ve erişim yapılandırmaları dahil detaylı bilgileri getirir.\n *\n * @param id Unique identifier of the agent role / Acente rolünün benzersiz tanımlayıcısı\n * @returns Agent role details / Acente rolü detayları\n */\n async getAgentRoleById(\n id: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentRoleByIdResult>> {\n const endpoint = agentRoles.getById.render(id);\n return this.http.get<GetAgentRoleByIdResult>(endpoint, options);\n }\n\n /**\n * Retrieves all available agent roles within the current agency, showing the complete role hierarchy and permissions structure.\n *\n * Mevcut acente içindeki tüm kullanılabilir acente rollerini getirir ve tam rol hiyerarşisi ile izin yapısını gösterir.\n *\n * @returns List of all agent roles / Tüm acente rolleri listesi\n */\n async getAgentRoles(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllAgentRolesResult[]>> {\n return this.http.get<GetAllAgentRolesResult[]>(agentRoles.getAll, options);\n }\n\n /**\n * Updates an existing agent role's permissions, access levels, or configuration settings to reflect changing organizational needs.\n *\n * Değişen organizasyonel ihtiyaçları yansıtmak için mevcut bir acente rolünün izinlerini, erişim seviyelerini veya yapılandırma ayarlarını günceller.\n *\n * @param request Role update request with modified permissions / Değiştirilmiş izinlerle rol güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentRole(\n request: UpdateAgentRoleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentRoles.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Removes an agent role from the agency structure, ensuring proper cleanup of associated permissions and user assignments.\n *\n * Acente yapısından bir acente rolünü kaldırır ve ilişkili izinlerin ve kullanıcı atamalarının düzgün temizlenmesini sağlar.\n *\n * @param request Role deletion request / Rol silme talebi\n * @returns Operation result / İşlem sonucu\n */\n async deleteAgentRole(\n request: DeleteAgentRoleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentRoles.delete.render(request.id);\n return this.http.deleteNoContent(endpoint, options);\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentSetupRequests } from \"../core/endpoints.js\";\nimport type {\n EnterAgentSetupRequestRequest,\n EnterAgentSetupRequestResult,\n CompleteAgentSetupRequestRequest,\n} from \"@insurup/contracts\";\n\n/**\n * Provides agent onboarding and setup operations for new insurance agents joining the InsurUp platform,\n * facilitating the complete registration and configuration process required for business operations.\n *\n * InsurUp platformuna katılan yeni sigorta acenteleri için acente katılım ve kurulum işlemlerini sağlar;\n * iş operasyonları için gereken tam kayıt ve yapılandırma sürecini kolaylaştırır.\n */\nexport class InsurUpAgentSetupClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Initiates the agent setup process by submitting initial business information and required documentation for platform registration.\n *\n * Platform kaydı için ilk iş bilgilerini ve gerekli dokümantasyonu sunarak acente kurulum sürecini başlatır.\n *\n * @param request Agent setup initiation request with business details / İş detayları ile acente kurulum başlatma talebi\n * @returns Setup process identifier and next steps / Kurulum süreci tanımlayıcısı ve sonraki adımlar\n */\n async enterAgentSetupRequest(\n request: EnterAgentSetupRequestRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<EnterAgentSetupRequestResult>> {\n return this.http.post<EnterAgentSetupRequestResult>(\n agentSetupRequests.enter,\n request,\n options,\n );\n }\n\n /**\n * Finalizes the agent setup process by confirming all requirements are met and activating the agent's platform access.\n *\n * Tüm gereksinimlerin karşılandığını onaylayarak ve acentenin platform erişimini aktive ederek acente kurulum sürecini sonlandırır.\n *\n * @param request Setup completion request with final confirmations / Son onaylar ile kurulum tamamlama talebi\n * @returns Operation result / İşlem sonucu\n */\n async completeAgentSetupRequest(\n request: CompleteAgentSetupRequestRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n agentSetupRequests.complete,\n request,\n options,\n );\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentUsers } from \"../core/endpoints.js\";\nimport {\n ALL_AGENT_USER_FIELDS,\n type AgentUserFieldKey,\n type GetAgentUsersOptions,\n type AgentUsersConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n GetAgentUserResult,\n UpdateMyAgentUserRequest,\n InviteAgentUserRequest,\n AcceptAgentUserInviteRequest,\n UpdateAgentUserRequest,\n UpdateAgentUserPasswordRequest,\n GetMyAgentUserRobotCodeResult,\n MigrateAllAgentUsersResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides comprehensive user management operations for insurance agency staff, enabling agencies to manage\n * their team members, permissions, and access control within the InsurUp platform ecosystem.\n *\n * Sigorta acente personeli için kapsamlı kullanıcı yönetimi işlemlerini sağlar; acentelerin InsurUp platform\n * ekosistemi içinde ekip üyelerini, izinlerini ve erişim kontrolünü yönetmesine olanak tanır.\n */\nexport class InsurUpAgentUserClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Retrieves the current agent user's profile information including personal details and platform settings.\n *\n * Mevcut acente kullanıcısının kişisel detayları ve platform ayarları dahil profil bilgilerini getirir.\n *\n * @returns Current agent user profile / Mevcut acente kullanıcı profili\n */\n async getMyAgentUser(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentUserResult>> {\n return this.http.get<GetAgentUserResult>(agentUsers.me, options);\n }\n\n /**\n * Updates the current agent user's profile information such as contact details and preferences.\n *\n * Mevcut acente kullanıcısının iletişim detayları ve tercihleri gibi profil bilgilerini günceller.\n *\n * @param request Profile update request / Profil güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateMyAgentUser(\n request: UpdateMyAgentUserRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(agentUsers.updateMyUser, request, options);\n }\n\n /**\n * Sends an invitation to a new user to join the agency team with specified role and permissions.\n *\n * Belirtilen rol ve izinlerle acente takımına katılması için yeni bir kullanıcıya davetiye gönderir.\n *\n * @param request User invitation request with role and contact information / Rol ve iletişim bilgileri ile kullanıcı davet talebi\n * @returns Operation result / İşlem sonucu\n */\n async inviteAgentUser(\n request: InviteAgentUserRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(agentUsers.invite, request, options);\n }\n\n /**\n * Activates an agent user account, granting them access to the platform and enabling their permissions.\n *\n * Bir acente kullanıcı hesabını aktive eder, platform erişimi verir ve izinlerini etkinleştirir.\n *\n * @param agentUserId Unique identifier of the agent user to activate / Aktive edilecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async activateAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.activate.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Deactivates an agent user account, suspending their access while preserving their profile data.\n *\n * Bir acente kullanıcı hesabını deaktive eder, profil verilerini korurken erişimlerini askıya alır.\n *\n * @param agentUserId Unique identifier of the agent user to deactivate / Deaktive edilecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deactivateAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.deactivate.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Validates an agent user invitation code to ensure it is legitimate and has not expired.\n *\n * Bir acente kullanıcı davet kodunun meşru olduğunu ve süresinin dolmadığını doğrular.\n *\n * @param code Invitation code to validate / Doğrulanacak davet kodu\n * @returns Operation result / İşlem sonucu\n */\n async checkAgentUserInviteCode(\n code: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.checkAgentUserInviteCode.render(code);\n // Note: GET always expects content, but this validation endpoint may return 204\n // If this causes issues, the API should be updated to return a response body\n return this.http.get<void>(endpoint, options) as Promise<InsurUpResult>;\n }\n\n /**\n * Permanently removes an agent user account and all associated data from the agency.\n *\n * Bir acente kullanıcı hesabını ve tüm ilişkili verileri acenteden kalıcı olarak kaldırır.\n *\n * @param agentUserId Unique identifier of the agent user to delete / Silinecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.delete.render(agentUserId);\n return this.http.deleteNoContent(endpoint, options);\n }\n\n /**\n * Retrieves detailed information about a specific agent user including their role and current status.\n *\n * Belirli bir acente kullanıcısı hakkında rolü ve mevcut durumu dahil detaylı bilgileri getirir.\n *\n * @param agentUserId Unique identifier of the agent user / Acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Agent user details / Acente kullanıcı detayları\n */\n async getAgentUserById(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentUserResult>> {\n const endpoint = agentUsers.getById.render(agentUserId);\n return this.http.get<GetAgentUserResult>(endpoint, options);\n }\n\n /**\n * Resends an invitation email to an agent user who may not have received or lost their original invitation.\n *\n * Orijinal davetiyesini almamış veya kaybetmiş olabilecek bir acente kullanıcısına davet e-postasını yeniden gönderir.\n *\n * @param agentUserId Unique identifier of the agent user to resend invitation / Davetiyesi yeniden gönderilecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async reSendInviteAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.reSendInvite.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Accepts an agent user invitation and completes the registration process for the new team member.\n *\n * Bir acente kullanıcı davetiyesini kabul eder ve yeni ekip üyesi için kayıt sürecini tamamlar.\n *\n * @param request Invitation acceptance request with user details / Kullanıcı detayları ile davetiye kabul talebi\n * @returns Operation result / İşlem sonucu\n */\n async acceptAgentUserInvite(\n request: AcceptAgentUserInviteRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(agentUsers.acceptInvite, request, options);\n }\n\n /**\n * Updates an agent user's profile information, role assignments, or access permissions by an administrator.\n *\n * Bir yönetici tarafından acente kullanıcısının profil bilgilerini, rol atamalarını veya erişim izinlerini günceller.\n *\n * @param request User update request with modified information / Değiştirilmiş bilgilerle kullanıcı güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentUser(\n request: UpdateAgentUserRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Updates an agent user's password for enhanced security or when requested by the user.\n *\n * Gelişmiş güvenlik için veya kullanıcı tarafından talep edildiğinde acente kullanıcısının şifresini günceller.\n *\n * @param request Password update request / Şifre güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentUserPassword(\n request: UpdateAgentUserPasswordRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(agentUsers.updatePassword, request, options);\n }\n\n /**\n * Retrieves the current agent user's robot/automation code for API integrations and automated operations.\n *\n * API entegrasyonları ve otomatik işlemler için mevcut acente kullanıcısının robot/otomasyon kodunu getirir.\n *\n * @returns Agent user robot code / Acente kullanıcı robot kodu\n */\n async getMyAgentUserRobotCode(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetMyAgentUserRobotCodeResult>> {\n return this.http.get<GetMyAgentUserRobotCodeResult>(\n agentUsers.meRobotCode,\n options,\n );\n }\n\n /**\n * Migrates an agent user from the legacy authentication system to the AuthServer.\n * Creates an auth user and links it via AuthUserId field. A password reset email will be sent.\n *\n * Acente kullanıcısını eski kimlik doğrulama sisteminden AuthServer'a taşır.\n * Auth kullanıcısı oluşturur ve AuthUserId alanı ile bağlar. Şifre sıfırlama e-postası gönderilir.\n *\n * @param agentUserId Unique identifier of the agent user to migrate / Taşınacak acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async migrateAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.migrate.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Migrates all agent users in the current tenant that haven't been migrated yet.\n *\n * Henüz taşınmamış mevcut kiracıdaki tüm acente kullanıcılarını taşır.\n *\n * @returns Response with the count of migrated users / Taşınan kullanıcı sayısı ile yanıt\n */\n async migrateAllAgentUsers(\n options?: RequestOptions,\n ): Promise<InsurUpResult<MigrateAllAgentUsersResult>> {\n return this.http.post<MigrateAllAgentUsersResult>(\n agentUsers.migrateAll,\n undefined,\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries agent users using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak acente kullanıcılarını sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.agentUsers.getAgentUsers({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.agentUsers.getAgentUsers({\n * select: ['id', 'email', 'name', 'state'] as const,\n * first: 10,\n * filter: { state: { eq: AgentUserState.Active } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of agent users with type-narrowed fields\n */\n async getAgentUsers<const TFields extends AgentUserFieldKey[]>(\n requestOptions?: GetAgentUsersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<AgentUsersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_AGENT_USER_FIELDS) as AgentUserFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetAgentUsers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryAgentUserResultFilterInput\n $filter: filtering_QueryAgentUserResultFilterInput\n $order: [sorting_QueryAgentUserResultSortInput!]\n ) {\n agentUsersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n agentUsersNew: Omit<AgentUsersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<AgentUsersConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.agentUsersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.agentUsersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<AgentUsersConnection<TFields>>;\n }\n}\n","/**\n * Customer management client for the InsurUp TypeScript SDK.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport type {\n CreateCustomerRequest,\n CreateCustomerResult,\n GetCustomerResult,\n UpdateCustomerRequest,\n AddCustomerEmailRequest,\n RemoveCustomerEmailRequest,\n ChangePrimaryCustomerEmailRequest,\n GetCustomerEmailsResultItem,\n AddCustomerPhoneNumberRequest,\n RemoveCustomerPhoneNumberRequest,\n ChangePrimaryCustomerPhoneNumberRequest,\n GetCustomerPhoneNumbersResultItem,\n SetCustomerRepresentativeRequest,\n GetCustomerHealthInfoResult,\n UpdateCustomerHealthInfoRequest,\n CreateContactFlowRequest,\n CreateCustomerContactRequest,\n EndContactFlowRequest,\n GetCustomerContactFlowsResultItem,\n GetCustomerContactsResultItem,\n ExternalLookupCustomerRequest,\n ExternalLookupCustomerResult,\n SetCustomerBranchRequest,\n CreateCustomerAddressRequest,\n CreateCustomerAddressResult,\n UpdateCustomerAddressRequest,\n GetCustomerAddressResult,\n GiveCustomerConsentRequest,\n RevokeCustomerConsentRequest,\n GetCustomerConsentsResult,\n} from \"@insurup/contracts\";\nimport {\n ALL_CUSTOMER_FIELDS,\n CustomerType,\n type CustomerFieldKey,\n type GetCustomersOptions,\n type CustomersConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\n\n/**\n * Customer management client providing comprehensive customer lifecycle management.\n */\nexport class InsurUpCustomerClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Creates a new customer profile with essential personal and contact information.\n */\n async createCustomer(\n request: CreateCustomerRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerResult>> {\n // Transform request: type -> $type with lowercase discriminator for API\n const { type, ...rest } = request;\n\n let $type: string;\n switch (type) {\n case CustomerType.Individual:\n $type = \"individual\";\n break;\n case CustomerType.Company:\n $type = \"company\";\n break;\n case CustomerType.Foreign:\n $type = \"foreign\";\n break;\n }\n\n return this.http.post<CreateCustomerResult>(\n endpoints.customers.createCustomer,\n { $type, ...rest },\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific customer.\n */\n async getCustomer(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerResult>> {\n return this.http.get<GetCustomerResult>(\n endpoints.customers.getCustomer.render(customerId),\n options,\n );\n }\n\n /**\n * Retrieves the profile information of the currently authenticated customer.\n */\n async getCurrentCustomer(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerResult>> {\n return this.http.get<GetCustomerResult>(\n endpoints.customers.getCurrentCustomer,\n options,\n );\n }\n\n /**\n * Updates existing customer profile information.\n */\n async updateCustomer(\n request: UpdateCustomerRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.customers.updateCustomer.render(request.id),\n request,\n options,\n );\n }\n\n /**\n * Permanently removes a customer profile and all associated data.\n */\n async deleteCustomer(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.deleteCustomer.render(customerId),\n options,\n );\n }\n\n /**\n * Retrieves all email addresses associated with a customer.\n */\n async getCustomerEmails(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerEmailsResultItem[]>> {\n return this.http.get<GetCustomerEmailsResultItem[]>(\n endpoints.customers.emails.getCustomerEmails.render(customerId),\n options,\n );\n }\n\n /**\n * Adds a new email address to a customer's contact information.\n */\n async addCustomerEmail(\n request: AddCustomerEmailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.emails.addCustomerEmail.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Removes an email address from a customer's contact information.\n */\n async removeCustomerEmail(\n request: RemoveCustomerEmailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.emails.removeCustomerEmail.render(request),\n options,\n );\n }\n\n /**\n * Changes the primary email address for a customer.\n */\n async changePrimaryCustomerEmail(\n request: ChangePrimaryCustomerEmailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.emails.changePrimaryCustomerEmail.render(request),\n undefined,\n options,\n );\n }\n\n /**\n * Retrieves all phone numbers associated with a customer.\n */\n async getCustomerPhoneNumbers(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerPhoneNumbersResultItem[]>> {\n return this.http.get<GetCustomerPhoneNumbersResultItem[]>(\n endpoints.customers.phoneNumbers.getCustomerPhoneNumbers.render(\n customerId,\n ),\n options,\n );\n }\n\n /**\n * Adds a new phone number to a customer's contact information.\n */\n async addCustomerPhoneNumber(\n request: AddCustomerPhoneNumberRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.phoneNumbers.addCustomerPhoneNumber.render(\n request.customerId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Removes a phone number from a customer's contact information.\n */\n async removeCustomerPhoneNumber(\n request: RemoveCustomerPhoneNumberRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.phoneNumbers.removeCustomerPhoneNumber.render(\n request,\n ),\n options,\n );\n }\n\n /**\n * Changes the primary phone number for a customer.\n */\n async changePrimaryCustomerPhoneNumber(\n request: ChangePrimaryCustomerPhoneNumberRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.phoneNumbers.changePrimaryCustomerPhoneNumber.render(\n request,\n ),\n undefined,\n options,\n );\n }\n\n /**\n * Assigns a specific agent representative to manage a customer's account.\n */\n async setCustomerRepresentative(\n request: SetCustomerRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.setCustomerRepresentative.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Assigns or changes the branch for a customer to organize customer segmentation and reporting.\n *\n * Müşteri segmentasyonu ve raporlama için müşterinin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setCustomerBranch(\n request: SetCustomerBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.setCustomerBranch.render(request.customerId),\n request,\n options,\n );\n }\n\n // Address management methods\n\n /**\n * Creates a new customer address record using property number as the single source of truth.\n *\n * Tek doğruluk kaynağı olarak konut numarasını kullanarak yeni müşteri adres kaydı oluşturur.\n *\n * @param request Address creation request / Adres oluşturma talebi\n * @returns Created address information / Oluşturulan adres bilgileri\n */\n async createCustomerAddress(\n request: CreateCustomerAddressRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerAddressResult>> {\n return this.http.post<CreateCustomerAddressResult>(\n endpoints.customers.addresses.create.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Updates the type classification of an existing customer address.\n *\n * Mevcut bir müşteri adresinin tür sınıflandırmasını günceller.\n *\n * @param request Address update request / Adres güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCustomerAddress(\n request: UpdateCustomerAddressRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.customers.addresses.update.render(\n request.customerId,\n request.addressId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific customer address.\n *\n * Belirli bir müşteri adresi hakkında detaylı bilgileri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param addressId Unique identifier of the address / Adresin benzersiz tanımlayıcısı\n * @returns Address details / Adres detayları\n */\n async getCustomerAddressById(\n customerId: string,\n addressId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerAddressResult>> {\n return this.http.get<GetCustomerAddressResult>(\n endpoints.customers.addresses.getById.render(customerId, addressId),\n options,\n );\n }\n\n /**\n * Retrieves all addresses owned by a specific customer for comprehensive address management.\n *\n * Kapsamlı adres yönetimi için belirli bir müşteriye ait tüm adresleri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @returns Customer addresses / Müşteri adresleri\n */\n async getCustomerAddresses(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerAddressResult[]>> {\n return this.http.get<GetCustomerAddressResult[]>(\n endpoints.customers.addresses.getAll.render(customerId),\n options,\n );\n }\n\n /**\n * Deletes a customer address from their address collection.\n *\n * Müşterinin adres koleksiyonundan bir adresi siler.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param addressId Unique identifier of the address to delete / Silinecek adresin benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteCustomerAddress(\n customerId: string,\n addressId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.addresses.delete.render(customerId, addressId),\n options,\n );\n }\n\n // Consent management methods\n\n /**\n * Records customer consent for data processing or marketing communications in compliance with KVKK/ETK regulations.\n *\n * KVKK/ETK düzenlemelerine uygun olarak veri işleme veya pazarlama iletişimleri için müşteri iznini kaydeder.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param request Consent recording request / İzin kayıt talebi\n * @returns Operation result / İşlem sonucu\n */\n async giveCustomerConsent(\n customerId: string,\n request: GiveCustomerConsentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.consents.give.render(customerId),\n request,\n options,\n );\n }\n\n /**\n * Revokes a previously granted customer consent in accordance with customer data rights.\n *\n * Müşteri veri hakları uyarınca önceden verilmiş bir müşteri iznini geri çeker.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param request Consent revocation request / İzin geri çekme talebi\n * @returns Operation result / İşlem sonucu\n */\n async revokeCustomerConsent(\n customerId: string,\n request: RevokeCustomerConsentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.consents.revoke.render(customerId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves both active consent states and complete consent history for a customer in a single optimized API call.\n *\n * Müşterinin hem aktif izin durumlarını hem de tam izin geçmişini tek bir optimize edilmiş API çağrısında getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @returns Active consent states and complete history / Aktif izin durumları ve tam geçmiş\n */\n async getCustomerConsents(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerConsentsResult>> {\n return this.http.get<GetCustomerConsentsResult>(\n endpoints.customers.consents.getAll.render(customerId),\n options,\n );\n }\n\n /**\n * Retrieves comprehensive health information for a customer.\n */\n async getCustomerHealthInfo(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerHealthInfoResult>> {\n return this.http.get<GetCustomerHealthInfoResult>(\n endpoints.customers.getHealthInfo.render(customerId),\n options,\n );\n }\n\n /**\n * Updates customer health information.\n */\n async updateCustomerHealthInfo(\n request: UpdateCustomerHealthInfoRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.customers.updateHealthInfo.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Initiates a new customer contact flow.\n */\n async createCustomerContactFlow(\n request: CreateContactFlowRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.contactFlows.createContactFlow.render(\n request.customerId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Records a customer contact interaction.\n */\n async createCustomerContact(\n request: CreateCustomerContactRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.contacts.create.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Completes and closes a customer contact flow.\n */\n async endCustomerContactFlow(\n request: EndContactFlowRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.contactFlows.endContactFlow.render(\n request.customerId,\n request.contactFlowId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves all contact flows for a customer.\n */\n async getCustomerContactFlows(\n customerId: string,\n caseRef?: string | null,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerContactFlowsResultItem[]>> {\n return this.http.get<GetCustomerContactFlowsResultItem[]>(\n endpoints.customers.contactFlows.getCustomerContactFlows.render(\n customerId,\n caseRef,\n ),\n options,\n );\n }\n\n /**\n * Retrieves all individual contact interactions for a customer.\n */\n async getCustomerContacts(\n customerId: string,\n caseRef?: string | null,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerContactsResultItem[]>> {\n return this.http.get<GetCustomerContactsResultItem[]>(\n endpoints.customers.contacts.getCustomerContacts.render(\n customerId,\n caseRef,\n ),\n options,\n );\n }\n\n /**\n * Performs external customer data lookup.\n */\n async externalLookupCustomer(\n request: ExternalLookupCustomerRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<ExternalLookupCustomerResult>> {\n return this.http.post<ExternalLookupCustomerResult>(\n endpoints.customers.externalLookup,\n request,\n options,\n );\n }\n\n // ============================================\n // GraphQL Methods\n // ============================================\n\n /**\n * Retrieves a paginated list of customers using GraphQL with type-safe field selection.\n *\n * GraphQL kullanarak tip güvenli alan seçimi ile sayfalanmış müşteri listesi getirir.\n *\n * @example\n * // Get all fields\n * const result = await client.customers.getCustomers({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.customers.getCustomers({\n * select: ['id', 'name', 'type', 'primaryEmail'] as const,\n * first: 10,\n * filter: { type: { eq: CustomerType.INDIVIDUAL } }\n * });\n * // result.data.nodes[0].id - ✓ string\n * // result.data.nodes[0].name - ✓ string | null\n * // result.data.nodes[0].type - ✓ CustomerType\n * // result.data.nodes[0].birthDate - ✗ TypeScript Error!\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of customers with type-narrowed fields\n */\n async getCustomers<const TFields extends CustomerFieldKey[]>(\n requestOptions?: GetCustomersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<CustomersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_CUSTOMER_FIELDS) as CustomerFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n const includeTotalCount = requestOptions?.includeTotalCount !== false;\n\n const query = `\n query GetCustomers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryCustomerModelFilterInput\n $filter: filtering_QueryCustomerModelFilterInput\n $order: [sorting_QueryCustomerModelSortInput!]\n ) {\n customersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n ${includeTotalCount ? \"totalCount\" : \"\"}\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables: Record<string, unknown> = {};\n\n // Default to first: 50 if no pagination params provided\n if (\n requestOptions?.first === undefined &&\n requestOptions?.last === undefined\n ) {\n variables.first = 50;\n } else {\n if (requestOptions?.first !== undefined)\n variables.first = requestOptions.first;\n if (requestOptions?.last !== undefined)\n variables.last = requestOptions.last;\n }\n\n if (requestOptions?.after !== undefined)\n variables.after = requestOptions.after;\n if (requestOptions?.before !== undefined)\n variables.before = requestOptions.before;\n if (requestOptions?.search !== undefined)\n variables.search = requestOptions.search;\n if (requestOptions?.filter !== undefined)\n variables.filter = requestOptions.filter;\n if (requestOptions?.order !== undefined)\n variables.order = requestOptions.order;\n\n const result = await this.graphql.query<{\n customersNew: Omit<CustomersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<CustomersConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.customersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n // Return the customersNew data with derived nodes\n return {\n ...result,\n data: {\n ...result.data.customersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<CustomersConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview Vehicle Client Implementation\n * @description Provides comprehensive vehicle management operations for handling customer vehicles, vehicle data lookups,\n * brand and model queries, and vehicle-based insurance operations within the automotive insurance ecosystem.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type { InsuranceParameter } from \"@insurup/contracts\";\nimport type {\n CreateCustomerVehicleRequest,\n CreateCustomerVehicleResult,\n UpdateCustomerVehicleRequest,\n GetCustomerVehicleResult,\n GetCustomerVehiclesRequest,\n GetCustomerVehiclesResult,\n ExternalLookupVehicleRequest,\n ExternalLookupVehicleResult,\n QueryVehicleModelTypesRequest,\n QueryVehicleByBrandCodeRequest,\n QueryVehicleByBrandCodeResult,\n} from \"@insurup/contracts\";\nimport { endpoints } from \"../core/endpoints.js\";\n\n/**\n * Vehicle Management Client\n *\n * Specialized client for managing customer vehicles and automotive industry data within the InsurUp platform.\n * Handles vehicle lifecycle management, chassis number validations, external vehicle data lookups, brand and model\n * queries, and vehicle-based insurance operations. Essential for agencies offering vehicle insurance products including\n * Kasko (comprehensive vehicle insurance), TSS (traffic insurance), and IMM (voluntary financial liability) coverage,\n * requiring accurate vehicle identification, validation, and market data integration for proper risk assessment and pricing.\n *\n * InsurUp platformu içinde müşteri araçları ve otomotiv sektörü verilerini yönetmek için özelleşmiş istemci.\n * Araç yaşam döngüsü yönetimi, şasi numarası doğrulamaları, harici araç veri aramaları, marka ve model sorguları ve\n * araç tabanlı sigorta operasyonlarını yönetir. Kasko (kasko araç sigortası), TSS (trafik sigortası) ve İMM (ihtiyari\n * mali mesuliyet) teminatı dahil araç sigortası ürünleri sunan ve uygun risk değerlendirmesi ile fiyatlandırma için\n * doğru araç tanımlaması, doğrulama ve pazar veri entegrasyonu gerektiren acenteler için olmazsa olmazdır.\n */\nexport class InsurUpVehicleClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Adds a new vehicle to a customer's profile with complete vehicle information including chassis number and specifications.\n *\n * Şasi numarası ve özellikler dahil tam araç bilgileri ile müşterinin profiline yeni araç ekler.\n *\n * @param request Vehicle creation request with vehicle details / Araç detayları ile araç oluşturma talebi\n * @returns Created vehicle information / Oluşturulan araç bilgileri\n */\n async addCustomerVehicle(\n request: CreateCustomerVehicleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerVehicleResult>> {\n const path = endpoints.vehicles.create.render(request.customerId);\n return this.http.post<CreateCustomerVehicleResult>(path, request, options);\n }\n\n /**\n * Updates existing customer vehicle information including modifications, ownership changes, or specification updates.\n *\n * Modifikasyonlar, sahiplik değişiklikleri veya özellik güncellemeleri dahil mevcut müşteri araç bilgilerini günceller.\n *\n * @param request Vehicle update request / Araç güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCustomerVehicle(\n request: UpdateCustomerVehicleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const path = endpoints.vehicles.update.render(\n request.customerId,\n request.vehicleId,\n );\n return this.http.putNoContent(path, request, options);\n }\n\n /**\n * Retrieves detailed information about a specific customer vehicle including its insurance history and current status.\n *\n * Belirli bir müşteri aracı hakkında sigorta geçmişi ve mevcut durumu dahil detaylı bilgileri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param vehicleId Unique identifier of the vehicle / Aracın benzersiz tanımlayıcısı\n * @returns Vehicle details / Araç detayları\n */\n async getCustomerVehicle(\n customerId: string,\n vehicleId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerVehicleResult>> {\n const path = endpoints.vehicles.get.render(customerId, vehicleId);\n return this.http.get<GetCustomerVehicleResult>(path, options);\n }\n\n /**\n * Retrieves all vehicles owned by a specific customer for comprehensive vehicle portfolio management.\n *\n * Kapsamlı araç portföy yönetimi için belirli bir müşterinin sahip olduğu tüm araçları getirir.\n *\n * @param request Customer vehicles query request / Müşteri araçları sorgu talebi\n * @returns List of customer vehicles / Müşteri araçları listesi\n */\n async getCustomerVehicles(\n request: GetCustomerVehiclesRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerVehiclesResult[]>> {\n const path = endpoints.vehicles.getCustomerVehicles.render(\n request.customerId,\n );\n return this.http.get<GetCustomerVehiclesResult[]>(path, options);\n }\n\n /**\n * Permanently removes a customer vehicle record from the system with proper data cleanup and insurance impact assessment.\n *\n * Uygun veri temizliği ve sigorta etki değerlendirmesi ile müşteri araç kaydını sistemden kalıcı olarak kaldırır.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param vehicleId Unique identifier of the vehicle / Aracın benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteCustomerVehicle(\n customerId: string,\n vehicleId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const path = endpoints.vehicles.delete.render(customerId, vehicleId);\n return this.http.deleteNoContent(path, options);\n }\n\n /**\n * Performs external vehicle data lookup using chassis number or license plate to retrieve official vehicle information.\n *\n * Resmi araç bilgilerini almak için şasi numarası veya plaka kullanarak harici araç veri araması yapar.\n *\n * @param request External vehicle lookup request / Harici araç arama talebi\n * @returns External vehicle data / Harici araç verileri\n */\n async externalLookupVehicle(\n request: ExternalLookupVehicleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<ExternalLookupVehicleResult>> {\n const path = endpoints.vehicles.externalLookup.render(request.customerId);\n return this.http.post<ExternalLookupVehicleResult>(path, request, options);\n }\n\n /**\n * Retrieves all available vehicle brands for vehicle selection and registration purposes.\n *\n * Araç seçimi ve kayıt amaçları için mevcut tüm araç markalarını getirir.\n *\n * @returns List of vehicle brands / Araç markaları listesi\n */\n async queryVehicleBrands(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n const path = endpoints.vehicleParameters.queryBrands;\n return this.http.get<InsuranceParameter[]>(path, options);\n }\n\n /**\n * Retrieves all vehicle models for a specific brand including different model years and specifications.\n *\n * Farklı model yılları ve özellikler dahil belirli bir marka için tüm araç modellerini getirir.\n *\n * @param request Vehicle model query request / Araç modeli sorgu talebi\n * @returns List of vehicle models / Araç modelleri listesi\n */\n async queryVehicleModels(\n request: QueryVehicleModelTypesRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n const path = endpoints.vehicleParameters.queryModels.render(request);\n return this.http.get<InsuranceParameter[]>(path, options);\n }\n\n /**\n * Queries vehicle information using a specific brand code to retrieve detailed brand and model specifications.\n *\n * Detaylı marka ve model özelliklerini almak için belirli bir marka kodu kullanarak araç bilgilerini sorgular.\n *\n * @param brandCode Vehicle brand code for query / Sorgu için araç marka kodu\n * @returns Vehicle brand information / Araç marka bilgileri\n */\n async queryVehicleByBrandCode(\n brandCode: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<QueryVehicleByBrandCodeResult>> {\n const path = endpoints.insuranceServices.queryVehicleByBrandCode;\n const request: QueryVehicleByBrandCodeRequest = { brandCode };\n return this.http.post<QueryVehicleByBrandCodeResult>(\n path,\n request,\n options,\n );\n }\n}\n","/**\n * Property Management Client\n *\n * Provides comprehensive property management operations for handling customer properties, Turkish address hierarchy queries,\n * DASK earthquake insurance lookups, and property-based insurance operations within the real estate insurance ecosystem.\n *\n * Gayrimenkul sigorta ekosistemi içinde müşteri mülklerini yönetme, Türk adres hiyerarşisi sorguları, DASK deprem\n * sigortası aramaları ve mülk tabanlı sigorta operasyonları için kapsamlı mülk yönetimi işlemlerini sağlar.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type { InsuranceParameter } from \"@insurup/contracts\";\nimport type {\n // Address parameter requests\n QueryDistrictsRequest,\n QueryTownsRequest,\n QueryNeighbourhoodsRequest,\n QueryStreetsRequest,\n QueryBuildingsRequest,\n QueryApartmentsRequest,\n\n // Property management requests\n CreateCustomerPropertyRequest,\n UpdateCustomerPropertyRequest,\n GetPropertyAddressByPropertyNumberRequest,\n\n // Property management responses\n CreateCustomerPropertyResult,\n GetCustomerPropertyByIdResult,\n GetAllCustomerPropertiesResult,\n QueryPropertyByDaskOldPolicyResult,\n} from \"@insurup/contracts\";\nimport type { PropertyAddress } from \"@insurup/contracts\";\nimport { addressParameters, properties } from \"../core/endpoints.js\";\n\n/**\n * Property Management Client\n *\n * Specialized client for managing customer properties and Turkish address system integration within the InsurUp platform.\n * Handles the complete Turkish administrative address hierarchy (City→District→Town→Neighborhood→Street→Building→Apartment),\n * customer property lifecycle management, DASK earthquake insurance policy lookups, and property-based insurance operations.\n * Essential for agencies offering property insurance products including home insurance (Konut), earthquake insurance (DASK),\n * and commercial property coverage, requiring precise address validation and property identification within Turkey's\n * administrative structure.\n *\n * InsurUp platformu içinde müşteri mülkleri ve Türk adres sistemi entegrasyonunu yönetmek için özelleşmiş istemci.\n * Tam Türk idari adres hiyerarşisini (Şehir→İlçe→Kasaba→Mahalle→Sokak→Bina→Daire), müşteri mülk yaşam döngüsü yönetimini,\n * DASK deprem sigortası poliçe aramalarını ve mülk tabanlı sigorta operasyonlarını yönetir. Ev sigortası (Konut), deprem\n * sigortası (DASK) ve ticari mülk teminatı dahil mülk sigortası ürünleri sunan ve Türkiye'nin idari yapısı içinde hassas\n * adres doğrulaması ve mülk tanımlaması gerektiren acenteler için olmazsa olmazdır.\n */\nexport class InsurUpPropertyClient {\n constructor(private readonly http: HttpTransport) {}\n\n // ===== LOCATION/ADDRESS QUERY METHODS =====\n\n /**\n * Retrieves all cities (provinces) in Turkey for address selection and property location identification.\n *\n * Adres seçimi ve mülk konum tanımlaması için Türkiye'deki tüm şehirleri (illeri) getirir.\n *\n * @returns List of Turkish cities / Türk şehirleri listesi\n */\n async queryCities(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryCities,\n options,\n );\n }\n\n /**\n * Retrieves all districts within a specific city following the Turkish administrative hierarchy.\n *\n * Türk idari hiyerarşisini takip ederek belirli bir şehir içindeki tüm ilçeleri getirir.\n *\n * @param request District query request with city selection / Şehir seçimi ile ilçe sorgu talebi\n * @returns List of districts in the selected city / Seçilen şehirdeki ilçeler listesi\n */\n async queryDistricts(\n request: QueryDistrictsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryDistricts.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all towns within a specific district for precise administrative location identification.\n *\n * Hassas idari konum tanımlaması için belirli bir ilçe içindeki tüm kasabaları getirir.\n *\n * @param request Town query request with district selection / İlçe seçimi ile kasaba sorgu talebi\n * @returns List of towns in the selected district / Seçilen ilçedeki kasabalar listesi\n */\n async queryTowns(\n request: QueryTownsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryTowns.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all neighborhoods within a specific administrative area for detailed address specification.\n *\n * Detaylı adres belirtimi için belirli bir idari alan içindeki tüm mahalleleri getirir.\n *\n * @param request Neighborhood query request / Mahalle sorgu talebi\n * @returns List of neighborhoods / Mahalleler listesi\n */\n async queryNeighborhoods(\n request: QueryNeighbourhoodsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryNeighbourhoods.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all streets within a specific neighborhood for complete address formation.\n *\n * Tam adres oluşturma için belirli bir mahalle içindeki tüm sokakları getirir.\n *\n * @param request Street query request / Sokak sorgu talebi\n * @returns List of streets / Sokaklar listesi\n */\n async queryStreets(\n request: QueryStreetsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryStreets.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all buildings on a specific street for precise property identification and addressing.\n *\n * Hassas mülk tanımlaması ve adresleme için belirli bir sokaktaki tüm binaları getirir.\n *\n * @param request Building query request / Bina sorgu talebi\n * @returns List of buildings / Binalar listesi\n */\n async queryBuildings(\n request: QueryBuildingsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryBuildings.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all apartments within a specific building for individual property unit identification.\n *\n * Bireysel mülk birimi tanımlaması için belirli bir bina içindeki tüm daireleri getirir.\n *\n * @param request Apartment query request / Daire sorgu talebi\n * @returns List of apartments / Daireler listesi\n */\n async queryApartments(\n request: QueryApartmentsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryApartments.render(request),\n options,\n );\n }\n\n // ===== PROPERTY MANAGEMENT METHODS =====\n\n /**\n * Creates a new customer property record with complete address information and property characteristics for insurance purposes.\n *\n * Sigorta amaçları için tam adres bilgileri ve mülk özellikleri ile yeni müşteri mülk kaydı oluşturur.\n *\n * @param request Property creation request with details / Detaylar ile mülk oluşturma talebi\n * @returns Created property information / Oluşturulan mülk bilgileri\n */\n async createCustomerProperty(\n request: CreateCustomerPropertyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerPropertyResult>> {\n return this.http.post<CreateCustomerPropertyResult>(\n properties.create.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Updates existing customer property information including address changes, structural modifications, or usage updates.\n *\n * Adres değişiklikleri, yapısal değişiklikler veya kullanım güncellemeleri dahil mevcut müşteri mülk bilgilerini günceller.\n *\n * @param request Property update request / Mülk güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCustomerProperty(\n request: UpdateCustomerPropertyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n properties.update.render(request.customerId, request.propertyId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific customer property including its insurance history and characteristics.\n *\n * Belirli bir müşteri mülkü hakkında sigorta geçmişi ve özellikleri dahil detaylı bilgileri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param propertyId Unique identifier of the property / Mülkün benzersiz tanımlayıcısı\n * @returns Property details / Mülk detayları\n */\n async getCustomerPropertyById(\n customerId: string,\n propertyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerPropertyByIdResult>> {\n return this.http.get<GetCustomerPropertyByIdResult>(\n properties.getById.render(customerId, propertyId),\n options,\n );\n }\n\n /**\n * Retrieves all properties owned by a specific customer for comprehensive property portfolio management.\n *\n * Kapsamlı mülk portföy yönetimi için belirli bir müşterinin sahip olduğu tüm mülkleri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @returns List of customer properties / Müşteri mülkleri listesi\n */\n async getCustomerProperties(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllCustomerPropertiesResult[]>> {\n return this.http.get<GetAllCustomerPropertiesResult[]>(\n properties.getAll.render(customerId),\n options,\n );\n }\n\n /**\n * Permanently removes a customer property record from the system with proper data cleanup and insurance impact assessment.\n *\n * Uygun veri temizliği ve sigorta etki değerlendirmesi ile müşteri mülk kaydını sistemden kalıcı olarak kaldırır.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param propertyId Unique identifier of the property / Mülkün benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteCustomerProperty(\n customerId: string,\n propertyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n properties.delete.render(customerId, propertyId),\n options,\n );\n }\n\n /**\n * Retrieves property address information using the official Turkish property registration number for verification purposes.\n *\n * Doğrulama amaçları için resmi Türk mülk kayıt numarasını kullanarak mülk adres bilgilerini getirir.\n *\n * @param propertyNumber Official Turkish property registration number / Resmi Türk mülk kayıt numarası\n * @returns Property address information / Mülk adres bilgileri\n */\n async getPropertyAddressByPropertyNumber(\n propertyNumber: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<PropertyAddress>> {\n return this.http.post<PropertyAddress>(\n properties.getPropertyAddressByPropertyNumber,\n {\n propertyNumber,\n } satisfies GetPropertyAddressByPropertyNumberRequest,\n options,\n );\n }\n\n /**\n * Queries property information using an existing DASK earthquake insurance policy number for cross-reference and continuity.\n *\n * Çapraz referans ve süreklilik için mevcut DASK deprem sigortası poliçe numarasını kullanarak mülk bilgilerini sorgular.\n *\n * @param daskPolicyNumber DASK earthquake insurance policy number / DASK deprem sigortası poliçe numarası\n * @returns Property information from DASK records / DASK kayıtlarından mülk bilgileri\n */\n async queryPropertyByDaskOldPolicy(\n daskPolicyNumber: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<QueryPropertyByDaskOldPolicyResult>> {\n return this.http.post<QueryPropertyByDaskOldPolicyResult>(\n properties.queryPropertyByDaskOldPolicy,\n { daskPolicyNumber },\n options,\n );\n }\n}\n","/**\n * @fileoverview Policy Management Client - Comprehensive policy operations\n * @description Provides comprehensive policy management operations for handling active insurance policies,\n * document generation, customer communications, representative assignments, and policy transfer processes\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type {\n GetPolicyDetailRequest,\n GetPolicyDetailResult,\n FetchPolicyDocumentRequest,\n FetchPolicyDocumentResult,\n SendPolicyDocumentRequest,\n SetPolicyRepresentativeRequest,\n SetPolicyBranchRequest,\n CreateManualPolicyRequest,\n CreateManualPolicyResult,\n UpdateManualPolicyRequest,\n GetPolicyCountAndPremiumAnalyticsRequest,\n GetPolicyCountAndPremiumAnalyticsResult,\n GetPolicyRenewalAnalyticsRequest,\n GetPolicyRenewalAnalyticsResult,\n GetPolicyDistributionByBranchRequest,\n GetPolicyDistributionByBranchResult,\n GetRepresentativeEarningsAnalyticsRequest,\n GetRepresentativeEarningsAnalyticsResult,\n} from \"@insurup/contracts\";\nimport type {\n GetPolicyTransferDetailRequest,\n GetPolicyTransferDetailResult,\n GetPolicyTransferTriggerDetailRequest,\n GetPolicyTransferTriggerDetailResult,\n CreatePolicyTransferRequest,\n TriggerPolicyTransferRequest,\n CreateFilePolicyTransferRequest,\n GetFilePolicyTransferDetailRequest,\n GetFilePolicyTransferDetailResult,\n} from \"@insurup/contracts\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport {\n ALL_POLICY_FIELDS,\n type PolicyFieldKey,\n type GetPoliciesOptions,\n type PoliciesConnection,\n} from \"@insurup/contracts\";\nimport {\n ALL_POLICY_TRANSFER_FIELDS,\n type PolicyTransferFieldKey,\n type GetPolicyTransfersOptions,\n type PolicyTransfersConnection,\n} from \"@insurup/contracts\";\nimport {\n ALL_FILE_POLICY_TRANSFER_FIELDS,\n type FilePolicyTransferFieldKey,\n type GetFilePolicyTransfersOptions,\n type FilePolicyTransfersConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\n\n/**\n * Policy Management Client / Poliçe Yönetimi İstemcisi\n *\n * Central client for managing active insurance policies throughout their lifecycle from issuance to expiration.\n * Handles policy documentation, customer communication, representative management, and complex policy transfer operations\n * including bulk transfers and file-based transfers. Essential for agencies that need to maintain comprehensive policy\n * administration, ensure proper documentation delivery to customers, manage policy ownership changes, and coordinate\n * policy transfers between different systems or agents while maintaining audit trails and regulatory compliance.\n *\n * Düzenlenmesinden sona ermesine kadar aktif sigorta poliçelerini yaşam döngüleri boyunca yönetmek için merkezi istemci.\n * Poliçe dokümantasyonu, müşteri iletişimi, temsilci yönetimi ve toplu transferler ile dosya tabanlı transferler dahil\n * karmaşık poliçe transfer operasyonlarını yönetir. Kapsamlı poliçe yönetimi sürdürmesi, müşterilere uygun dokümantasyon\n * teslimatını sağlaması, poliçe sahiplik değişikliklerini yönetmesi ve denetim izleri ile düzenleyici uyumu korurken\n * farklı sistemler veya acenteler arasında poliçe transferlerini koordine etmesi gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpPolicyClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Retrieves comprehensive details of a specific policy including coverage information, premium details, and current status.\n *\n * Teminat bilgileri, prim detayları ve mevcut durum dahil belirli bir poliçenin kapsamlı detaylarını getirir.\n *\n * @param request - Policy detail request with policy ID\n * @returns Detailed policy information\n */\n async getPolicyDetail(\n request: GetPolicyDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyDetailResult>> {\n return this.http.get<GetPolicyDetailResult>(\n endpoints.policies.getPolicyDetail.render(request.policyId),\n options,\n );\n }\n\n /**\n * Fetches the official policy document from the insurance company's systems for customer delivery or records.\n *\n * Müşteri teslimatı veya kayıtlar için sigorta şirketinin sistemlerinden resmi poliçe belgesini getirir.\n *\n * @param request - Policy document fetch request with policy ID\n * @returns Policy document data\n */\n async fetchPolicyDocument(\n request: FetchPolicyDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<FetchPolicyDocumentResult>> {\n return this.http.get<FetchPolicyDocumentResult>(\n endpoints.policies.fetchPolicyDocument.render(request.policyId),\n options,\n );\n }\n\n /**\n * Sends the policy document directly to the customer via email or other communication channels for their records.\n *\n * Poliçe belgesini müşterinin kayıtları için e-posta veya diğer iletişim kanalları aracılığıyla doğrudan müşteriye gönderir.\n *\n * @param request - Document delivery request\n * @returns Operation result\n */\n async sendPolicyDocumentToCustomer(\n request: SendPolicyDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policies.sendPolicyDocument.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Assigns or updates the representative responsible for managing a specific policy and customer relationship.\n *\n * Belirli bir poliçeyi ve müşteri ilişkisini yönetmekten sorumlu temsilciyi atar veya günceller.\n *\n * @param request - Representative assignment request\n * @returns Operation result\n */\n async setPolicyRepresentative(\n request: SetPolicyRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policies.setPolicyRepresentative.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Assigns or changes the branch for a policy to organize policy segmentation and reporting.\n *\n * Poliçe segmentasyonu ve raporlama için poliçenin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setPolicyBranch(\n request: SetPolicyBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policies.setPolicyBranch.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Creates a new manual policy through the agent panel without insurance services integration.\n *\n * Sigorta hizmetleri entegrasyonu olmadan acente paneli üzerinden yeni manuel poliçe oluşturur.\n *\n * @param request Manual policy creation request / Manuel poliçe oluşturma talebi\n * @returns Created policy identifier / Oluşturulan poliçe tanımlayıcısı\n */\n async createManualPolicy(\n request: CreateManualPolicyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateManualPolicyResult>> {\n return this.http.post<CreateManualPolicyResult>(\n endpoints.policies.createManualPolicy.definition,\n request,\n options,\n );\n }\n\n /**\n * Updates an existing manual policy through the agent panel and creates a new policy version for tracking changes.\n *\n * Acente paneli üzerinden mevcut manuel poliçeyi günceller ve değişiklikleri takip etmek için yeni poliçe versiyonu oluşturur.\n *\n * @param request Manual policy update request / Manuel poliçe güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateManualPolicy(\n request: UpdateManualPolicyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.policies.updateManualPolicy.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves comprehensive policy count and gross premium analytics with flexible filtering and grouping options.\n * Provides time series data, summary KPIs, and optional grouping by product branch or insurance company.\n *\n * Esnek filtreleme ve gruplama seçenekleri ile kapsamlı poliçe adedi ve brüt prim analitiği getirir.\n * Zaman serisi verileri, özet KPI'lar ve isteğe bağlı ürün branşı veya sigorta şirketine göre gruplama sağlar.\n *\n * @param request Analytics request with filters and grouping options / Filtreler ve gruplama seçenekleri ile analitik talebi\n * @returns Comprehensive analytics data including KPIs, time series, and grouped data / KPI'lar, zaman serisi ve gruplanmış veriler dahil kapsamlı analitik verileri\n */\n async getPolicyCountAndPremiumAnalytics(\n request: GetPolicyCountAndPremiumAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyCountAndPremiumAnalyticsResult>> {\n return this.http.post<GetPolicyCountAndPremiumAnalyticsResult>(\n endpoints.policies.getPolicyCountAndPremiumAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves stacked daily renewal analytics for policies with RenewalNumber greater than zero.\n * Provides branch segmented counts together with total and peak KPIs.\n *\n * RenewalNumber değeri sıfırdan büyük olan poliçeler için günlük yenileme analitiği sağlar.\n * Branş bazlı yığılmış adetler ile toplam ve pik KPI değerlerini döner.\n *\n * @param request Renewal analytics request with filtering options / Filtre seçenekleri ile yenileme analitiği isteği\n * @returns Renewal analytics response / Yenileme analitiği yanıtı\n */\n async getPolicyRenewalAnalytics(\n request: GetPolicyRenewalAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyRenewalAnalyticsResult>> {\n return this.http.post<GetPolicyRenewalAnalyticsResult>(\n endpoints.policies.getPolicyRenewalAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves policy distribution by branch analytics data.\n * Provides aggregated counts, gross premiums, and percentage shares grouped by product branch.\n *\n * Branş bazında poliçe dağılımı analitik verilerini getirir.\n * Ürün branşına göre gruplanmış toplam adetler, brüt primler ve yüzde payları sağlar.\n *\n * @param request Distribution analytics request with filtering options / Filtre seçenekleri ile dağılım analitiği isteği\n * @returns Distribution analytics response / Dağılım analitiği yanıtı\n */\n async getPolicyDistributionByBranch(\n request: GetPolicyDistributionByBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyDistributionByBranchResult>> {\n return this.http.post<GetPolicyDistributionByBranchResult>(\n endpoints.policies.getPolicyDistributionByBranch.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves representative earnings analytics data.\n * Provides earnings breakdown grouped by representative for performance tracking.\n *\n * Temsilci kazanç analitik verilerini getirir.\n * Performans takibi için temsilciye göre gruplanmış kazanç dökümü sağlar.\n *\n * @param request Representative earnings analytics request with filtering options / Filtre seçenekleri ile temsilci kazanç analitiği isteği\n * @returns Representative earnings analytics response / Temsilci kazanç analitiği yanıtı\n */\n async getRepresentativeEarningsAnalytics(\n request: GetRepresentativeEarningsAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetRepresentativeEarningsAnalyticsResult>> {\n return this.http.post<GetRepresentativeEarningsAnalyticsResult>(\n endpoints.policies.getRepresentativeEarningsAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific policy transfer process including status and progress tracking.\n *\n * Durum ve ilerleme takibi dahil belirli bir poliçe transfer süreciyle ilgili detaylı bilgileri getirir.\n *\n * @param request - Policy transfer detail request\n * @returns Policy transfer details\n */\n async getPolicyTransferDetail(\n request: GetPolicyTransferDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyTransferDetailResult>> {\n return this.http.get<GetPolicyTransferDetailResult>(\n endpoints.policyTransfers.getPolicyTransferDetail.render(\n request.policyTransferId,\n ),\n options,\n );\n }\n\n /**\n * Retrieves specific trigger details for a policy transfer process to understand execution conditions and timing.\n *\n * Yürütme koşulları ve zamanlamasını anlamak için poliçe transfer sürecinin belirli tetikleyici detaylarını getirir.\n *\n * @param request - Policy transfer trigger detail request\n * @returns Transfer trigger details\n */\n async getPolicyTransferTriggerDetail(\n request: GetPolicyTransferTriggerDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyTransferTriggerDetailResult>> {\n return this.http.get<GetPolicyTransferTriggerDetailResult>(\n endpoints.policyTransfers.getPolicyTransferTriggerDetail.render(\n request.policyTransferId,\n request.policyTransferTriggerId,\n ),\n options,\n );\n }\n\n /**\n * Creates a new policy transfer request to move policies between agents, agencies, or systems with proper validation.\n *\n * Uygun doğrulama ile poliçeleri acenteler, acenteler veya sistemler arasında taşımak için yeni poliçe transfer talebi oluşturur.\n *\n * @param request - Policy transfer creation request\n * @returns Created transfer identifier\n */\n async createPolicyTransfer(\n request: CreatePolicyTransferRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return this.http.post<string>(\n endpoints.policyTransfers.create,\n request,\n options,\n );\n }\n\n /**\n * Executes a prepared policy transfer, initiating the actual movement of policies according to the transfer configuration.\n *\n * Hazırlanmış poliçe transferini yürütür ve transfer yapılandırmasına göre poliçelerin gerçek hareketini başlatır.\n *\n * @param request - Policy transfer trigger request\n * @returns Operation result\n */\n async triggerPolicyTransfer(\n request: TriggerPolicyTransferRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policyTransfers.triggerPolicyTransfer.render(\n request.policyTransferId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Creates a file-based policy transfer by uploading a file containing policy information for bulk transfer operations.\n *\n * Toplu transfer işlemleri için poliçe bilgilerini içeren dosya yükleyerek dosya tabanlı poliçe transferi oluşturur.\n *\n * @param request - File-based transfer request\n * @param file - File containing policy data\n * @param fileName - Name of the uploaded file\n * @returns Operation result\n */\n async createFilePolicyTransfer(\n request: CreateFilePolicyTransferRequest,\n file: File,\n fileName: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n // Create FormData for multipart file upload\n const formData = new FormData();\n formData.append(\n \"insuranceCompanyId\",\n request.insuranceCompanyId.toString(),\n );\n formData.append(\"file\", file, fileName);\n\n return this.http.postNoContent(\n endpoints.filePolicyTransfers.create,\n formData,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a file-based policy transfer including processing status and results.\n *\n * İşleme durumu ve sonuçları dahil dosya tabanlı poliçe transferi hakkında detaylı bilgileri getirir.\n *\n * @param request - File policy transfer detail request\n * @returns File transfer details\n */\n async getFilePolicyTransferDetail(\n request: GetFilePolicyTransferDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetFilePolicyTransferDetailResult>> {\n return this.http.get<GetFilePolicyTransferDetailResult>(\n endpoints.filePolicyTransfers.getFilePolicyTransferDetail.render(\n request.filePolicyTransferId,\n ),\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries policies using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak poliçeleri sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.policies.getPolicies({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.policies.getPolicies({\n * select: ['id', 'productBranch', 'grossPremium', 'state'] as const,\n * first: 10,\n * filter: { state: { eq: PolicyState.Active } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of policies with type-narrowed fields\n */\n async getPolicies<const TFields extends PolicyFieldKey[]>(\n requestOptions?: GetPoliciesOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<PoliciesConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_POLICY_FIELDS) as PolicyFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n const includeTotalCount = requestOptions?.includeTotalCount !== false;\n\n const query = `\n query GetPolicies(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryPoliciesResultFilterInput\n $filter: filtering_QueryPoliciesResultFilterInput\n $order: [sorting_QueryPoliciesResultSortInput!]\n ) {\n policiesNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n ${includeTotalCount ? \"totalCount\" : \"\"}\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n policiesNew: Omit<PoliciesConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<PoliciesConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.policiesNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.policiesNew,\n nodes,\n },\n } as InsurUpGraphQLResult<PoliciesConnection<TFields>>;\n }\n\n /**\n * Queries policy transfers using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak poliçe transferlerini sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.policies.getPolicyTransfers({ first: 10 });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of policy transfers with type-narrowed fields\n */\n async getPolicyTransfers<const TFields extends PolicyTransferFieldKey[]>(\n requestOptions?: GetPolicyTransfersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<PolicyTransfersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_POLICY_TRANSFER_FIELDS) as PolicyTransferFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetPolicyTransfers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryPolicyTransfersResultFilterInput\n $filter: filtering_QueryPolicyTransfersResultFilterInput\n $order: [sorting_QueryPolicyTransfersResultSortInput!]\n ) {\n policyTransfersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n policyTransfersNew: Omit<PolicyTransfersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<PolicyTransfersConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.policyTransfersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.policyTransfersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<PolicyTransfersConnection<TFields>>;\n }\n\n /**\n * Queries file policy transfers using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak dosya bazlı poliçe transferlerini sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.policies.getFilePolicyTransfers({ first: 10 });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of file policy transfers with type-narrowed fields\n */\n async getFilePolicyTransfers<\n const TFields extends FilePolicyTransferFieldKey[],\n >(\n requestOptions?: GetFilePolicyTransfersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<FilePolicyTransfersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_FILE_POLICY_TRANSFER_FIELDS) as FilePolicyTransferFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetFilePolicyTransfers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryFilePolicyTransfersResultFilterInput\n $filter: filtering_QueryFilePolicyTransfersResultFilterInput\n $order: [sorting_QueryFilePolicyTransfersResultSortInput!]\n ) {\n filePolicyTransfersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n filePolicyTransfersNew: Omit<FilePolicyTransfersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<\n FilePolicyTransfersConnection<TFields>\n >;\n }\n\n // Derive nodes from edges\n const edges = result.data.filePolicyTransfersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.filePolicyTransfersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<FilePolicyTransfersConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview Case Management Client - Direct port from DefaultInsurUpClient.Case.cs\n * @description TypeScript client for case management operations\n */\n\nimport { cases } from \"../core/endpoints.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport {\n ALL_CASE_FIELDS,\n type CaseFieldKey,\n type GetCasesOptions,\n type CasesConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n // Request types\n AssignCaseRepresentativeRequest,\n ChangeCaseChannelRequest,\n ChangeCaseStateRequest,\n CreateCancelCaseRequest,\n CreateComplaintCaseRequest,\n CreateCrossSaleOpportunityCaseRequest,\n CreateEndorsementCaseRequest,\n CreateNewSaleOpportunityCaseRequest,\n AddNoteToCaseRequest,\n SetCaseAssetRequest,\n SetCaseBranchRequest,\n GetSalesOpportunityFunnelAnalyticsRequest,\n GetOpenCaseBacklogPivotAnalyticsRequest,\n GetFailedCasesReasonDistributionRequest,\n // Response types\n GetCaseByRefResult,\n CasePolicyResult,\n CaseActivityResult,\n CaseProposalResult,\n GetSalesOpportunityFunnelAnalyticsResult,\n GetOpenCaseBacklogPivotAnalyticsResult,\n GetFailedCasesReasonDistributionResult,\n CaseCommunicationAutomationResult,\n GetCasePriorityTemplatesResult,\n} from \"@insurup/contracts\";\n\n/**\n * Case Management Client\n *\n * Central client for managing all types of customer cases and requests within the InsurUp platform. Handles various\n * case types including policy cancellations, customer complaints, cross-sale opportunities, endorsement requests, and\n * new sale opportunities. Provides comprehensive workflow management including case representative assignment, status tracking, activity\n * logging, and representative management. Essential for agencies that need to maintain organized customer service operations\n * and ensure proper follow-up on all customer interactions and business opportunities.\n *\n * InsurUp platformu içinde her türlü müşteri talebi ve isteğini yönetmek için merkezi istemci. Poliçe iptalleri,\n * müşteri şikayetleri, çapraz satış fırsatları, zeyilname talepleri ve yeni satış fırsatları dahil çeşitli talep türlerini\n * yönetir. Talep atama, durum takibi, aktivite kaydı ve temsilci yönetimi dahil kapsamlı iş akışı yönetimi sağlar.\n * Düzenli müşteri hizmet operasyonlarını sürdürmesi ve tüm müşteri etkileşimleri ile iş fırsatlarında uygun takibi\n * sağlaması gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpCaseClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Assigns a case representative to handle a specific customer case, ensuring proper ownership and accountability.\n *\n * Belirli bir müşteri talebini ele almak için talep temsilcisi atar ve uygun sahiplik ile hesap verebilirliği sağlar.\n *\n * @param request Case representative assignment request with representative details / Temsilci detayları ile talep atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async assignCaseRepresentative(\n request: AssignCaseRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.assignRepresentative.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Changes the communication channel for a case to redirect it to appropriate department or platform.\n *\n * Bir talebin iletişim kanalını değiştirerek uygun departman veya platforma yönlendirir.\n *\n * @param request Channel change request / Kanal değişiklik talebi\n * @returns Operation result / İşlem sonucu\n */\n async changeCaseChannel(\n request: ChangeCaseChannelRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.changeChannel.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Updates the status of a case to reflect its current progress in the resolution workflow.\n *\n * Çözüm iş akışındaki mevcut ilerlemesini yansıtmak için talebin durumunu günceller.\n *\n * @param request Status change request / Durum değişiklik talebi\n * @returns Operation result / İşlem sonucu\n */\n async changeCaseState(\n request: ChangeCaseStateRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.changeState.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Creates a policy cancellation case when a customer requests to terminate their insurance coverage.\n *\n * Müşteri sigorta teminatını sonlandırma talebinde bulunduğunda poliçe iptal talebi oluşturur.\n *\n * @param request Cancellation case creation request / İptal talebi oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createCancelCase(\n request: CreateCancelCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(cases.createCancel, request, options);\n }\n\n /**\n * Creates a complaint case to handle customer dissatisfaction or service issues requiring resolution.\n *\n * Müşteri memnuniyetsizliği veya çözüm gerektiren hizmet sorunlarını ele almak için şikayet talebi oluşturur.\n *\n * @param request Complaint case creation request / Şikayet talebi oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createComplaintCase(\n request: CreateComplaintCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createComplaint,\n request,\n options,\n );\n }\n\n /**\n * Creates a cross-sale opportunity case to track potential additional insurance products for existing customers.\n *\n * Mevcut müşteriler için potansiyel ek sigorta ürünlerini takip etmek üzere çapraz satış fırsatı talebi oluşturur.\n *\n * @param request Cross-sale opportunity creation request / Çapraz satış fırsatı oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createCrossSaleOpportunityCase(\n request: CreateCrossSaleOpportunityCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createCrossSaleOpportunity,\n request,\n options,\n );\n }\n\n /**\n * Creates an endorsement case for policy modifications or updates requested by the customer.\n *\n * Müşteri tarafından talep edilen poliçe değişiklikleri veya güncellemeler için zeyilname talebi oluşturur.\n *\n * @param request Endorsement case creation request / Zeyilname talebi oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createEndorsementCase(\n request: CreateEndorsementCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createEndorsement,\n request,\n options,\n );\n }\n\n /**\n * Creates a new sale opportunity case to track potential insurance sales to prospective customers.\n *\n * Potansiyel müşterilere olası sigorta satışlarını takip etmek için yeni satış fırsatı talebi oluşturur.\n *\n * @param request New sale opportunity creation request / Yeni satış fırsatı oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createNewSaleOpportunityCase(\n request: CreateNewSaleOpportunityCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createNewSaleOpportunity,\n request,\n options,\n );\n }\n\n /**\n * Retrieves all policies associated with a specific case for comprehensive case context and decision making.\n *\n * Kapsamlı talep bağlamı ve karar verme için belirli bir talep ile ilişkili tüm poliçeleri getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Associated policies / İlişkili poliçeler\n */\n async getCasePolicies(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CasePolicyResult[]>> {\n const endpoint = cases.getPolicies.render(ref);\n return await this.http.get<CasePolicyResult[]>(endpoint, options);\n }\n\n /**\n * Retrieves the complete activity history for a case showing all actions, updates, and communications.\n *\n * Tüm eylemleri, güncellemeleri ve iletişimleri gösteren talep için tam aktivite geçmişini getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Case activity history / Talep aktivite geçmişi\n */\n async getCaseActivities(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CaseActivityResult[]>> {\n const endpoint = cases.getActivities.render(ref);\n return await this.http.get<CaseActivityResult[]>(endpoint, options);\n }\n\n /**\n * Retrieves detailed information about a specific case including status, assigned representative, and progress.\n *\n * Belirli bir talep hakkında durum, atanan temsilci ve ilerleme dahil detaylı bilgileri getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Detailed case information / Detaylı talep bilgileri\n */\n async getCaseByRef(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCaseByRefResult>> {\n const endpoint = cases.getCaseByRef.render(ref);\n return await this.http.get<GetCaseByRefResult>(endpoint, options);\n }\n\n /**\n * Retrieves all proposals associated with a specific case to understand related insurance quotations.\n *\n * İlgili sigorta tekliflerini anlamak için belirli bir talep ile ilişkili tüm teklifleri getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Associated proposals / İlişkili teklifler\n */\n async getCaseProposals(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CaseProposalResult[]>> {\n const endpoint = cases.getProposals.render(ref);\n return await this.http.get<CaseProposalResult[]>(endpoint, options);\n }\n\n /**\n * Adds a note or comment to a case for documentation, communication, or progress tracking purposes.\n *\n * Dokümantasyon, iletişim veya ilerleme takibi amaçları için talepe not veya yorum ekler.\n *\n * @param request Note addition request / Not ekleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async addNoteToCase(\n request: AddNoteToCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.addNoteToCase.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Sets or updates the asset associated with a case for proper tracking and management.\n *\n * Uygun takip ve yönetim için taleple ilişkili varlığı ayarlar veya günceller.\n *\n * @param request Asset assignment request / Varlık atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setCaseAsset(\n request: SetCaseAssetRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.setAsset.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Assigns or changes the branch for a case to organize case segmentation and reporting.\n *\n * Talep segmentasyonu ve raporlama için talebin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setCaseBranch(\n request: SetCaseBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.setBranch.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Retrieves analytics for the New Sales Opportunity Lifecycle Funnel dashboard widget.\n *\n * Yeni Satış Fırsatı Yaşam Döngüsü Hunisi gösterge paneli bileşeni için analitik verileri getirir.\n *\n * @param request Analytics request with filtering options / Filtreleme seçenekleri içeren analitik isteği\n * @returns Funnel analytics response / Huni analitiği yanıtı\n */\n async getSalesOpportunityFunnelAnalytics(\n request: GetSalesOpportunityFunnelAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetSalesOpportunityFunnelAnalyticsResult>> {\n return await this.http.post<GetSalesOpportunityFunnelAnalyticsResult>(\n cases.getSalesOpportunityFunnelAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves backlog analytics that pivot open cases by type and subtype for dashboard reporting.\n *\n * Gösterge paneli raporlaması için açık talepleri tür ve alt tür bazında pivotlayan backlog analitiğini getirir.\n *\n * @param request Backlog pivot analytics request / Backlog pivot analitiği isteği\n * @returns Backlog pivot analytics response / Backlog pivot analitiği yanıtı\n */\n async getOpenCaseBacklogPivotAnalytics(\n request: GetOpenCaseBacklogPivotAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetOpenCaseBacklogPivotAnalyticsResult>> {\n return await this.http.post<GetOpenCaseBacklogPivotAnalyticsResult>(\n cases.getOpenCaseBacklogPivotAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves failed cases reason distribution analytics for conversion improvement analysis.\n *\n * Dönüşüm iyileştirme analizi için başarısız taleplerin neden dağılımı analitiğini getirir.\n *\n * @param request Failed cases reason distribution analytics request / Başarısız talep neden dağılımı analitiği isteği\n * @returns Failed cases reason distribution analytics response / Başarısız talep neden dağılımı analitiği yanıtı\n */\n async getFailedCasesReasonDistribution(\n request: GetFailedCasesReasonDistributionRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetFailedCasesReasonDistributionResult>> {\n return await this.http.post<GetFailedCasesReasonDistributionResult>(\n cases.getFailedCasesReasonDistribution.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves all available case communication automation configurations with their argument definitions.\n *\n * Argüman tanımları ile birlikte mevcut tüm talep iletişim otomasyonu yapılandırmalarını getirir.\n *\n * @returns Available communication automations / Mevcut iletişim otomasyonları\n */\n async getAllCaseCommunicationAutomations(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CaseCommunicationAutomationResult[]>> {\n return await this.http.get<CaseCommunicationAutomationResult[]>(\n cases.communicationAutomations.getAll,\n options,\n );\n }\n\n /**\n * Retrieves all available case priority templates for agent configuration.\n *\n * Acente yapılandırması için mevcut tüm talep öncelik şablonlarını getirir.\n *\n * @returns Available case priority templates / Mevcut talep öncelik şablonları\n */\n async getCasePriorityTemplates(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCasePriorityTemplatesResult>> {\n return await this.http.get<GetCasePriorityTemplatesResult>(\n cases.getPriorityTemplates,\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries cases using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak talepleri sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.cases.getCases({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.cases.getCases({\n * select: ['id', 'ref', 'type', 'status', 'mainState'] as const,\n * first: 10,\n * filter: { type: { eq: CaseType.NewSaleOpportunity } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of cases with type-narrowed fields\n */\n async getCases<const TFields extends CaseFieldKey[]>(\n requestOptions?: GetCasesOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<CasesConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_CASE_FIELDS) as CaseFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetCases(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryCaseModelFilterInput\n $filter: filtering_QueryCaseModelFilterInput\n $order: [sorting_QueryCaseModelSortInput!]\n ) {\n casesNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n casesNew: Omit<CasesConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<CasesConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.casesNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.casesNew,\n nodes,\n },\n } as InsurUpGraphQLResult<CasesConnection<TFields>>;\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { webhooks } from \"../core/endpoints.js\";\nimport {\n ALL_WEBHOOK_DELIVERY_FIELDS,\n type WebhookDeliveryFieldKey,\n type GetWebhookDeliveriesOptions,\n type WebhookDeliveriesConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n CreateWebhookRequest,\n CreateWebhookResult,\n GetWebhookByIdResult,\n GetWebhooksResult,\n UpdateWebhookRequest,\n GetWebhookDeliveryResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides comprehensive webhook management operations for configuring event notifications, monitoring delivery status,\n * and managing external system integrations within the InsurUp platform ecosystem.\n *\n * InsurUp platform ekosistemi içinde olay bildirimlerini yapılandırma, teslimat durumunu izleme ve\n * harici sistem entegrasyonlarını yönetmek için kapsamlı webhook yönetimi işlemlerini sağlar.\n */\nexport class InsurUpWebhookClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Creates a new webhook configuration to receive event notifications from the InsurUp platform.\n *\n * InsurUp platformundan olay bildirimleri almak için yeni webhook yapılandırması oluşturur.\n *\n * @param request Webhook creation request with endpoint and event configurations / Endpoint ve olay yapılandırmaları ile webhook oluşturma talebi\n * @returns Created webhook information / Oluşturulan webhook bilgileri\n */\n async createWebhook(\n request: CreateWebhookRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateWebhookResult>> {\n return this.http.post<CreateWebhookResult>(\n webhooks.create,\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific webhook including its configuration and current status.\n *\n * Belirli bir webhook hakkında yapılandırması ve mevcut durumu dahil detaylı bilgileri getirir.\n *\n * @param webhookId Unique identifier of the webhook / Webhook'un benzersiz tanımlayıcısı\n * @returns Webhook configuration details / Webhook yapılandırma detayları\n */\n async getWebhookById(\n webhookId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetWebhookByIdResult>> {\n const endpoint = webhooks.getById.render(webhookId);\n return this.http.get<GetWebhookByIdResult>(endpoint, options);\n }\n\n /**\n * Retrieves all webhooks configured for the current agent or organization for comprehensive webhook management.\n *\n * Kapsamlı webhook yönetimi için mevcut acente veya organizasyon için yapılandırılmış tüm webhook'ları getirir.\n *\n * @returns List of configured webhooks / Yapılandırılmış webhook'lar listesi\n */\n async getWebhooks(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetWebhooksResult[]>> {\n return this.http.get<GetWebhooksResult[]>(webhooks.getAll, options);\n }\n\n /**\n * Updates an existing webhook configuration including endpoint URL, event subscriptions, or authentication settings.\n *\n * Endpoint URL'si, olay abonelikleri veya kimlik doğrulama ayarları dahil mevcut webhook yapılandırmasını günceller.\n *\n * @param request Webhook update request with modified configuration / Değiştirilmiş yapılandırma ile webhook güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateWebhook(\n request: UpdateWebhookRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = webhooks.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Permanently removes a webhook configuration, stopping all future event notifications to the specified endpoint.\n *\n * Webhook yapılandırmasını kalıcı olarak kaldırır ve belirtilen endpoint'e gelecekteki tüm olay bildirimlerini durdurur.\n *\n * @param webhookId Unique identifier of the webhook to delete / Silinecek webhook'un benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteWebhook(\n webhookId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = webhooks.delete.render(webhookId);\n return this.http.deleteNoContent(endpoint, options);\n }\n\n /**\n * Retrieves detailed information about a specific webhook delivery including delivery status, response, and timing.\n *\n * Teslimat durumu, yanıt ve zamanlama dahil belirli bir webhook teslimatı hakkında detaylı bilgileri getirir.\n *\n * @param webhookId Unique identifier of the webhook / Webhook'un benzersiz tanımlayıcısı\n * @param webhookDeliveryId Unique identifier of the delivery attempt / Teslimat denemesinin benzersiz tanımlayıcısı\n * @returns Webhook delivery details / Webhook teslimat detayları\n */\n async getWebhookDelivery(\n webhookId: string,\n webhookDeliveryId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetWebhookDeliveryResult>> {\n const endpoint = webhooks.deliveries.getById.render(\n webhookId,\n webhookDeliveryId,\n );\n return this.http.get<GetWebhookDeliveryResult>(endpoint, options);\n }\n\n /**\n * Manually retries a failed webhook event delivery to attempt successful notification delivery.\n *\n * Başarılı bildirim teslimatını denemek için başarısız webhook olay teslimatını manuel olarak yeniden dener.\n *\n * @param webhookId Unique identifier of the webhook / Webhook'un benzersiz tanımlayıcısı\n * @param webhookDeliveryId Unique identifier of the delivery to retry / Yeniden denenecek teslimatın benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async redeliverWebhookEvent(\n webhookId: string,\n webhookDeliveryId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = webhooks.deliveries.redeliver.render(\n webhookId,\n webhookDeliveryId,\n );\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries webhook deliveries using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak webhook teslimatlarını sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.webhooks.getWebhookDeliveries({ first: 10 });\n *\n * @example\n * // Type-safe field selection with filter\n * const result = await client.webhooks.getWebhookDeliveries({\n * select: ['id', 'webhookId', 'event', 'state'] as const,\n * first: 10,\n * filter: { state: { eq: WebhookDeliveryState.Failed } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of webhook deliveries with type-narrowed fields\n */\n async getWebhookDeliveries<const TFields extends WebhookDeliveryFieldKey[]>(\n requestOptions?: GetWebhookDeliveriesOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<WebhookDeliveriesConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_WEBHOOK_DELIVERY_FIELDS) as WebhookDeliveryFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetWebhookDeliveries(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryWebhookDeliveryResultFilterInput\n $filter: filtering_QueryWebhookDeliveryResultFilterInput\n $order: [sorting_QueryWebhookDeliveryResultSortInput!]\n ) {\n webhookDeliveriesNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n webhookDeliveriesNew: Omit<WebhookDeliveriesConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<\n WebhookDeliveriesConnection<TFields>\n >;\n }\n\n // Derive nodes from edges\n const edges = result.data.webhookDeliveriesNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.webhookDeliveriesNew,\n nodes,\n },\n } as InsurUpGraphQLResult<WebhookDeliveriesConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview Coverage Management Client - Client for managing insurance coverage configurations\n * @description Provides coverage management operations for configuring insurance product coverages, managing coverage groups, and retrieving available coverage options\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { coverageGroups, coverageChoices } from \"../core/endpoints.js\";\nimport type {\n CreateCoverageGroupRequest,\n UpdateCoverageGroupRequest,\n DeleteCoverageGroupRequest,\n GetCoverageGroupByIdResult,\n GetCoverageGroupsResultItem,\n KaskoCoverageChoices,\n KonutCoverageChoices,\n TssCoverageChoices,\n ImmCoverageChoices,\n CompanyCoverageChoices,\n} from \"@insurup/contracts\";\nimport type { VehicleUtilizationStyle } from \"@insurup/contracts\";\n\n/**\n * Provides coverage management operations for configuring insurance product coverages, managing coverage groups,\n * and retrieving available coverage options for different insurance branches within the InsurUp platform.\n *\n * InsurUp platformu içinde sigorta ürün teminatlarını yapılandırma, teminat gruplarını yönetme ve farklı\n * sigorta dalları için mevcut teminat seçeneklerini alma konularında teminat yönetimi işlemlerini sağlar.\n */\nexport class InsurUpCoverageClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Creates a new coverage group to organize and standardize coverage offerings across multiple insurance products.\n *\n * Birden fazla sigorta ürününde teminat tekliflerini organize etmek ve standartlaştırmak için yeni teminat grubu oluşturur.\n *\n * @param request Coverage group creation request / Teminat grubu oluşturma talebi\n * @returns Operation result / İşlem sonucu\n */\n async createCoverageGroup(\n request: CreateCoverageGroupRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(coverageGroups.create, request, options);\n }\n\n /**\n * Updates an existing coverage group's configuration, coverage options, or applicable insurance products.\n *\n * Mevcut bir teminat grubunun yapılandırmasını, teminat seçeneklerini veya uygulanabilir sigorta ürünlerini günceller.\n *\n * @param request Coverage group update request / Teminat grubu güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCoverageGroup(\n request: UpdateCoverageGroupRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n coverageGroups.update.render(request.id),\n request,\n options,\n );\n }\n\n /**\n * Removes a coverage group from the system, ensuring proper cleanup of associated coverage configurations.\n *\n * Sistemden bir teminat grubunu kaldırır ve ilişkili teminat yapılandırmalarının düzgün temizlenmesini sağlar.\n *\n * @param request Coverage group deletion request / Teminat grubu silme talebi\n * @returns Operation result / İşlem sonucu\n */\n async deleteCoverageGroup(\n request: DeleteCoverageGroupRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n coverageGroups.delete.render(request.id),\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific coverage group including its coverage options and configurations.\n *\n * Belirli bir teminat grubu hakkında teminat seçenekleri ve yapılandırmaları dahil detaylı bilgileri getirir.\n *\n * @param coverageGroupId Unique identifier of the coverage group / Teminat grubunun benzersiz tanımlayıcısı\n * @returns Coverage group details / Teminat grubu detayları\n */\n async getCoverageGroupById(\n coverageGroupId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCoverageGroupByIdResult>> {\n return this.http.get(\n coverageGroups.getById.render(coverageGroupId),\n options,\n );\n }\n\n /**\n * Retrieves all available coverage groups within the agency for comprehensive coverage management overview.\n *\n * Kapsamlı teminat yönetimi genel bakışı için acente içindeki tüm mevcut teminat gruplarını getirir.\n *\n * @returns List of all coverage groups / Tüm teminat grupları listesi\n */\n async getAllCoverageGroups(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCoverageGroupsResultItem[]>> {\n return this.http.get(coverageGroups.getAll, options);\n }\n\n /**\n * Retrieves available Kasko (comprehensive vehicle insurance) coverage options and configurations for proposal generation.\n *\n * Teklif oluşturma için mevcut Kasko (kasko araç sigortası) teminat seçenekleri ve yapılandırmalarını getirir.\n *\n * @param vehicleUtilizationStyle Optional vehicle utilization style filter / İsteğe bağlı araç kullanım stili filtresi\n * @returns Kasko coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış Kasko teminat seçenekleri\n */\n async getKaskoCoverageChoices(\n vehicleUtilizationStyle?: VehicleUtilizationStyle,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<KaskoCoverageChoices>[]>> {\n const endpoint = coverageChoices.getKaskoCoverageChoices.render(\n vehicleUtilizationStyle,\n );\n return this.http.get<CompanyCoverageChoices<KaskoCoverageChoices>[]>(\n endpoint,\n options,\n );\n }\n\n /**\n * Retrieves available Konut (home/property insurance) coverage options including DASK earthquake insurance configurations.\n *\n * DASK deprem sigortası yapılandırmaları dahil mevcut Konut (ev/mülk sigortası) teminat seçeneklerini getirir.\n *\n * @returns Konut coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış Konut teminat seçenekleri\n */\n async getKonutCoverageChoices(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<KonutCoverageChoices>[]>> {\n return this.http.get<CompanyCoverageChoices<KonutCoverageChoices>[]>(\n coverageChoices.getKonutCoverageChoices.render(),\n options,\n );\n }\n\n /**\n * Retrieves available TSS (Traffic Insurance) coverage options for mandatory and voluntary vehicle liability insurance.\n *\n * Zorunlu ve ihtiyari araç sorumluluk sigortası için mevcut TSS (Trafik Sigortası) teminat seçeneklerini getirir.\n *\n * @returns TSS coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış TSS teminat seçenekleri\n */\n async getTssCoverageChoices(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<TssCoverageChoices>[]>> {\n return this.http.get<CompanyCoverageChoices<TssCoverageChoices>[]>(\n coverageChoices.getTssCoverageChoices.render(),\n options,\n );\n }\n\n /**\n * Retrieves available IMM (Voluntary Financial Liability) coverage options for extended liability protection beyond mandatory insurance.\n *\n * Zorunlu sigortanın ötesinde genişletilmiş sorumluluk koruması için mevcut İMM (İhtiyari Mali Mesuliyet) teminat seçeneklerini getirir.\n *\n * @returns IMM coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış İMM teminat seçenekleri\n */\n async getImmCoverageChoices(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<ImmCoverageChoices>[]>> {\n return this.http.get<CompanyCoverageChoices<ImmCoverageChoices>[]>(\n coverageChoices.getImmCoverageChoices.render(),\n options,\n );\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport type {\n ResourceKey,\n InsuranceCompany,\n InsuranceProduct,\n GetAgentBasedConnectionFieldsByCompanyIdResultItem,\n GetAllReleaseNotesResultItem,\n Bank,\n BankBranch,\n FinancialInstitution,\n} from \"@insurup/contracts\";\n\n/**\n * Provides comprehensive insurance industry data access for retrieving insurance companies, products, resource keys,\n * release notes, and financial institution information essential for platform operations and integrations.\n *\n * Platform operasyonları ve entegrasyonları için gerekli sigorta şirketleri, ürünler, kaynak anahtarları,\n * sürüm notları ve finansal kurum bilgilerini almak üzere kapsamlı sigorta sektörü veri erişimi sağlar.\n *\n * **Insurance Industry Data Client / Sigorta Sektörü Veri İstemcisi**\n *\n * EN: Central client for accessing comprehensive insurance industry reference data and platform configuration information.\n * Provides access to insurance companies, their products, localization resources, platform release notes, banking\n * institutions, and financial service providers. Essential for agencies that need to stay updated with insurance\n * market offerings, configure platform integrations, access multilingual resources, and integrate with banking\n * systems for premium collection and policy financing operations.\n *\n * TR: Kapsamlı sigorta sektörü referans verilerine ve platform yapılandırma bilgilerine erişim için merkezi istemci.\n * Sigorta şirketleri, ürünleri, yerelleştirme kaynakları, platform sürüm notları, bankacılık kurumları ve finansal\n * hizmet sağlayıcılarına erişim sağlar. Sigorta pazar teklifleri ile güncel kalması, platform entegrasyonlarını\n * yapılandırması, çok dilli kaynaklara erişmesi ve prim tahsilatı ile poliçe finansman operasyonları için bankacılık\n * sistemleri ile entegrasyon yapması gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpInsuranceClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves all available resource keys for localization and multi-language support within the platform.\n *\n * Platform içinde yerelleştirme ve çoklu dil desteği için mevcut tüm kaynak anahtarlarını getirir.\n *\n * @returns List of resource keys for localization / Yerelleştirme için kaynak anahtarları listesi\n */\n async getResourceKeys(\n options?: RequestOptions,\n ): Promise<InsurUpResult<ResourceKey[]>> {\n return this.http.get<ResourceKey[]>(endpoints.resourceKeys.getAll, options);\n }\n\n /**\n * Retrieves all insurance companies available on the platform for agent partnerships and product offerings.\n *\n * Acente ortaklıkları ve ürün teklifleri için platformda bulunan tüm sigorta şirketlerini getirir.\n *\n * @returns List of insurance companies / Sigorta şirketleri listesi\n */\n async getInsuranceCompanies(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceCompany[]>> {\n return this.http.get<InsuranceCompany[]>(\n endpoints.insuranceCompanies.getInsuranceCompanies,\n options,\n );\n }\n\n /**\n * Retrieves all insurance products offered by a specific insurance company including their features and coverage options.\n *\n * Belirli bir sigorta şirketinin sunduğu tüm sigorta ürünlerini özellikleri ve teminat seçenekleri dahil getirir.\n *\n * @param insuranceCompanyId Unique identifier of the insurance company / Sigorta şirketinin benzersiz tanımlayıcısı\n * @returns List of insurance products / Sigorta ürünleri listesi\n */\n async getInsuranceCompanyProducts(\n insuranceCompanyId: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceProduct[]>> {\n const path =\n endpoints.insuranceCompanies.getInsuranceCompanyProducts.render(\n insuranceCompanyId,\n );\n return this.http.get<InsuranceProduct[]>(path, options);\n }\n\n /**\n * Retrieves all insurance products from all companies on the platform including their features and coverage options.\n *\n * Platformdaki tüm şirketlerden mevcut tüm sigorta ürünlerini özellikleri ve teminat seçenekleri dahil getirir.\n *\n * @returns List of all insurance products / Tüm sigorta ürünleri listesi\n */\n async getAllProducts(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceProduct[]>> {\n return this.http.get<InsuranceProduct[]>(\n endpoints.insuranceCompanies.getAllProducts,\n options,\n );\n }\n\n /**\n * Retrieves agent-specific connection fields and requirements for integrating with a particular insurance company's systems.\n *\n * Belirli bir sigorta şirketinin sistemleri ile entegrasyon için acente özel bağlantı alanları ve gereksinimlerini getirir.\n *\n * @param insuranceCompanyId Unique identifier of the insurance company / Sigorta şirketinin benzersiz tanımlayıcısı\n * @returns Connection field requirements / Bağlantı alanı gereksinimleri\n */\n async getCompanyConnectionFields(\n insuranceCompanyId: number,\n options?: RequestOptions,\n ): Promise<\n InsurUpResult<GetAgentBasedConnectionFieldsByCompanyIdResultItem[]>\n > {\n const path =\n endpoints.insuranceCompanies.connectionFields.getAgentBasedConnectionFieldsByCompanyId.render(\n insuranceCompanyId,\n );\n return this.http.get<GetAgentBasedConnectionFieldsByCompanyIdResultItem[]>(\n path,\n options,\n );\n }\n\n /**\n * Retrieves all platform release notes including new features, bug fixes, and important updates for system awareness.\n *\n * Sistem farkındalığı için yeni özellikler, hata düzeltmeleri ve önemli güncellemeler dahil tüm platform sürüm notlarını getirir.\n *\n * @returns Platform release notes / Platform sürüm notları\n */\n async getAllReleaseNotes(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllReleaseNotesResultItem[]>> {\n return this.http.get<GetAllReleaseNotesResultItem[]>(\n endpoints.releaseNotes.getAll,\n options,\n );\n }\n\n /**\n * Retrieves all banks available for premium collection, policy financing, and customer payment processing operations.\n *\n * Prim tahsilatı, poliçe finansmanı ve müşteri ödeme işleme operasyonları için mevcut tüm bankaları getirir.\n *\n * @returns List of banks / Bankalar listesi\n */\n async getBanks(options?: RequestOptions): Promise<InsurUpResult<Bank[]>> {\n return this.http.get<Bank[]>(endpoints.banks.getAll, options);\n }\n\n /**\n * Retrieves all branches for a specific bank to enable precise payment routing and customer service location matching.\n *\n * Hassas ödeme yönlendirmesi ve müşteri hizmet konumu eşleştirmesi için belirli bir bankanın tüm şubelerini getirir.\n *\n * @param bankId Unique identifier of the bank / Bankanın benzersiz tanımlayıcısı\n * @returns List of bank branches / Banka şubeleri listesi\n */\n async getBankBranches(\n bankId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<BankBranch[]>> {\n const path = endpoints.banks.getBranches.render(bankId);\n return this.http.get<BankBranch[]>(path, options);\n }\n\n /**\n * Retrieves all financial institutions including banks, credit unions, and other financial service providers for comprehensive payment options.\n *\n * Kapsamlı ödeme seçenekleri için bankalar, kredi birlikleri ve diğer finansal hizmet sağlayıcıları dahil tüm finansal kurumları getirir.\n *\n * @returns List of financial institutions / Finansal kurumlar listesi\n */\n async getFinancialInstitutions(\n options?: RequestOptions,\n ): Promise<InsurUpResult<FinancialInstitution[]>> {\n return this.http.get<FinancialInstitution[]>(\n endpoints.financialInstitutions.getAll,\n options,\n );\n }\n}\n","/**\n * @fileoverview Proposal Client - Comprehensive proposal management operations\n * @description Provides comprehensive proposal management operations for creating insurance proposals, managing proposal lifecycle,\n * document generation, product purchasing, and comparison tools within the insurance sales process.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport {\n ALL_PROPOSAL_FIELDS,\n type ProposalFieldKey,\n type GetProposalsOptions,\n type ProposalsConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n CreateProposalRequest,\n CreateProposalResult,\n GetProposalByIdResult,\n GetProposalProductPremiumDetailResult,\n PurchaseProposalProductSyncRequest,\n PurchaseProposalProductSyncResult,\n PurchaseProposalProductAsyncRequest,\n PurchaseProposalProductAsyncResult,\n GetProposalProductCoverageResult,\n ReviseProposalRequest,\n ReviseProposalResult,\n ReviseProposalProductRequest,\n FetchProposalProductDocumentRequest,\n FetchProposalProductDocumentResult,\n FetchProposalInformationFormDocumentRequest,\n FetchProposalInformationFormDocumentResult,\n SendProposalProductDocumentRequest,\n SendProposalInformationFormDocumentRequest,\n GenerateCompareProposalProductsPdfRequest,\n GenerateCompareProposalProductsPdfResult,\n SendCompareProposalProductsPdfRequest,\n SetProposalRepresentativeRequest,\n RetryFailedProposalProductRequest,\n GenerateCustomerProposalDocumentPdfRequest,\n GenerateCustomerProposalDocumentPdfResult,\n SetProposalBranchRequest,\n GetProposalConversionTrendRequest,\n GetProposalConversionTrendResult,\n} from \"@insurup/contracts\";\n\n/**\n * Proposal Management Client / Teklif Yönetimi İstemcisi\n *\n * Central client for managing the complete insurance proposal lifecycle from creation to policy conversion. Handles\n * proposal generation, product comparison, premium calculations, document management, customer communication, and the\n * purchasing process for various insurance products. Provides both synchronous and asynchronous purchasing options,\n * comprehensive document generation including comparison PDFs, and proposal revision capabilities. Essential for\n * agencies that need to create competitive insurance proposals, manage customer decision processes, and convert\n * proposals into active policies while maintaining detailed audit trails and customer communication records.\n *\n * Oluşturmadan poliçe dönüştürmeye kadar tam sigorta teklif yaşam döngüsünü yönetmek için merkezi istemci.\n * Teklif oluşturma, ürün karşılaştırması, prim hesaplamaları, belge yönetimi, müşteri iletişimi ve çeşitli sigorta\n * ürünleri için satın alma sürecini yönetir. Hem senkron hem de asenkron satın alma seçenekleri, karşılaştırma PDF'leri\n * dahil kapsamlı belge oluşturma ve teklif revizyon yetenekleri sağlar. Rekabetçi sigorta teklifleri oluşturması,\n * müşteri karar süreçlerini yönetmesi ve detaylı denetim izleri ile müşteri iletişim kayıtlarını korurken teklifleri\n * aktif poliçelere dönüştürmesi gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpProposalClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Creates a new insurance proposal with customer information, coverage selections, and product options for quotation.\n *\n * Fiyat teklifi için müşteri bilgileri, teminat seçimleri ve ürün seçenekleri ile yeni sigorta teklifi oluşturur.\n *\n * @param request - Proposal creation request with customer and coverage details / Müşteri ve teminat detayları ile teklif oluşturma talebi\n * @returns Created proposal information / Oluşturulan teklif bilgileri\n */\n async createProposal(\n request: CreateProposalRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateProposalResult>> {\n return this.http.post<CreateProposalResult>(\n endpoints.proposals.create,\n request,\n options,\n );\n }\n\n /**\n * Retries a failed proposal product calculation or processing to attempt resolution of temporary issues.\n *\n * Geçici sorunların çözümünü denemek için başarısız teklif ürün hesaplama veya işlemesini yeniden dener.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @param proposalProductId - Unique identifier of the proposal product / Teklif ürününün benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async retryFailedProposalProduct(\n proposalId: string,\n proposalProductId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const request: RetryFailedProposalProductRequest = {\n proposalId,\n proposalProductId,\n };\n return this.http.postNoContent(\n endpoints.proposals.retryFailedProposalProduct.render(\n proposalId,\n proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves comprehensive details of a specific proposal including all products, coverage options, and pricing information.\n *\n * Tüm ürünler, teminat seçenekleri ve fiyatlandırma bilgileri dahil belirli bir teklifin kapsamlı detaylarını getirir.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @returns Detailed proposal information / Detaylı teklif bilgileri\n */\n async getProposalDetail(\n proposalId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalByIdResult>> {\n return this.http.get<GetProposalByIdResult>(\n endpoints.proposals.getProposalById.render(proposalId),\n options,\n );\n }\n\n /**\n * Retrieves detailed premium breakdown information for a specific proposal product including installment options.\n *\n * Taksit seçenekleri dahil belirli bir teklif ürünü için detaylı prim dağılım bilgilerini getirir.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @param proposalProductId - Unique identifier of the proposal product / Teklif ürününün benzersiz tanımlayıcısı\n * @param installmentNumber - Installment option number / Taksit seçenek numarası\n * @returns Premium breakdown details / Prim dağılım detayları\n */\n async getProposalProductPremiumDetail(\n proposalId: string,\n proposalProductId: string,\n installmentNumber: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalProductPremiumDetailResult>> {\n return this.http.get<GetProposalProductPremiumDetailResult>(\n endpoints.proposals.getProposalProductPremiumDetail.render(\n proposalId,\n proposalProductId,\n installmentNumber,\n ),\n options,\n );\n }\n\n /**\n * Purchases a proposal product synchronously, converting it to an active policy with immediate confirmation.\n *\n * Teklif ürününü senkron olarak satın alır ve anında onay ile aktif poliçeye dönüştürür.\n *\n * @param request - Synchronous purchase request / Senkron satın alma talebi\n * @returns Purchase confirmation with policy details / Poliçe detayları ile satın alma onayı\n */\n async purchaseProposalProductSync(\n request: PurchaseProposalProductSyncRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<PurchaseProposalProductSyncResult>> {\n return this.http.post<PurchaseProposalProductSyncResult>(\n endpoints.proposals.purchaseProposalProductSync.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Initiates an asynchronous purchase process for a proposal product, allowing for background processing and later confirmation.\n *\n * Arka plan işleme ve sonraki onay için teklif ürünü için asenkron satın alma sürecini başlatır.\n *\n * @param request - Asynchronous purchase request / Asenkron satın alma talebi\n * @returns Purchase initiation confirmation / Satın alma başlatma onayı\n */\n async purchaseProposalProductAsync(\n request: PurchaseProposalProductAsyncRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<PurchaseProposalProductAsyncResult>> {\n return this.http.post<PurchaseProposalProductAsyncResult>(\n endpoints.proposals.purchaseProposalProductAsync.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed coverage configuration for a specific proposal product including all coverage options and limits.\n *\n * Tüm teminat seçenekleri ve limitleri dahil belirli bir teklif ürünü için detaylı teminat yapılandırmasını getirir.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @param proposalProductId - Unique identifier of the proposal product / Teklif ürününün benzersiz tanımlayıcısı\n * @returns Coverage configuration details / Teminat yapılandırma detayları\n */\n async getProposalProductCoverage(\n proposalId: string,\n proposalProductId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalProductCoverageResult>> {\n return this.http.get<GetProposalProductCoverageResult>(\n endpoints.proposals.getProposalProductCoverage.render(\n proposalId,\n proposalProductId,\n ),\n options,\n );\n }\n\n /**\n * Creates a revised version of an existing proposal with updated information, coverage changes, or customer modifications.\n *\n * Güncellenmiş bilgiler, teminat değişiklikleri veya müşteri değişiklikleri ile mevcut teklifin revize edilmiş versiyonunu oluşturur.\n *\n * @param request - Proposal revision request / Teklif revizyon talebi\n * @returns Revised proposal information / Revize edilmiş teklif bilgileri\n */\n async reviseProposal(\n request: ReviseProposalRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<ReviseProposalResult>> {\n return this.http.post<ReviseProposalResult>(\n endpoints.proposals.reviseProposal.render(request.proposalId),\n request,\n options,\n );\n }\n\n /**\n * Revises a specific product within a proposal with updated coverage options, limits, or pricing parameters.\n *\n * Güncellenmiş teminat seçenekleri, limitler veya fiyatlandırma parametreleri ile teklif içindeki belirli ürünü revize eder.\n *\n * @param request - Product revision request / Ürün revizyon talebi\n * @returns Operation result / İşlem sonucu\n */\n async reviseProposalProduct(\n request: ReviseProposalProductRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.reviseProposalProduct.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Fetches the official proposal document for a specific product from the insurance company's systems.\n *\n * Sigorta şirketinin sistemlerinden belirli bir ürün için resmi teklif belgesini getirir.\n *\n * @param request - Document fetch request / Belge getirme talebi\n * @returns Proposal document data / Teklif belgesi verisi\n */\n async fetchProposalProductDocument(\n request: FetchProposalProductDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<FetchProposalProductDocumentResult>> {\n return this.http.get<FetchProposalProductDocumentResult>(\n endpoints.proposals.fetchProposalProductDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n options,\n );\n }\n\n /**\n * Fetches the information form document that contains detailed product information and terms for customer review.\n *\n * Müşteri incelemesi için detaylı ürün bilgileri ve şartları içeren bilgi formu belgesini getirir.\n *\n * @param request - Information form document request / Bilgi formu belgesi talebi\n * @returns Information form document data / Bilgi formu belgesi verisi\n */\n async fetchProposalInformationFormDocument(\n request: FetchProposalInformationFormDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<FetchProposalInformationFormDocumentResult>> {\n return this.http.get<FetchProposalInformationFormDocumentResult>(\n endpoints.proposals.fetchProposalInformationFormDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n options,\n );\n }\n\n /**\n * Sends the proposal product document directly to the customer via email or other communication channels.\n *\n * Teklif ürün belgesini e-posta veya diğer iletişim kanalları aracılığıyla doğrudan müşteriye gönderir.\n *\n * @param request - Document delivery request / Belge teslim talebi\n * @returns Operation result / İşlem sonucu\n */\n async sendProposalProductDocument(\n request: SendProposalProductDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.sendProposalProductDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Sends the information form document to the customer for detailed product review and decision making.\n *\n * Detaylı ürün incelemesi ve karar verme için bilgi formu belgesini müşteriye gönderir.\n *\n * @param request - Information form delivery request / Bilgi formu teslim talebi\n * @returns Operation result / İşlem sonucu\n */\n async sendProposalInformationFormDocument(\n request: SendProposalInformationFormDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.sendProposalInformationFormDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Generates a comparative PDF document showing multiple proposal products side-by-side for customer decision support.\n *\n * Müşteri karar desteği için birden fazla teklif ürününü yan yana gösteren karşılaştırmalı PDF belgesi oluşturur.\n *\n * @param request - Comparison PDF generation request / Karşılaştırma PDF oluşturma talebi\n * @returns Generated comparison document / Oluşturulan karşılaştırma belgesi\n */\n async generateCompareProposalProductsPdf(\n request: GenerateCompareProposalProductsPdfRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GenerateCompareProposalProductsPdfResult>> {\n return this.http.post<GenerateCompareProposalProductsPdfResult>(\n endpoints.proposals.generateCompareProposalProductsPdf.render(\n request.proposalId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Sends the proposal comparison PDF document to the customer to facilitate informed decision making between insurance options.\n *\n * Sigorta seçenekleri arasında bilinçli karar vermeyi kolaylaştırmak için teklif karşılaştırma PDF belgesini müşteriye gönderir.\n *\n * @param request - Comparison PDF delivery request / Karşılaştırma PDF teslim talebi\n * @returns Operation result / İşlem sonucu\n */\n async sendCompareProposalProductsPdf(\n request: SendCompareProposalProductsPdfRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.sendCompareProposalProductsPdf.render(\n request.proposalId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Generates a professional PDF document containing selected proposal products for customer presentation.\n *\n * Müşteri sunumu için seçilen teklif ürünlerini içeren profesyonel bir PDF belgesi oluşturur.\n *\n * @param request Customer proposal document generation request / Müşteri teklif belgesi oluşturma talebi\n * @returns Generated document URL / Oluşturulan belge URL'i\n */\n async generateCustomerProposalDocumentPdf(\n request: GenerateCustomerProposalDocumentPdfRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GenerateCustomerProposalDocumentPdfResult>> {\n return this.http.post<GenerateCustomerProposalDocumentPdfResult>(\n endpoints.proposals.generateCustomerProposalDocumentPdf.render(\n request.proposalId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Assigns or changes the branch for a proposal to organize proposal segmentation and reporting.\n *\n * Teklif segmentasyonu ve raporlama için teklifin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setProposalBranch(\n request: SetProposalBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.setProposalBranch.render(request.proposalId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves proposal-to-policy conversion trend analytics as a time series.\n *\n * Tekliften poliçeye dönüşüm trendi analitiğini zaman serisi olarak getirir.\n *\n * @param request Conversion trend analytics request / Dönüşüm trendi analitik isteği\n * @returns Conversion trend analytics response / Dönüşüm trendi analitiği yanıtı\n */\n async getProposalConversionTrend(\n request: GetProposalConversionTrendRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalConversionTrendResult>> {\n return this.http.post<GetProposalConversionTrendResult>(\n endpoints.proposals.getProposalConversionTrend.definition,\n request,\n options,\n );\n }\n\n /**\n * Assigns or updates the representative responsible for managing a specific proposal and customer relationship.\n *\n * Belirli bir teklifi ve müşteri ilişkisini yönetmekten sorumlu temsilciyi atar veya günceller.\n *\n * @param request - Representative assignment request / Temsilci atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setProposalRepresentative(\n request: SetProposalRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.setProposalRepresentative.render(request.proposalId),\n request,\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries proposals using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak teklifleri sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.proposals.getProposals({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.proposals.getProposals({\n * select: ['id', 'productBranch', 'state', 'insuredCustomerName'] as const,\n * first: 10,\n * filter: { state: { eq: ProposalState.Active } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of proposals with type-narrowed fields\n */\n async getProposals<const TFields extends ProposalFieldKey[]>(\n requestOptions?: GetProposalsOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<ProposalsConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_PROPOSAL_FIELDS) as ProposalFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetProposals(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryProposalsResultFilterInput\n $filter: filtering_QueryProposalsResultFilterInput\n $order: [sorting_QueryProposalsResultSortInput!]\n ) {\n proposalsNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n proposalsNew: Omit<ProposalsConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<ProposalsConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.proposalsNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.proposalsNew,\n nodes,\n },\n } as InsurUpGraphQLResult<ProposalsConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview File Client - File upload operations\n * @description Provides file management operations for the InsurUp platform\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { files } from \"../core/endpoints.js\";\nimport type {\n UploadPublicFileRequest,\n UploadPublicFileResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides file management operations for the InsurUp platform, enabling agents to upload and manage files\n * within the insurance ecosystem.\n */\nexport class InsurUpFileClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Uploads a file to public storage and returns the file URL for public access.\n * Maximum file size is 1MB. Only available for agent users.\n *\n * Bir dosyayı genel depolamaya yükler ve genel erişim için dosya URL'sini döndürür.\n * Maksimum dosya boyutu 1MB'dir. Sadece acente kullanıcıları için kullanılabilir.\n *\n * @param request Upload configuration including optional path\n * @param file File content\n * @param fileName Name of the file\n * @returns File URL and path information\n */\n async uploadPublicFile(\n request: UploadPublicFileRequest,\n file: File,\n fileName: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<UploadPublicFileResult>> {\n const formData = new FormData();\n formData.append(\"file\", file, fileName);\n\n if (request.path) {\n formData.append(\"path\", request.path);\n }\n\n return this.http.post<UploadPublicFileResult>(\n files.uploadPublicFile,\n formData,\n options,\n );\n }\n}\n","/**\n * @fileoverview Language Client - Language and localization operations\n * @description Provides language and localization operations for retrieving available languages\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { languages } from \"../core/endpoints.js\";\nimport type { LanguageResult } from \"@insurup/contracts\";\n\n/**\n * Provides language and localization operations for retrieving available languages in the InsurUp platform.\n * Essential for multi-language support and internationalization features.\n */\nexport class InsurUpLanguageClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves all available languages in the system for localization and internationalization purposes.\n * Returns language information including language codes, native names, and English names.\n *\n * Yerelleştirme ve uluslararasılaştırma amaçları için sistemdeki tüm kullanılabilir dilleri getirir.\n * Dil kodları, yerel adlar ve İngilizce adlar dahil dil bilgilerini döndürür.\n *\n * @returns List of all available languages\n */\n async getLanguages(\n options?: RequestOptions,\n ): Promise<InsurUpResult<LanguageResult[]>> {\n return this.http.get<LanguageResult[]>(languages.getAll, options);\n }\n}\n","/**\n * @fileoverview Template Client - Template management operations\n * @description Provides template management operations for the InsurUp platform\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { templates } from \"../core/endpoints.js\";\nimport type {\n GetTemplateDefinitionsResult,\n QueryTemplatesResult,\n GetTemplateByKeyResult,\n UpdateTemplateRequest,\n DeleteTemplateRequest,\n} from \"@insurup/contracts\";\n\n/**\n * Provides template management operations for the InsurUp platform, enabling agents to retrieve and update\n * document templates, email templates, and other content templates used in insurance workflows.\n */\nexport class InsurUpTemplateClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves all template definitions with their JSON schemas and metadata.\n * These definitions describe the structure and data models for all template types available in the system.\n * Only accessible by admin panel users and agent users with appropriate permissions.\n *\n * Tüm şablon tanımlarını JSON şemaları ve meta verileriyle getirir.\n * Bu tanımlar, sistemde mevcut tüm şablon türleri için yapı ve veri modellerini açıklar.\n * Sadece yönetici panel kullanıcıları ve uygun izinlere sahip acente kullanıcıları tarafından erişilebilir.\n *\n * @returns List of all template definitions\n */\n async getTemplateDefinitions(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetTemplateDefinitionsResult[]>> {\n return this.http.get<GetTemplateDefinitionsResult[]>(\n templates.getDefinitions,\n options,\n );\n }\n\n /**\n * Retrieves all available templates in the system with their metadata and content.\n * Only accessible by admin panel users and agent users with appropriate permissions.\n *\n * Sistemdeki tüm kullanılabilir şablonları meta verileri ve içerikleriyle getirir.\n * Sadece yönetici panel kullanıcıları ve uygun izinlere sahip acente kullanıcıları tarafından erişilebilir.\n *\n * @returns List of all templates with their details\n */\n async getAllTemplates(\n options?: RequestOptions,\n ): Promise<InsurUpResult<QueryTemplatesResult[]>> {\n return this.http.get<QueryTemplatesResult[]>(templates.getAll, options);\n }\n\n /**\n * Retrieves a specific template by its unique key for a particular language.\n * Returns the complete template including content and JSON schema for data validation.\n *\n * Belirli bir dil için benzersiz anahtarına göre belirli bir şablonu getirir.\n * Veri doğrulama için içerik ve JSON şeması dahil tam şablonu döndürür.\n *\n * @param key Unique identifier key of the template\n * @param languageId Language identifier for template localization\n * @returns Complete template information\n */\n async getTemplateByKey(\n key: string,\n languageId: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetTemplateByKeyResult>> {\n const endpoint = `${templates.getByKey.render(key)}?languageId=${languageId}`;\n return this.http.get<GetTemplateByKeyResult>(endpoint, options);\n }\n\n /**\n * Updates an existing template with new content, name, description, and localization settings.\n * Allows administrators to maintain and modify templates used throughout the insurance platform.\n *\n * Mevcut bir şablonu yeni içerik, ad, açıklama ve yerelleştirme ayarlarıyla günceller.\n * Yöneticilerin sigorta platformu boyunca kullanılan şablonları sürdürmesine ve değiştirmesine olanak tanır.\n *\n * @param request Template update request with new content and metadata\n * @returns Operation result\n */\n async updateTemplate(\n request: UpdateTemplateRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = templates.update.render(request.key);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Deletes a template owned by the current agent user.\n * Only agent users can delete templates they own. Templates with null AgentId or different AgentId cannot be deleted.\n *\n * Mevcut acente kullanıcısına ait bir şablonu siler.\n * Sadece acente kullanıcıları kendi şablonlarını silebilir. Null AgentId'ye sahip veya farklı AgentId'ye sahip şablonlar silinemez.\n *\n * @param request Template delete request with key and language ID\n * @returns Operation result\n */\n async deleteTemplate(\n request: DeleteTemplateRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = `${templates.delete.render(request.key)}?languageId=${request.languageId}`;\n return this.http.deleteNoContent(endpoint, options);\n }\n}\n","/**\n * @fileoverview Default InsurUp Client - Main SDK client implementation\n * @description Main SDK client implementation\n */\n\nimport { HttpTransport } from \"./http.js\";\nimport { GraphQLTransport } from \"./graphql.js\";\nimport type { InsurUpClientOptions } from \"../core/options.js\";\n\n// Import specialized clients\nimport { InsurUpAgentClient } from \"../clients/agent.js\";\nimport { InsurUpAgentBranchClient } from \"../clients/agentBranch.js\";\nimport { InsurUpAgentRoleClient } from \"../clients/agentRole.js\";\nimport { InsurUpAgentSetupClient } from \"../clients/agentSetup.js\";\nimport { InsurUpAgentUserClient } from \"../clients/agentUser.js\";\nimport { InsurUpCustomerClient } from \"../clients/customer.js\";\nimport { InsurUpVehicleClient } from \"../clients/vehicle.js\";\nimport { InsurUpPropertyClient } from \"../clients/property.js\";\nimport { InsurUpPolicyClient } from \"../clients/policy.js\";\nimport { InsurUpCaseClient } from \"../clients/case.js\";\nimport { InsurUpWebhookClient } from \"../clients/webhook.js\";\nimport { InsurUpCoverageClient } from \"../clients/coverage.js\";\nimport { InsurUpInsuranceClient } from \"../clients/insurance.js\";\nimport { InsurUpProposalClient } from \"../clients/proposal.js\";\nimport { InsurUpFileClient } from \"../clients/file.js\";\nimport { InsurUpLanguageClient } from \"../clients/language.js\";\nimport { InsurUpTemplateClient } from \"../clients/template.js\";\n\n/**\n * Main unified client providing comprehensive access to all InsurUp platform operations.\n * Aggregates specialized client interfaces for authentication, agent management, customer operations,\n * vehicle and property insurance, coverage management, and policy administration.\n */\nexport class DefaultInsurUpClient {\n private readonly http: HttpTransport;\n private readonly graphql: GraphQLTransport;\n\n /**\n * Agent Management Client\n *\n * Provides agent management operations for handling agent profiles, insurance company connections,\n * and business relationships within the insurance ecosystem.\n */\n public readonly agents: InsurUpAgentClient;\n\n /**\n * Agent Branch Management Client\n *\n * Provides branch management operations for insurance agents, enabling the creation and administration\n * of organizational branches within agency structures.\n */\n public readonly agentBranches: InsurUpAgentBranchClient;\n\n /**\n * Agent Role Management Client\n *\n * Provides role management operations for insurance agents, enabling the creation and administration\n * of role-based access control within agency hierarchies and permission structures.\n */\n public readonly agentRoles: InsurUpAgentRoleClient;\n\n /**\n * Agent Setup Client\n *\n * Provides agent onboarding and setup operations for new insurance agents joining the InsurUp platform,\n * facilitating the complete registration and configuration process required for business operations.\n */\n public readonly agentSetup: InsurUpAgentSetupClient;\n\n /**\n * Agent User Management Client\n *\n * Provides comprehensive user management operations for insurance agency staff, enabling agencies to manage\n * their team members, permissions, and access control within the InsurUp platform ecosystem.\n */\n public readonly agentUsers: InsurUpAgentUserClient;\n\n /**\n * Customer Management Client\n *\n * Provides comprehensive customer management operations for handling customer profiles, contact information,\n * health data, communication flows, and external customer data integration.\n */\n public readonly customers: InsurUpCustomerClient;\n\n /**\n * Vehicle Management Client\n *\n * Provides comprehensive vehicle management operations for handling customer vehicles, vehicle data lookups,\n * brand and model queries, and vehicle-based insurance operations within the automotive insurance ecosystem.\n */\n public readonly vehicles: InsurUpVehicleClient;\n\n /**\n * Property Management Client\n *\n * Provides comprehensive property management operations for handling customer properties, Turkish address hierarchy queries,\n * DASK earthquake insurance lookups, and property-based insurance operations within the real estate insurance ecosystem.\n */\n public readonly properties: InsurUpPropertyClient;\n\n /**\n * Policy Management Client\n *\n * Provides comprehensive policy management operations for handling insurance policies, policy documents,\n * representative assignments, and policy administration.\n */\n public readonly policies: InsurUpPolicyClient;\n\n /**\n * Case Management Client\n *\n * Provides comprehensive case management operations for handling customer service requests, claims processing,\n * sales opportunities, and complaint resolution within the insurance workflow.\n */\n public readonly cases: InsurUpCaseClient;\n\n /**\n * Webhook Management Client\n *\n * Provides comprehensive webhook management operations for configuring event notifications, monitoring delivery status,\n * and managing external system integrations within the InsurUp platform ecosystem.\n */\n public readonly webhooks: InsurUpWebhookClient;\n\n /**\n * Coverage Management Client\n *\n * Provides coverage management operations for configuring insurance product coverages, managing coverage groups,\n * and retrieving available coverage options for different insurance branches within the InsurUp platform.\n */\n public readonly coverage: InsurUpCoverageClient;\n\n /**\n * Insurance Industry Data Client\n *\n * Provides comprehensive insurance industry data access for retrieving insurance companies, products, resource keys,\n * release notes, and financial institution information essential for platform operations and integrations.\n */\n public readonly insurance: InsurUpInsuranceClient;\n\n /**\n * Proposal Management Client\n *\n * Provides comprehensive proposal management operations for creating insurance proposals, managing proposal lifecycle,\n * document generation, product purchasing, and comparison tools within the insurance sales process.\n */\n public readonly proposals: InsurUpProposalClient;\n\n /**\n * File Management Client\n *\n * Provides file management operations for the InsurUp platform, enabling agents to upload and manage files\n * within the insurance ecosystem.\n */\n public readonly files: InsurUpFileClient;\n\n /**\n * Language Management Client\n *\n * Provides language and localization operations for retrieving available languages in the InsurUp platform.\n * Essential for multi-language support and internationalization features.\n */\n public readonly languages: InsurUpLanguageClient;\n\n /**\n * Template Management Client\n *\n * Provides template management operations for the InsurUp platform, enabling agents to retrieve and update\n * document templates, email templates, and other content templates used in insurance workflows.\n */\n public readonly templates: InsurUpTemplateClient;\n\n public readonly options: InsurUpClientOptions;\n\n constructor(options?: InsurUpClientOptions) {\n this.http = new HttpTransport(options);\n this.graphql = new GraphQLTransport(this.http);\n this.options = options || {};\n\n // Initialize all specialized clients\n this.agents = new InsurUpAgentClient(this.http);\n this.agentBranches = new InsurUpAgentBranchClient(this.http);\n this.agentRoles = new InsurUpAgentRoleClient(this.http);\n this.agentSetup = new InsurUpAgentSetupClient(this.http);\n this.agentUsers = new InsurUpAgentUserClient(this.http, this.graphql);\n this.customers = new InsurUpCustomerClient(this.http, this.graphql);\n this.vehicles = new InsurUpVehicleClient(this.http);\n this.properties = new InsurUpPropertyClient(this.http);\n this.policies = new InsurUpPolicyClient(this.http, this.graphql);\n this.cases = new InsurUpCaseClient(this.http, this.graphql);\n this.webhooks = new InsurUpWebhookClient(this.http, this.graphql);\n this.coverage = new InsurUpCoverageClient(this.http);\n this.insurance = new InsurUpInsuranceClient(this.http);\n this.proposals = new InsurUpProposalClient(this.http, this.graphql);\n this.files = new InsurUpFileClient(this.http);\n this.languages = new InsurUpLanguageClient(this.http);\n this.templates = new InsurUpTemplateClient(this.http);\n }\n}\n"],"mappings":"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","names":["InsurUpClientErrorType","InsurUpServerErrorType","InsurUpGraphQLErrorCode","import_contracts","import_contracts","import_contracts","import_contracts","import_contracts","import_contracts"]}
1
+ {"version":3,"sources":["../src/index.ts","../package.json","../src/version.ts","../src/core/error-types.ts","../src/core/errors.ts","../src/core/result.ts","../src/core/config.ts","../src/core/retry.ts","../src/client/http.ts","../src/client/graphql.ts","../src/core/endpoints.ts","../src/clients/agent.ts","../src/clients/agentBranch.ts","../src/clients/agentRole.ts","../src/clients/agentSetup.ts","../src/clients/agentUser.ts","../src/clients/customer.ts","../src/clients/vehicle.ts","../src/clients/property.ts","../src/clients/policy.ts","../src/clients/case.ts","../src/clients/webhook.ts","../src/clients/coverage.ts","../src/clients/insurance.ts","../src/clients/proposal.ts","../src/clients/file.ts","../src/clients/language.ts","../src/clients/template.ts","../src/client/client.ts"],"sourcesContent":["/**\n * @fileoverview InsurUp TypeScript SDK - Main export file\n * @description Comprehensive TypeScript SDK for InsurUp platform operations\n */\n\n// Version export\nexport { VERSION } from \"./version.js\";\n\n// Main client export\nexport { DefaultInsurUpClient } from \"./client/client.js\";\n\n// GraphQL transport types\nexport type { GraphQLRequest, GraphQLResponse } from \"./client/graphql.js\";\nexport { GraphQLTransport } from \"./client/graphql.js\";\n\n// Specialized client exports\nexport { InsurUpAgentClient } from \"./clients/agent.js\";\nexport { InsurUpAgentBranchClient } from \"./clients/agentBranch.js\";\nexport { InsurUpAgentRoleClient } from \"./clients/agentRole.js\";\nexport { InsurUpAgentSetupClient } from \"./clients/agentSetup.js\";\nexport { InsurUpAgentUserClient } from \"./clients/agentUser.js\";\nexport { InsurUpCustomerClient } from \"./clients/customer.js\";\nexport { InsurUpVehicleClient } from \"./clients/vehicle.js\";\nexport { InsurUpPropertyClient } from \"./clients/property.js\";\nexport { InsurUpPolicyClient } from \"./clients/policy.js\";\nexport { InsurUpCaseClient } from \"./clients/case.js\";\nexport { InsurUpWebhookClient } from \"./clients/webhook.js\";\nexport { InsurUpCoverageClient } from \"./clients/coverage.js\";\nexport { InsurUpInsuranceClient } from \"./clients/insurance.js\";\nexport { InsurUpProposalClient } from \"./clients/proposal.js\";\nexport { InsurUpFileClient } from \"./clients/file.js\";\nexport { InsurUpLanguageClient } from \"./clients/language.js\";\nexport { InsurUpTemplateClient } from \"./clients/template.js\";\n\n// Core types and results\nexport type {\n // REST API result types\n InsurUpResult,\n Success,\n SuccessNoContent,\n ServerError,\n ClientError,\n ValidationError,\n // GraphQL result types\n InsurUpGraphQLResult,\n GraphQLErrors,\n GraphQLErrorItem,\n GraphQLErrorExtensions,\n GraphQLErrorLocation,\n} from \"./core/result.js\";\n\nexport {\n InsurUpServerErrorType,\n InsurUpClientErrorType,\n InsurUpGraphQLErrorCode,\n // REST helpers\n getDataOrThrow,\n throwIfError,\n // GraphQL helpers\n getGraphQLDataOrThrow,\n throwIfGraphQLError,\n createGraphQLErrors,\n} from \"./core/result.js\";\nexport { InsurUpError, extractError } from \"./core/errors.js\";\n\nexport type {\n InsurUpClientOptions,\n TokenProvider,\n RequestConfig,\n RequestInterceptor,\n ResponseInterceptor,\n RequestOptions,\n BackoffStrategy,\n RetryOptions,\n} from \"./core/options.js\";\n\n// Re-export all contract types from @insurup/contracts\nexport * from \"@insurup/contracts\";\n\n// Export endpoint constants for advanced usage\nexport * as Endpoints from \"./core/endpoints.js\";\n","{\n \"name\": \"@insurup/sdk\",\n \"version\": \"0.1.11\",\n \"description\": \"Type-safe TypeScript SDK for the InsurUp insurance platform with GraphQL support. Tree-shakeable, works everywhere.\",\n \"keywords\": [\n \"insurup\",\n \"insurance\",\n \"sdk\",\n \"typescript\",\n \"api-client\",\n \"graphql\",\n \"policy\",\n \"claims\",\n \"coverage\",\n \"vehicle-insurance\",\n \"property-insurance\"\n ],\n \"author\": \"InsurUp Team\",\n \"license\": \"MIT\",\n \"homepage\": \"https://github.com/InsurUp/ts-toolkit#readme\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/InsurUp/ts-toolkit.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/InsurUp/ts-toolkit/issues\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"type\": \"module\",\n \"sideEffects\": false,\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"files\": [\n \"dist\"\n ],\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\",\n \"require\": \"./dist/index.cjs\",\n \"default\": \"./dist/index.js\"\n },\n \"./browser\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.browser.js\",\n \"default\": \"./dist/index.browser.js\"\n }\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"build:tsc\": \"tsc\",\n \"check-types\": \"tsc --noEmit\",\n \"dev\": \"tsup --watch\",\n \"docs\": \"typedoc\",\n \"lint\": \"eslint src test --max-warnings 0\",\n \"test\": \"vitest run\",\n \"test:watch\": \"vitest\",\n \"test:coverage\": \"vitest run --coverage\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.39.2\",\n \"@vitest/coverage-v8\": \"^4.0.17\",\n \"eslint\": \"^9.39.2\",\n \"eslint-config-prettier\": \"^10.1.8\",\n \"eslint-plugin-prettier\": \"^5.5.5\",\n \"msw\": \"^2.12.7\",\n \"prettier\": \"^3.8.0\",\n \"tsup\": \"^8.5.1\",\n \"typedoc\": \"^0.28.16\",\n \"typescript\": \"^5.9.3\",\n \"typescript-eslint\": \"^8.53.1\",\n \"vitest\": \"^4.0.17\"\n },\n \"dependencies\": {\n \"@insurup/contracts\": \"workspace:*\"\n }\n}\n","/**\n * SDK version information.\n * @module version\n */\n\nimport pkg from \"../package.json\" with { type: \"json\" };\n\n/**\n * The current version of the InsurUp SDK.\n * This value is automatically derived from package.json.\n */\nexport const VERSION: string = pkg.version;\n","/**\n * @fileoverview Error Type Enums - Foundational error types used across the SDK\n * @description Centralized error type definitions to avoid circular dependencies\n */\n\n/**\n * Client-side error types that can occur during API operations\n */\nexport enum InsurUpClientErrorType {\n Unknown = \"Unknown\",\n JsonSerialization = \"JsonSerialization\",\n JsonDeserialization = \"JsonDeserialization\",\n NullResponse = \"NullResponse\",\n Timeout = \"Timeout\",\n HttpRequestFailed = \"HttpRequestFailed\",\n UnexpectedNoContent = \"UnexpectedNoContent\",\n GraphQLError = \"GraphQLError\",\n}\n\n/**\n * Server-side error types from HTTP responses\n */\nexport enum InsurUpServerErrorType {\n Unknown = \"Unknown\",\n AccessDenied = \"AccessDenied\",\n BusinessValidation = \"BusinessValidation\",\n FeatureNotSupported = \"FeatureNotSupported\",\n InputValidation = \"InputValidation\",\n ResourceDuplicate = \"ResourceDuplicate\",\n ResourceInvalidState = \"ResourceInvalidState\",\n ResourceNotFound = \"ResourceNotFound\",\n EndpointNotFound = \"EndpointNotFound\",\n UnsupportedMediaType = \"UnsupportedMediaType\",\n MethodNotAllowed = \"MethodNotAllowed\",\n Unauthorized = \"Unauthorized\",\n Upstream = \"Upstream\",\n}\n\n/**\n * GraphQL error codes from the server\n * These match the error codes set by the GraphQL error filter on the backend\n */\nexport enum InsurUpGraphQLErrorCode {\n /** Access denied - user lacks permission */\n Forbidden = \"FORBIDDEN\",\n /** Authentication required or invalid */\n Unauthorized = \"UNAUTHORIZED\",\n /** Requested resource not found */\n NotFound = \"NOT_FOUND\",\n /** Invalid input or business validation failure */\n BadRequest = \"BAD_REQUEST\",\n /** Resource conflict (duplicate or invalid state) */\n Conflict = \"CONFLICT\",\n /** Feature not supported */\n NotSupported = \"NOT_SUPPORTED\",\n /** Upstream service error */\n UpstreamError = \"UPSTREAM_ERROR\",\n /** Internal server error */\n InternalError = \"INTERNAL_ERROR\",\n /** GraphQL validation error */\n ValidationError = \"VALIDATION_ERROR\",\n /** Filter is required for this query */\n FilterRequired = \"FILTER_REQUIRED\",\n /** Filter time span exceeds maximum allowed */\n FilterMaxSpanExceeded = \"FILTER_MAX_SPAN_EXCEEDED\",\n /** Unknown error code */\n Unknown = \"UNKNOWN\",\n}\n","/**\n * @fileoverview Error handling and mapping utilities\n * @description Error type mapping and parsing logic\n */\n\nimport {\n InsurUpServerErrorType,\n InsurUpClientErrorType,\n} from \"./error-types.js\";\nimport type {\n ValidationError} from \"./result.js\";\nimport {\n type ServerError,\n type ClientError,\n type GraphQLErrors,\n} from \"./result.js\";\n\n/**\n * Error type URLs from the API\n */\nconst ERROR_TYPE_URLS = {\n \"https://api.insurup.com/problems/access-denied\":\n InsurUpServerErrorType.AccessDenied,\n \"https://api.insurup.com/problems/business-validation\":\n InsurUpServerErrorType.BusinessValidation,\n \"https://api.insurup.com/problems/feature-not-supported\":\n InsurUpServerErrorType.FeatureNotSupported,\n \"https://api.insurup.com/problems/input-validation\":\n InsurUpServerErrorType.InputValidation,\n \"https://api.insurup.com/problems/resource-duplicate\":\n InsurUpServerErrorType.ResourceDuplicate,\n \"https://api.insurup.com/problems/resource-invalid-state\":\n InsurUpServerErrorType.ResourceInvalidState,\n \"https://api.insurup.com/problems/resource-not-found\":\n InsurUpServerErrorType.ResourceNotFound,\n \"https://api.insurup.com/problems/endpoint-not-found\":\n InsurUpServerErrorType.EndpointNotFound,\n \"https://api.insurup.com/problems/unauthorized\":\n InsurUpServerErrorType.Unauthorized,\n \"https://api.insurup.com/problems/upstream-service\":\n InsurUpServerErrorType.Upstream,\n \"https://api.insurup.com/problems/unsupported-media-type\":\n InsurUpServerErrorType.UnsupportedMediaType,\n \"https://api.insurup.com/problems/method-not-allowed\":\n InsurUpServerErrorType.MethodNotAllowed,\n} as const;\n\n/**\n * Interface representing the server error response structure\n */\ninterface ServerErrorResponse {\n type?: string;\n title?: string;\n detail?: string;\n instance?: string;\n status?: number;\n codes?: string[];\n traceId?: string;\n template?: string;\n templateArgs?: Record<string, unknown>;\n suggestions?: string[];\n validationErrors?: Array<{\n propertyName?: string;\n errorMessage?: string;\n attemptedValue?: unknown;\n }>;\n}\n\n/**\n * Maps a server error type string to the corresponding enum value\n */\nfunction mapServerErrorType(typeString: string): InsurUpServerErrorType {\n const normalizedType = typeString.toLowerCase().trim();\n return (\n ERROR_TYPE_URLS[normalizedType as keyof typeof ERROR_TYPE_URLS] ??\n InsurUpServerErrorType.Unknown\n );\n}\n\n/**\n * Parses validation errors from server response\n */\nfunction parseValidationErrors(\n validationErrors?: Array<{\n propertyName?: string;\n errorMessage?: string;\n attemptedValue?: unknown;\n }>,\n): ValidationError[] {\n if (!validationErrors || !Array.isArray(validationErrors)) {\n return [];\n }\n\n return validationErrors\n .filter((error): error is NonNullable<typeof error> => error != null)\n .map(\n (error): ValidationError => ({\n propertyName: error.propertyName ?? \"\",\n errorMessage: error.errorMessage ?? \"\",\n attemptedValue: error.attemptedValue ?? null,\n }),\n );\n}\n\n/**\n * Parses server error response and creates a ServerError object\n */\nexport function parseServerError(\n response: Response,\n responseBody: string,\n): ServerError {\n let errorData: ServerErrorResponse = {};\n\n // Try to parse JSON response body\n try {\n if (responseBody.trim()) {\n const parsed = JSON.parse(responseBody) as unknown;\n if (typeof parsed === \"object\" && parsed !== null) {\n errorData = parsed as ServerErrorResponse;\n }\n }\n } catch {\n // If JSON parsing fails, create minimal error info from response\n }\n\n const typeString =\n errorData.type ?? \"https://api.insurup.com/problems/unknown\";\n const type = mapServerErrorType(typeString);\n\n return {\n kind: \"server-error\",\n isSuccess: false,\n message:\n errorData.detail ?? (response.statusText || \"Unknown server error\"),\n type,\n typeString,\n title: errorData.title ?? `HTTP ${response.status}`,\n detail: errorData.detail ?? (response.statusText || \"Unknown server error\"),\n instance: errorData.instance ?? \"\",\n status: errorData.status ?? response.status,\n codes: errorData.codes ?? [],\n traceId: errorData.traceId ?? undefined,\n template: errorData.template ?? \"\",\n templateArgs: errorData.templateArgs ?? {},\n suggestions: errorData.suggestions ?? [],\n validationErrors: parseValidationErrors(errorData.validationErrors),\n };\n}\n\n/**\n * Creates a client error for network/timeout issues\n */\nexport function createNetworkError(error: unknown): ClientError {\n if (error instanceof Error) {\n if (error.name === \"AbortError\" || error.message.includes(\"timeout\")) {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Request timed out\",\n type: InsurUpClientErrorType.Timeout,\n error: error,\n };\n }\n\n const messageLower = error.message.toLowerCase();\n if (\n error.name === \"TypeError\" ||\n messageLower.includes(\"fetch\") ||\n messageLower.includes(\"network\") ||\n messageLower.includes(\"failed\") ||\n messageLower.includes(\"econn\") ||\n messageLower.includes(\"enotfound\")\n ) {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"HTTP request failed\",\n type: InsurUpClientErrorType.HttpRequestFailed,\n error: error,\n };\n }\n\n // Default other Error instances to HttpRequestFailed for better DX\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"HTTP request failed\",\n type: InsurUpClientErrorType.HttpRequestFailed,\n error: error,\n };\n }\n\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Unknown error occurred\",\n type: InsurUpClientErrorType.Unknown,\n error: error,\n };\n}\n\n/**\n * Creates a client error for JSON serialization issues\n */\nexport function createSerializationError(error: unknown): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message:\n error instanceof Error\n ? error.message\n : \"Failed to serialize request to JSON\",\n type: InsurUpClientErrorType.JsonSerialization,\n error: error,\n };\n}\n\n/**\n * Creates a client error for JSON deserialization issues\n */\nexport function createDeserializationError(error: unknown): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Failed to parse response JSON\",\n type: InsurUpClientErrorType.JsonDeserialization,\n error: error,\n };\n}\n\n/**\n * Creates a client error for null/empty responses when data was expected\n */\nexport function createNullResponseError(): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Response was empty or null when data was expected\",\n type: InsurUpClientErrorType.NullResponse,\n };\n}\n\n/**\n * Creates a client error for unexpected empty/no-content responses\n * Used when an endpoint that should return data receives 204 or empty body\n */\nexport function createUnexpectedNoContentError(): ClientError {\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: \"Expected response data but received no content\",\n type: InsurUpClientErrorType.UnexpectedNoContent,\n };\n}\n\nexport function extractError(\n error: Error,\n): ClientError | ServerError | GraphQLErrors {\n if (error instanceof InsurUpError) {\n return error.error;\n }\n\n return {\n kind: \"client-error\",\n isSuccess: false,\n message: error.message,\n type: InsurUpClientErrorType.Unknown,\n } as ClientError;\n}\n\n/**\n * Custom InsurUp error class that extends the standard Error\n */\nexport class InsurUpError extends Error {\n /**\n * The original client, server, or GraphQL error object\n */\n public readonly error: ClientError | ServerError | GraphQLErrors;\n\n constructor(error: ClientError | ServerError | GraphQLErrors) {\n super(error.message);\n this.name = \"InsurUpError\";\n this.error = error;\n }\n}\n","/**\n * @fileoverview InsurUp Result Types - Type-safe discriminated unions for operation results\n * @description Type-safe discriminated unions for operation results\n */\n\nimport { InsurUpError } from \"./errors.js\";\nimport {\n InsurUpClientErrorType,\n InsurUpServerErrorType,\n InsurUpGraphQLErrorCode,\n} from \"./error-types.js\";\n\n/**\n * Represents a validation error that occurred during request processing\n */\nexport interface ValidationError {\n /**\n * The name of the property that failed validation\n * The name of the property.\n */\n readonly propertyName: string;\n\n /**\n * The error message describing what went wrong\n * The error message\n */\n readonly errorMessage: string;\n\n /**\n * The property value that caused the validation failure\n * The property value that caused the failure.\n */\n readonly attemptedValue: unknown;\n}\n\n// Re-export error types for convenience\nexport {\n InsurUpClientErrorType,\n InsurUpServerErrorType,\n InsurUpGraphQLErrorCode,\n};\n\n/**\n * Represents a successful operation with data\n */\nexport interface Success<T> {\n readonly kind: \"success\";\n readonly isSuccess: true;\n readonly message: \"Success\";\n readonly data: T;\n}\n\n/**\n * Represents a successful operation without data (e.g., 204 No Content)\n */\nexport interface SuccessNoContent {\n readonly kind: \"success\";\n readonly isSuccess: true;\n readonly message: \"Success\";\n}\n\n/**\n * Represents an error response from the server (4xx and 5xx HTTP status codes)\n */\nexport interface ServerError {\n readonly kind: \"server-error\";\n readonly isSuccess: false;\n readonly message: string;\n readonly type: InsurUpServerErrorType;\n readonly typeString: string;\n readonly title: string;\n readonly detail: string;\n readonly instance: string;\n readonly status: number;\n readonly codes: readonly string[];\n readonly traceId: string | undefined;\n readonly template: string;\n readonly templateArgs: Readonly<Record<string, unknown>>;\n readonly suggestions: readonly string[];\n readonly validationErrors: readonly ValidationError[];\n}\n\n/**\n * Represents a client-side error (exceptions, null JSON responses, etc.)\n */\nexport interface ClientError {\n readonly kind: \"client-error\";\n readonly isSuccess: false;\n readonly message: string;\n readonly type: InsurUpClientErrorType;\n readonly error?: unknown;\n}\n\n// ============================================\n// GraphQL Error Types\n// ============================================\n\n/**\n * Represents the location of an error in a GraphQL document\n */\nexport interface GraphQLErrorLocation {\n readonly line: number;\n readonly column: number;\n}\n\n/**\n * Extensions attached to GraphQL errors by the server\n * Contains structured error information from the backend error filter\n */\nexport interface GraphQLErrorExtensions {\n /** The error code (e.g., FORBIDDEN, UNAUTHORIZED, NOT_FOUND) */\n readonly code?: InsurUpGraphQLErrorCode;\n /** Trace ID for debugging/correlation */\n readonly traceId?: string;\n /** Array of error codes from the backend AppException */\n readonly codes?: readonly string[];\n /** Message template for localization */\n readonly template?: string;\n /** Arguments for the message template */\n readonly templateArgs?: Readonly<Record<string, unknown>>;\n /** Suggested actions or fixes */\n readonly suggestions?: readonly string[];\n /** Additional extension fields */\n readonly [key: string]: unknown;\n}\n\n/**\n * Represents a single GraphQL error item\n */\nexport interface GraphQLErrorItem {\n /** The error message */\n readonly message: string;\n /** Locations in the GraphQL document where the error occurred */\n readonly locations?: readonly GraphQLErrorLocation[];\n /** Path to the field that caused the error */\n readonly path?: readonly (string | number)[];\n /** Extensions containing additional error information */\n readonly extensions?: GraphQLErrorExtensions;\n}\n\n/**\n * Represents a GraphQL error response containing one or more errors\n */\nexport interface GraphQLErrors {\n readonly kind: \"graphql-error\";\n readonly isSuccess: false;\n /** First error message for convenience */\n readonly message: string;\n /** All GraphQL errors from the response */\n readonly errors: readonly GraphQLErrorItem[];\n}\n\n/**\n * Discriminated union representing the result of a GraphQL operation\n *\n * Similar to InsurUpResult but uses GraphQLErrors instead of ServerError\n * since GraphQL errors have a different schema and can contain multiple errors.\n *\n * @template T The type of the success data (void for no-content operations)\n */\nexport type InsurUpGraphQLResult<T = void> = T extends void\n ? SuccessNoContent | GraphQLErrors | ClientError\n : Success<T> | GraphQLErrors | ClientError;\n\n/**\n * Discriminated union representing the result of an InsurUp operation\n *\n * When called without a type parameter (InsurUpResult), represents a no-content result\n * where the success case has no data field.\n *\n * When called with a type parameter (InsurUpResult<T>), represents a result with data\n * where the success case has a data field of type T.\n *\n * @template T The type of the success data (void for no-content operations)\n */\nexport type InsurUpResult<T = void> = T extends void\n ? SuccessNoContent | ServerError | ClientError\n : Success<T> | ServerError | ClientError;\n\n/**\n * Creates a successful result with data\n */\nexport function createSuccess<T>(data: T): Success<T> {\n return {\n kind: \"success\",\n isSuccess: true,\n message: \"Success\",\n data,\n };\n}\n\n/**\n * Creates a successful result without data (for 204 No Content responses)\n */\nexport function createSuccessNoContent(): SuccessNoContent {\n return {\n kind: \"success\",\n isSuccess: true,\n message: \"Success\",\n };\n}\n\n/**\n * Helper type to extract data type from a Success result\n */\nexport type ExtractSuccessData<R> = R extends Success<infer T> ? T : never;\n\n/**\n * Extracts data from a successful result or throws an InsurUpError\n * Only works with InsurUpResult<T> where T is not void\n */\nexport function getDataOrThrow<T>(result: InsurUpResult<T>): T {\n if (result.isSuccess) {\n // When T is not void, result.isSuccess means result is Success<T>\n return (result as unknown as Success<T>).data;\n }\n throw new InsurUpError(result);\n}\n\n/**\n * Throws an InsurUpError if the result is not successful\n * Works with any InsurUpResult type\n */\nexport function throwIfError(\n result: InsurUpResult<unknown> | InsurUpResult,\n): void {\n if (result.isSuccess) {\n return;\n }\n throw new InsurUpError(result);\n}\n\n// ============================================\n// GraphQL Result Helpers\n// ============================================\n\n/**\n * Extracts data from a successful GraphQL result or throws an InsurUpError\n * Only works with InsurUpGraphQLResult<T> where T is not void\n */\nexport function getGraphQLDataOrThrow<T>(result: InsurUpGraphQLResult<T>): T {\n if (result.isSuccess) {\n return (result as unknown as Success<T>).data;\n }\n throw new InsurUpError(result);\n}\n\n/**\n * Throws an InsurUpError if the GraphQL result is not successful\n * Works with any InsurUpGraphQLResult type\n */\nexport function throwIfGraphQLError(\n result: InsurUpGraphQLResult<unknown> | InsurUpGraphQLResult,\n): void {\n if (result.isSuccess) {\n return;\n }\n throw new InsurUpError(result);\n}\n\n/**\n * Creates a GraphQL errors result from an array of GraphQL error items\n */\nexport function createGraphQLErrors(\n errors: readonly GraphQLErrorItem[],\n): GraphQLErrors {\n return {\n kind: \"graphql-error\",\n isSuccess: false,\n message: errors[0]?.message ?? \"Unknown GraphQL error\",\n errors,\n };\n}\n","/**\n * @fileoverview SDK Configuration - Default values and configuration constants\n * @description Default configuration values for the InsurUp SDK client\n */\n\nimport type {\n InsurUpClientOptions,\n RetryOptions,\n TokenProvider,\n RequestInterceptor,\n ResponseInterceptor,\n} from \"./options.js\";\n\n/**\n * Default retry options for transient failure handling\n * Based on standard exponential backoff defaults with InsurUp-specific settings\n */\nexport const DEFAULT_RETRY_OPTIONS: Required<RetryOptions> = {\n retries: 3,\n factor: 2,\n minTimeout: 1000,\n maxTimeout: 10000,\n randomize: true,\n backoffStrategy: \"exponential\",\n retryableStatusCodes: [408, 429, 500, 502, 503, 504],\n onFailedAttempt: () => {}, // No-op by default\n} as const;\n\n/**\n * Default logger implementation using console\n */\nexport const DEFAULT_LOGGER = {\n info: (message: string, data?: unknown) => {\n if (data !== undefined) {\n console.info(message, data);\n } else {\n console.info(message);\n }\n },\n warn: (message: string, data?: unknown) => {\n if (data !== undefined) {\n console.warn(message, data);\n } else {\n console.warn(message);\n }\n },\n error: (message: string, data?: unknown) => {\n if (data !== undefined) {\n console.error(message, data);\n } else {\n console.error(message);\n }\n },\n} as const;\n\n/**\n * Required client options type (tokenProvider, onRequest, onResponse, retry remain optional)\n */\nexport type RequiredClientOptions = Required<\n Omit<\n InsurUpClientOptions,\n \"tokenProvider\" | \"onRequest\" | \"onResponse\" | \"retry\"\n >\n> & {\n tokenProvider?: TokenProvider;\n onRequest?: RequestInterceptor;\n onResponse?: ResponseInterceptor;\n retry?: Required<RetryOptions>;\n};\n\n/**\n * Default configuration values for the InsurUp SDK client\n */\nexport const DEFAULT_CLIENT_OPTIONS: RequiredClientOptions = {\n baseUrl: \"https://api.insurup.com/api/\",\n customHeaders: {},\n userAgent: \"@insurup/sdk\",\n timeoutMs: 30000,\n logLevel: \"none\",\n logger: DEFAULT_LOGGER,\n retry: undefined,\n tokenProvider: undefined,\n onRequest: undefined,\n onResponse: undefined,\n} as const;\n\n/**\n * Merges user-provided options with defaults\n * @param options User-provided options\n * @returns Complete options object with defaults applied\n */\nexport function mergeWithDefaults(\n options?: InsurUpClientOptions,\n): RequiredClientOptions {\n return {\n baseUrl: options?.baseUrl ?? DEFAULT_CLIENT_OPTIONS.baseUrl,\n customHeaders: {\n ...DEFAULT_CLIENT_OPTIONS.customHeaders,\n ...options?.customHeaders,\n },\n userAgent: options?.userAgent ?? DEFAULT_CLIENT_OPTIONS.userAgent,\n timeoutMs: options?.timeoutMs ?? DEFAULT_CLIENT_OPTIONS.timeoutMs,\n logLevel: options?.logLevel ?? DEFAULT_CLIENT_OPTIONS.logLevel,\n logger: options?.logger ?? DEFAULT_CLIENT_OPTIONS.logger,\n retry: options?.retry\n ? { ...DEFAULT_RETRY_OPTIONS, ...options.retry }\n : undefined,\n tokenProvider: options?.tokenProvider,\n onRequest: options?.onRequest,\n onResponse: options?.onResponse,\n };\n}\n","/**\n * @fileoverview Lightweight retry utility for transient failure handling\n * @description Provides configurable backoff strategies with jitter, zero-dependency replacement for p-retry\n */\n\nimport type { RetryOptions } from \"./options.js\";\n\n/**\n * Executes a function with configurable backoff retry logic\n * @template T The return type of the function\n * @param fn The function to execute, receives attempt number (1-based)\n * @param options Retry configuration options\n * @returns Promise resolving to the function's result\n * @throws The last error encountered if all retry attempts fail\n */\nexport async function withRetry<T>(\n fn: (attemptNumber: number) => Promise<T>,\n options: Required<RetryOptions>,\n): Promise<T> {\n const {\n retries,\n factor,\n minTimeout,\n maxTimeout,\n randomize,\n backoffStrategy,\n onFailedAttempt,\n } = options;\n\n let attempt = 1;\n\n while (true) {\n try {\n return await fn(attempt);\n } catch (error) {\n const isLastAttempt = attempt > retries;\n\n if (isLastAttempt) {\n throw error;\n }\n\n // Calculate delay based on backoff strategy\n let delay: number;\n switch (backoffStrategy) {\n case \"linear\":\n delay = minTimeout * attempt;\n break;\n case \"constant\":\n delay = minTimeout;\n break;\n case \"exponential\":\n default:\n delay = minTimeout * Math.pow(factor, attempt - 1);\n }\n\n // Apply jitter if enabled\n if (randomize) {\n // Random factor between 1 and 2, matching p-retry behavior\n delay *= 1 + Math.random();\n }\n\n // Cap at maxTimeout\n delay = Math.min(delay, maxTimeout);\n\n // Notify callback\n if (onFailedAttempt) {\n onFailedAttempt({\n attemptNumber: attempt,\n retriesLeft: retries - attempt + 1,\n name: error instanceof Error ? error.name : \"Error\",\n message: error instanceof Error ? error.message : String(error),\n error: error instanceof Error ? error : new Error(String(error)),\n });\n }\n\n // Wait before next attempt\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n attempt++;\n }\n }\n}\n","/**\n * @fileoverview HTTP Transport Layer - Fetch-based HTTP client\n * @description Cross-environment HTTP transport with timeout support and error handling\n */\n\nimport type { InsurUpResult } from \"../core/result.js\";\nimport {\n createSuccess,\n createSuccessNoContent,\n InsurUpClientErrorType,\n} from \"../core/result.js\";\nimport {\n parseServerError,\n createNetworkError,\n createSerializationError,\n createDeserializationError,\n createUnexpectedNoContentError,\n} from \"../core/errors.js\";\nimport type {\n InsurUpClientOptions,\n RequestConfig,\n RequestOptions,\n} from \"../core/options.js\";\nimport {\n mergeWithDefaults,\n type RequiredClientOptions,\n} from \"../core/config.js\";\nimport { withRetry } from \"../core/retry.js\";\n\n/**\n * HTTP method types\n */\nexport type HttpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\";\n\n/**\n * Valid request body types for HTTP requests\n */\nexport type RequestBody = unknown | FormData;\n\n/**\n * Error type that built-in retry can understand\n */\ninterface RetryableError extends Error {\n result: InsurUpResult<unknown> | InsurUpResult;\n attemptNumber: number;\n}\n\n/**\n * HTTP transport class providing fetch-based request capabilities\n * with environment detection and timeout support\n */\nexport class HttpTransport {\n private readonly options: RequiredClientOptions;\n\n constructor(options?: InsurUpClientOptions) {\n this.options = mergeWithDefaults(options);\n }\n\n /**\n * Sends an HTTP request and returns the parsed result\n * @template T The expected response type (void for no-content operations)\n * @param method HTTP method\n * @param path Relative path (will be prefixed with baseUrl)\n * @param body Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @param expectContent Whether the response should contain data (internal use)\n * @returns Promise resolving to InsurUpResult<T>\n */\n private async sendInternal<T>(\n method: HttpMethod,\n path: string,\n body?: RequestBody,\n options?: RequestOptions,\n expectContent: boolean = true,\n ): Promise<InsurUpResult<T> | InsurUpResult> {\n const startTime = Date.now();\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n\n // Build initial request config for interceptors\n let requestConfig: RequestConfig = {\n url,\n method,\n headers: { ...this.options.customHeaders, ...options?.headers },\n body,\n };\n\n // Call request interceptor if provided\n if (this.options.onRequest) {\n try {\n requestConfig = await this.options.onRequest(requestConfig);\n } catch (error) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Request interceptor failed:\", error);\n }\n }\n }\n\n this.logRequest(method, path, body, options?.headers);\n\n const executeRequest = async (\n attemptNumber: number,\n ): Promise<InsurUpResult<T> | InsurUpResult> => {\n try {\n const result = await this.sendSingleRequest<T>(\n requestConfig.method as HttpMethod,\n path,\n requestConfig.body,\n {\n headers: requestConfig.headers,\n signal: options?.signal,\n timeoutMs: options?.timeoutMs,\n },\n expectContent,\n );\n\n // If it's a success, return it\n if (result.kind === \"success\") {\n return result;\n }\n\n // Check if this error should be retried\n if (this.shouldRetryResult(result)) {\n const error = new Error(result.message) as RetryableError;\n error.result = result;\n error.attemptNumber = attemptNumber;\n\n throw error;\n }\n\n // Non-retryable error, return it directly\n return result;\n } catch (rawError) {\n // Handle raw errors from fetch (like timeout errors)\n const networkError = createNetworkError(rawError);\n\n // Don't retry timeout errors\n if (networkError.type === InsurUpClientErrorType.Timeout) {\n return networkError;\n }\n\n // Only retry HttpRequestFailed errors\n if (\n networkError.type === InsurUpClientErrorType.HttpRequestFailed &&\n this.options.retry\n ) {\n const error = new Error(networkError.message) as RetryableError;\n error.result = networkError;\n error.attemptNumber = attemptNumber;\n\n throw error;\n }\n\n // Non-retryable error, return it directly\n return networkError;\n }\n };\n\n try {\n let result: InsurUpResult<T> | InsurUpResult;\n\n if (this.options.retry) {\n result = await withRetry(executeRequest, {\n ...this.options.retry,\n onFailedAttempt: (error) => {\n const originalError = error.error as RetryableError;\n if (originalError.result) {\n this.logRetry(error.attemptNumber, originalError.result);\n }\n\n // Call user's onFailedAttempt if provided\n if (this.options.retry?.onFailedAttempt) {\n this.options.retry.onFailedAttempt(error);\n }\n },\n });\n } else {\n result = await executeRequest(1);\n }\n\n const duration = Date.now() - startTime;\n this.logResponse(\"SUCCESS\", duration, 1, result);\n\n // Call response interceptor if provided\n if (this.options.onResponse) {\n try {\n return (await this.options.onResponse(\n result as InsurUpResult<unknown>,\n requestConfig,\n )) as InsurUpResult<T> | InsurUpResult;\n } catch (error) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Response interceptor failed:\", error);\n }\n }\n }\n\n return result;\n } catch (error) {\n const duration = Date.now() - startTime;\n // If it's our custom error with a result, use that\n const retryableError = error as RetryableError;\n if (retryableError.result) {\n this.logResponse(\n \"ERROR\",\n duration,\n retryableError.attemptNumber || 1,\n retryableError.result,\n );\n\n // Call response interceptor for errors too\n if (this.options.onResponse) {\n try {\n return (await this.options.onResponse(\n retryableError.result as InsurUpResult<unknown>,\n requestConfig,\n )) as InsurUpResult<T> | InsurUpResult;\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return retryableError.result as InsurUpResult<T> | InsurUpResult;\n }\n\n // Otherwise, it's a network error\n const networkError = createNetworkError(error);\n this.logResponse(\"ERROR\", duration, 1, networkError);\n\n // Call response interceptor for network errors too\n if (this.options.onResponse) {\n try {\n return (await this.options.onResponse(\n networkError as InsurUpResult<unknown>,\n requestConfig,\n )) as InsurUpResult<T> | InsurUpResult;\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return networkError;\n }\n }\n\n /**\n * Sends a single HTTP request without retry logic\n */\n private async sendSingleRequest<T>(\n method: HttpMethod,\n path: string,\n body?: RequestBody,\n options?: RequestOptions,\n expectContent: boolean = true,\n ): Promise<InsurUpResult<T> | InsurUpResult> {\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n const requestHeaders = await this.buildHeaders(options?.headers);\n\n // Serialize request body\n let serializedBody: string | FormData | null = null;\n if (body) {\n if (body instanceof FormData) {\n // Don't serialize FormData - let browser set Content-Type with boundary\n serializedBody = body;\n } else {\n try {\n serializedBody = JSON.stringify(body);\n // Set Content-Type header for JSON requests\n if (!this.hasContentTypeHeader(requestHeaders)) {\n requestHeaders[\"Content-Type\"] = \"application/json\";\n }\n } catch (error) {\n return createSerializationError(error);\n }\n }\n }\n\n // Create AbortController for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(),\n options?.timeoutMs ?? this.options.timeoutMs,\n );\n\n // Bridge external signal (if provided) to our controller\n let signalCleanup: (() => void) | undefined;\n if (options?.signal) {\n if (options.signal.aborted) {\n controller.abort();\n } else {\n const abortHandler = () => controller.abort();\n options.signal.addEventListener(\"abort\", abortHandler, { once: true });\n signalCleanup = () =>\n options.signal!.removeEventListener(\"abort\", abortHandler);\n }\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method,\n headers: requestHeaders,\n body: serializedBody,\n signal: controller.signal,\n });\n } finally {\n clearTimeout(timeoutId);\n signalCleanup?.();\n }\n\n return await this.handleResponse<T>(response, expectContent);\n }\n\n /**\n * Convenience method for GET requests - always expects content\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n */\n async get<T>(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"GET\", path, null, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * POST request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async post<T>(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"POST\", path, data, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * POST request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async postNoContent(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"POST\",\n path,\n data,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * PUT request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async put<T>(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"PUT\", path, data, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * PUT request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async putNoContent(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"PUT\",\n path,\n data,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * PATCH request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async patch<T>(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"PATCH\", path, data, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * PATCH request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param data Optional request body\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async patchNoContent(\n path: string,\n data?: RequestBody,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"PATCH\",\n path,\n data,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * DELETE request expecting a response with data\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<T> with response data\n */\n async delete<T>(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<T>> {\n return this.sendInternal<T>(\"DELETE\", path, null, options, true) as Promise<\n InsurUpResult<T>\n >;\n }\n\n /**\n * DELETE request expecting no response content (204 No Content)\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult (no data)\n */\n async deleteNoContent(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.sendInternal(\n \"DELETE\",\n path,\n null,\n options,\n false,\n ) as Promise<InsurUpResult>;\n }\n\n /**\n * Downloads a binary file as a Blob\n * Use this for downloading documents, images, or other binary content\n * @param path Relative path (will be prefixed with baseUrl)\n * @param options Optional request options (headers, signal, timeoutMs)\n * @returns Promise resolving to InsurUpResult<Blob>\n */\n async getBlob(\n path: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<Blob>> {\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n const requestHeaders = await this.buildHeaders(options?.headers);\n\n // Build request config for interceptors\n let requestConfig: RequestConfig = {\n url,\n method: \"GET\",\n headers: requestHeaders,\n };\n\n // Call request interceptor if provided\n if (this.options.onRequest) {\n try {\n requestConfig = await this.options.onRequest(requestConfig);\n } catch (error) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Request interceptor failed:\", error);\n }\n }\n }\n\n this.logRequest(\"GET\", path, undefined, options?.headers);\n\n // Create AbortController for timeout\n const controller = new AbortController();\n const timeoutId = setTimeout(\n () => controller.abort(),\n options?.timeoutMs ?? this.options.timeoutMs,\n );\n\n // Bridge external signal (if provided) to our controller\n let signalCleanup: (() => void) | undefined;\n if (options?.signal) {\n if (options.signal.aborted) {\n controller.abort();\n } else {\n const abortHandler = () => controller.abort();\n options.signal.addEventListener(\"abort\", abortHandler, { once: true });\n signalCleanup = () =>\n options.signal!.removeEventListener(\"abort\", abortHandler);\n }\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: \"GET\",\n headers: requestConfig.headers,\n signal: controller.signal,\n });\n } catch (error) {\n // Cleanup is handled by finally block\n const networkError = createNetworkError(error);\n\n // Call response interceptor for errors\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(networkError, requestConfig);\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return networkError;\n } finally {\n clearTimeout(timeoutId);\n signalCleanup?.();\n }\n\n // Handle non-success HTTP status codes\n if (!response.ok) {\n const errorText = await response.text();\n const serverError = parseServerError(response, errorText);\n\n // Call response interceptor for errors\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(serverError, requestConfig);\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return serverError;\n }\n\n // Return the blob\n try {\n const blob = await response.blob();\n const result = createSuccess(blob);\n\n // Call response interceptor\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(result, requestConfig);\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return result;\n } catch (error) {\n const deserializationError = createDeserializationError(error);\n\n // Call response interceptor for errors\n if (this.options.onResponse) {\n try {\n return await this.options.onResponse(\n deserializationError,\n requestConfig,\n );\n } catch (interceptorError) {\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\n \"Response interceptor failed:\",\n interceptorError,\n );\n }\n }\n }\n\n return deserializationError;\n }\n }\n\n /**\n * Builds request headers including defaults and custom headers\n * Invokes token provider if available and adds Authorization header\n */\n private async buildHeaders(\n additionalHeaders?: Record<string, string>,\n ): Promise<Record<string, string>> {\n const headers: Record<string, string> = {\n ...this.options.customHeaders,\n ...additionalHeaders,\n };\n\n // Set User-Agent in environments where it's allowed (Node.js)\n // Use type-safe check for browser environment\n const isBrowser =\n typeof globalThis === \"object\" && \"window\" in globalThis;\n if (!isBrowser && this.options.userAgent) {\n headers[\"User-Agent\"] = this.options.userAgent;\n }\n\n // Add Authorization header if token provider is available\n if (this.options.tokenProvider) {\n try {\n const token = await this.options.tokenProvider();\n if (token) {\n headers[\"Authorization\"] = `Bearer ${token}`;\n }\n } catch (error) {\n // Log token provider error but don't fail the request\n if (this.options.logLevel !== \"none\") {\n this.options.logger.warn(\"Token provider failed:\", error);\n }\n }\n }\n\n return headers;\n }\n\n /**\n * Checks if Content-Type header is present (case-insensitive)\n */\n private hasContentTypeHeader(headers: Record<string, string>): boolean {\n return Object.keys(headers).some(\n (key) => key.toLowerCase() === \"content-type\",\n );\n }\n\n /**\n * Checks if a content type is a valid JSON content type\n */\n private isJsonContentType(contentType: string): boolean {\n const lowerContentType = contentType.toLowerCase();\n return (\n lowerContentType.includes(\"application/json\") ||\n lowerContentType.includes(\"application/vnd.api+json\") ||\n lowerContentType.includes(\"application/hal+json\") ||\n lowerContentType.includes(\"application/problem+json\") ||\n lowerContentType.includes(\"text/json\") ||\n /^application\\/.*\\+json/i.test(contentType)\n );\n }\n\n /**\n * Handles HTTP response and converts to InsurUpResult\n * @param response The fetch Response object\n * @param expectContent Whether the caller expects response data\n */\n private async handleResponse<T>(\n response: Response,\n expectContent: boolean,\n ): Promise<InsurUpResult<T> | InsurUpResult> {\n // Handle non-success HTTP status codes first\n if (!response.ok) {\n const errorText = await response.text();\n return parseServerError(response, errorText);\n }\n\n // No Content responses (204, 205)\n if (response.status === 204 || response.status === 205) {\n if (expectContent) {\n return createUnexpectedNoContentError();\n }\n return createSuccessNoContent();\n }\n\n // Get response text first to determine if it's empty\n const responseText = await response.text();\n\n // Handle empty response body\n if (!responseText.trim()) {\n if (expectContent) {\n return createUnexpectedNoContentError();\n }\n return createSuccessNoContent();\n }\n\n // For non-empty responses, validate Content-Type\n const contentType = response.headers.get(\"content-type\");\n if (contentType && !this.isJsonContentType(contentType)) {\n return createDeserializationError(\n new Error(`Expected JSON response but got ${contentType}`),\n );\n }\n\n // Parse the JSON response\n return this.parseSuccessResponse<T>(responseText);\n }\n\n /**\n * Parses successful JSON response body\n */\n private parseSuccessResponse<T>(\n responseText: string,\n ): InsurUpResult<T> | InsurUpResult {\n try {\n const data = JSON.parse(responseText) as T;\n return createSuccess(data);\n } catch (error) {\n return createDeserializationError(error);\n }\n }\n\n /**\n * Determines if a result should be retried\n */\n private shouldRetryResult(\n result: InsurUpResult<unknown> | InsurUpResult,\n ): boolean {\n if (!this.options.retry) {\n return false;\n }\n\n // Retry server errors with retryable status codes\n if (result.kind === \"server-error\") {\n return this.options.retry.retryableStatusCodes.includes(result.status);\n }\n\n // Retry client errors for network issues but not timeouts\n if (result.kind === \"client-error\") {\n return result.type === InsurUpClientErrorType.HttpRequestFailed;\n }\n\n return false;\n }\n\n /**\n * Logs outgoing request details\n */\n private logRequest(\n method: HttpMethod,\n path: string,\n body?: RequestBody,\n headers?: Record<string, string>,\n ): void {\n if (this.options.logLevel === \"none\") {\n return;\n }\n\n const url = `${this.options.baseUrl.replace(/\\/$/, \"\")}/${path.replace(/^\\//, \"\")}`;\n\n if (this.options.logLevel === \"basic\") {\n this.options.logger.info(`${method} ${url}`);\n } else if (this.options.logLevel === \"detailed\") {\n // Only compute sanitized values when detailed logging is enabled\n const sanitizedHeaders = this.sanitizeHeaders(headers);\n const sanitizedBody = this.sanitizeBody(body);\n this.options.logger.info(`Request: ${method} ${url}`, {\n headers: sanitizedHeaders,\n body: sanitizedBody,\n });\n }\n }\n\n /**\n * Logs response details\n */\n private logResponse(\n status: \"SUCCESS\" | \"ERROR\",\n duration: number,\n attempt: number,\n result: InsurUpResult<unknown> | InsurUpResult,\n ): void {\n if (this.options.logLevel === \"none\") {\n return;\n }\n\n const attemptInfo = attempt > 1 ? ` (attempt ${attempt})` : \"\";\n\n if (this.options.logLevel === \"basic\") {\n if (status === \"SUCCESS\") {\n this.options.logger.info(`${status} in ${duration}ms${attemptInfo}`);\n } else {\n this.options.logger.error(`${status} in ${duration}ms${attemptInfo}`);\n }\n } else if (this.options.logLevel === \"detailed\") {\n // Only compute sanitized values when detailed logging is enabled\n if (status === \"SUCCESS\") {\n const data =\n result.kind === \"success\" && \"data\" in result\n ? this.sanitizeResponseData(result.data)\n : undefined;\n this.options.logger.info(\n `Response: ${status} in ${duration}ms${attemptInfo}`,\n { data },\n );\n } else {\n const sanitizedError = this.sanitizeError(result);\n this.options.logger.error(\n `Response: ${status} in ${duration}ms${attemptInfo}`,\n { error: sanitizedError },\n );\n }\n }\n }\n\n /**\n * Logs retry attempt\n */\n private logRetry(\n attemptNumber: number,\n result: InsurUpResult<unknown> | InsurUpResult,\n ): void {\n if (this.options.logLevel === \"none\") {\n return;\n }\n\n const reason =\n result.kind === \"server-error\"\n ? `HTTP ${result.status}`\n : result.kind === \"client-error\"\n ? result.type\n : \"Unknown error\";\n\n this.options.logger.warn(\n `Retry attempt ${attemptNumber} failed due to: ${reason}`,\n );\n }\n\n /**\n * Sanitizes headers for logging (removes sensitive information)\n */\n private sanitizeHeaders(\n headers?: Record<string, string>,\n ): Record<string, string> | undefined {\n if (!headers) {\n return undefined;\n }\n\n const sanitized: Record<string, string> = {};\n const sensitiveHeaders = [\n \"authorization\",\n \"cookie\",\n \"x-api-key\",\n \"x-auth-token\",\n ];\n\n for (const [key, value] of Object.entries(headers)) {\n const lowerKey = key.toLowerCase();\n if (sensitiveHeaders.includes(lowerKey)) {\n sanitized[key] = \"[REDACTED]\";\n } else {\n sanitized[key] = value;\n }\n }\n\n return sanitized;\n }\n\n /**\n * Sanitizes request body for logging with memory-efficient handling\n */\n private sanitizeBody(body?: RequestBody): unknown {\n if (!body) {\n return undefined;\n }\n\n // Handle FormData\n if (body instanceof FormData) {\n return \"[FormData body]\";\n }\n\n // Handle string bodies efficiently\n if (typeof body === \"string\") {\n if (body.length > 10000) {\n return \"[Large string body - truncated for logging]\";\n }\n return body.length > 1000\n ? `${body.substring(0, 1000)}... [truncated]`\n : body;\n }\n\n // Handle primitive types\n if (typeof body === \"number\" || typeof body === \"boolean\") {\n return body;\n }\n\n // For objects/arrays, use memory-efficient serialization\n try {\n // Quick size estimation to avoid expensive stringification of large objects\n if (this.isLargeObject(body)) {\n return \"[Large object body - truncated for logging]\";\n }\n\n const stringified = JSON.stringify(body);\n return stringified.length > 1000\n ? `${stringified.substring(0, 1000)}... [truncated]`\n : body;\n } catch {\n return \"[Unable to serialize body]\";\n }\n }\n\n /**\n * Efficiently estimates if an object is large without full serialization\n */\n private isLargeObject(obj: unknown): boolean {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n\n try {\n // Quick heuristic: count properties and nested levels\n let propertyCount = 0;\n let maxDepth = 0;\n\n const countProperties = (item: unknown, depth = 0): boolean => {\n if (depth > 3) return true; // Too deep\n if (propertyCount > 50) return true; // Too many properties\n\n maxDepth = Math.max(maxDepth, depth);\n\n if (Array.isArray(item)) {\n if (item.length > 100) return true; // Large array\n for (let i = 0; i < Math.min(item.length, 10); i++) {\n if (countProperties(item[i], depth + 1)) return true;\n }\n } else if (item && typeof item === \"object\") {\n const keys = Object.keys(item);\n propertyCount += keys.length;\n\n for (const key of keys.slice(0, 10)) {\n // Check first 10 properties\n if (\n countProperties((item as Record<string, unknown>)[key], depth + 1)\n )\n return true;\n }\n }\n\n return false;\n };\n\n return countProperties(obj);\n } catch {\n // If estimation fails, assume it might be large\n return true;\n }\n }\n\n /**\n * Sanitizes response data for logging with memory-efficient handling\n */\n private sanitizeResponseData(data: unknown): unknown {\n if (data === null || data === undefined) {\n return data;\n }\n\n try {\n // Use the same efficient large object detection\n if (this.isLargeObject(data)) {\n return \"[Large response data - truncated for logging]\";\n }\n\n const stringified = JSON.stringify(data);\n return stringified.length > 1000\n ? `${stringified.substring(0, 1000)}... [truncated]`\n : data;\n } catch {\n return \"[Unable to serialize response data]\";\n }\n }\n\n /**\n * Sanitizes error information for logging\n */\n private sanitizeError(\n result: InsurUpResult<unknown> | InsurUpResult,\n ): unknown {\n if (result.kind === \"server-error\") {\n return {\n type: result.type,\n status: result.status,\n title: result.title,\n detail: result.detail,\n traceId: result.traceId,\n };\n }\n\n if (result.kind === \"client-error\") {\n return {\n type: result.type,\n message: result.message,\n };\n }\n\n return { message: \"Unknown error type\" };\n }\n}\n","/**\n * @fileoverview GraphQL Transport Layer - Fetch-based GraphQL client\n * @description GraphQL transport with error handling and type safety\n */\n\nimport type {\n InsurUpGraphQLResult,\n GraphQLErrorItem,\n GraphQLErrorExtensions,\n GraphQLErrorLocation,\n} from \"../core/result.js\";\nimport {\n createSuccess,\n createGraphQLErrors,\n InsurUpGraphQLErrorCode,\n} from \"../core/result.js\";\nimport { createDeserializationError } from \"../core/errors.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type { HttpTransport } from \"./http.js\";\n\n/**\n * Raw GraphQL error from the server response\n */\ninterface RawGraphQLError {\n message: string;\n locations?: Array<{ line: number; column: number }>;\n path?: (string | number)[];\n extensions?: Record<string, unknown>;\n}\n\n/**\n * GraphQL response structure\n */\nexport interface GraphQLResponse<T> {\n data?: T;\n errors?: RawGraphQLError[];\n}\n\n/**\n * GraphQL request payload\n */\nexport interface GraphQLRequest {\n query: string;\n variables?: Record<string, unknown>;\n operationName?: string;\n}\n\n/**\n * Maps a raw error code string to the InsurUpGraphQLErrorCode enum\n */\nfunction mapGraphQLErrorCode(code: unknown): InsurUpGraphQLErrorCode {\n if (typeof code !== \"string\") {\n return InsurUpGraphQLErrorCode.Unknown;\n }\n\n const upperCode = code.toUpperCase();\n\n switch (upperCode) {\n case \"FORBIDDEN\":\n return InsurUpGraphQLErrorCode.Forbidden;\n case \"UNAUTHORIZED\":\n return InsurUpGraphQLErrorCode.Unauthorized;\n case \"NOT_FOUND\":\n return InsurUpGraphQLErrorCode.NotFound;\n case \"BAD_REQUEST\":\n return InsurUpGraphQLErrorCode.BadRequest;\n case \"CONFLICT\":\n return InsurUpGraphQLErrorCode.Conflict;\n case \"NOT_SUPPORTED\":\n return InsurUpGraphQLErrorCode.NotSupported;\n case \"UPSTREAM_ERROR\":\n return InsurUpGraphQLErrorCode.UpstreamError;\n case \"INTERNAL_ERROR\":\n return InsurUpGraphQLErrorCode.InternalError;\n case \"VALIDATION_ERROR\":\n return InsurUpGraphQLErrorCode.ValidationError;\n case \"FILTER_REQUIRED\":\n return InsurUpGraphQLErrorCode.FilterRequired;\n case \"FILTER_MAX_SPAN_EXCEEDED\":\n return InsurUpGraphQLErrorCode.FilterMaxSpanExceeded;\n default:\n return InsurUpGraphQLErrorCode.Unknown;\n }\n}\n\n/**\n * Parses raw extensions into typed GraphQLErrorExtensions\n */\nfunction parseExtensions(\n raw: Record<string, unknown> | undefined,\n): GraphQLErrorExtensions | undefined {\n if (!raw) {\n return undefined;\n }\n\n const extensions: GraphQLErrorExtensions = {\n ...raw,\n code: mapGraphQLErrorCode(raw.code),\n traceId: typeof raw.traceId === \"string\" ? raw.traceId : undefined,\n codes: Array.isArray(raw.codes)\n ? (raw.codes.filter((c) => typeof c === \"string\") as string[])\n : undefined,\n template: typeof raw.template === \"string\" ? raw.template : undefined,\n templateArgs:\n typeof raw.templateArgs === \"object\" && raw.templateArgs !== null\n ? (raw.templateArgs as Record<string, unknown>)\n : undefined,\n suggestions: Array.isArray(raw.suggestions)\n ? (raw.suggestions.filter((s) => typeof s === \"string\") as string[])\n : undefined,\n };\n\n return extensions;\n}\n\n/**\n * Parses raw GraphQL errors into typed GraphQLErrorItem array\n */\nfunction parseGraphQLErrors(rawErrors: RawGraphQLError[]): GraphQLErrorItem[] {\n return rawErrors.map((error): GraphQLErrorItem => {\n const locations: GraphQLErrorLocation[] | undefined = error.locations?.map(\n (loc) => ({\n line: loc.line,\n column: loc.column,\n }),\n );\n\n return {\n message: error.message,\n locations,\n path: error.path,\n extensions: parseExtensions(error.extensions),\n };\n });\n}\n\n/**\n * GraphQL transport class providing typed query execution\n */\nexport class GraphQLTransport {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Executes a GraphQL query or mutation\n * @param query The GraphQL query string\n * @param variables Optional variables for the query\n * @param options Optional request options\n * @returns Promise resolving to InsurUpGraphQLResult<T>\n */\n async query<T>(\n query: string,\n variables?: Record<string, unknown>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<T>> {\n const payload: GraphQLRequest = {\n query,\n variables,\n };\n\n // Use the existing HTTP transport to send the POST request\n const result = await this.http.post<GraphQLResponse<T>>(\n \"graphql\",\n payload,\n options,\n );\n\n // Handle transport-level errors (network, timeout, etc.)\n if (!result.isSuccess) {\n // Pass through both server errors and client errors\n return result as InsurUpGraphQLResult<T>;\n }\n\n const response = result.data;\n\n // Handle GraphQL-level errors\n if (response.errors && response.errors.length > 0) {\n const parsedErrors = parseGraphQLErrors(response.errors);\n return createGraphQLErrors(parsedErrors) as InsurUpGraphQLResult<T>;\n }\n\n // If no data and no errors, something is wrong with the response\n if (!response.data) {\n return createDeserializationError(\n new Error(\"GraphQL response contained no data and no errors\"),\n ) as InsurUpGraphQLResult<T>;\n }\n\n return createSuccess(response.data) as InsurUpGraphQLResult<T>;\n }\n}\n","/**\n * @fileoverview InsurUp API Endpoints - API endpoint definitions\n * @description API endpoint definitions with identical names and render functions\n */\n\n/**\n * Contact form endpoints\n */\nexport const contactForm = {\n submit: \"contact-form\",\n} as const;\n\n/**\n * Agent management endpoints\n */\nexport const agents = {\n getCurrentAgent: \"agents/me\",\n updateCurrentAgent: \"agents/me\",\n reSyncCurrentAgentWithInsurance: \"agents/me/re-sync\",\n\n insuranceCompanies: {\n getMyInsuranceCompanies: \"agents/me/insurance-companies\",\n addInsuranceCompanyToAgent: \"agents/me/insurance-companies\",\n\n getBranches: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n getConnection: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n updateConnection: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/connection\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n updateBranches: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/branches\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n reSyncAgentInsuranceCompanyWithInsurance: {\n definition:\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/re-sync\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}/re-sync\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n\n remove: {\n definition: \"agents/me/insurance-companies/{AgentInsuranceCompanyId}\",\n render: (agentInsuranceCompanyId: string): string =>\n \"agents/me/insurance-companies/{AgentInsuranceCompanyId}\".replace(\n \"{AgentInsuranceCompanyId}\",\n encodeURIComponent(agentInsuranceCompanyId),\n ),\n },\n },\n} as const;\n\n/**\n * Insurance company endpoints\n */\nexport const insuranceCompanies = {\n getInsuranceCompanies: \"insurance-companies\",\n\n getInsuranceCompanyProducts: {\n definition: \"insurance-companies/{InsuranceCompanyId}/products\",\n render: (insuranceCompanyId: number): string =>\n \"insurance-companies/{InsuranceCompanyId}/products\".replace(\n \"{InsuranceCompanyId}\",\n encodeURIComponent(insuranceCompanyId.toString()),\n ),\n },\n\n getAllProducts: \"insurance-companies/products\",\n\n connectionFields: {\n getAgentBasedConnectionFieldsByCompanyId: {\n definition:\n \"insurance-companies/{InsuranceCompanyId}/connection-fields:agent-based\",\n render: (insuranceCompanyId: number): string =>\n \"insurance-companies/{InsuranceCompanyId}/connection-fields:agent-based\".replace(\n \"{InsuranceCompanyId}\",\n encodeURIComponent(insuranceCompanyId.toString()),\n ),\n },\n },\n} as const;\n\n/**\n * Resource keys endpoints\n */\nexport const resourceKeys = {\n getAll: \"resource-keys\",\n} as const;\n\n/**\n * Customer management endpoints\n */\nexport const customers = {\n createCustomer: \"customers\",\n getCurrentCustomer: \"customers/me\",\n externalLookup: \"customers/external-lookup\",\n\n setCustomerRepresentative: {\n definition: \"customers/{CustomerId}/representative\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/representative\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n getCustomer: {\n definition: \"customers/{CustomerId}\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n updateCustomer: {\n definition: \"customers/{CustomerId}\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n deleteCustomer: {\n definition: \"customers/{CustomerId}\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n getHealthInfo: {\n definition: \"customers/{CustomerId}/health-info\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/health-info\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n updateHealthInfo: {\n definition: \"customers/{CustomerId}/health-info\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/health-info\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n emails: {\n addCustomerEmail: {\n definition: \"customers/{CustomerId}/emails\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/emails\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n removeCustomerEmail: {\n definition: \"customers/{CustomerId}/emails/{Email}\",\n render: (request: { customerId: string; email: string }): string =>\n \"customers/{CustomerId}/emails/{Email}\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\"{Email}\", encodeURIComponent(request.email)),\n },\n\n changePrimaryCustomerEmail: {\n definition: \"customers/{CustomerId}/emails/{Email}/primary\",\n render: (request: { customerId: string; email: string }): string =>\n \"customers/{CustomerId}/emails/{Email}/primary\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\"{Email}\", encodeURIComponent(request.email)),\n },\n\n getCustomerEmails: {\n definition: \"customers/{CustomerId}/emails\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/emails\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n\n phoneNumbers: {\n addCustomerPhoneNumber: {\n definition: \"customers/{CustomerId}/phone-numbers\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/phone-numbers\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n removeCustomerPhoneNumber: {\n definition:\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}\",\n render: (request: {\n customerId: string;\n countryCode: number;\n phoneNumber: string;\n }): string =>\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\n \"{CountryCode}\",\n encodeURIComponent(request.countryCode.toString()),\n )\n .replace(\"{PhoneNumber}\", encodeURIComponent(request.phoneNumber)),\n },\n\n changePrimaryCustomerPhoneNumber: {\n definition:\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}/primary\",\n render: (request: {\n customerId: string;\n countryCode: number;\n phoneNumber: string;\n }): string =>\n \"customers/{CustomerId}/phone-numbers/{CountryCode}-{PhoneNumber}/primary\"\n .replace(\"{CustomerId}\", encodeURIComponent(request.customerId))\n .replace(\n \"{CountryCode}\",\n encodeURIComponent(request.countryCode.toString()),\n )\n .replace(\"{PhoneNumber}\", encodeURIComponent(request.phoneNumber)),\n },\n\n getCustomerPhoneNumbers: {\n definition: \"customers/{CustomerId}/phone-numbers\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/phone-numbers\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n\n contactFlows: {\n getCustomerContactFlows: {\n definition: \"customers/{CustomerId}/contact-flows\",\n render: (customerId: string, caseRef?: string | null): string => {\n const base = \"customers/{CustomerId}/contact-flows\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n );\n return caseRef\n ? base + \"?caseRef=\" + encodeURIComponent(caseRef)\n : base;\n },\n },\n\n createContactFlow: {\n definition: \"customers/{CustomerId}/contact-flows\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/contact-flows\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n endContactFlow: {\n definition: \"customers/{CustomerId}/contact-flows/{ContactFlowId}/end\",\n render: (customerId: string, contactFlowId: string): string =>\n \"customers/{CustomerId}/contact-flows/{ContactFlowId}/end\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{ContactFlowId}\", encodeURIComponent(contactFlowId)),\n },\n },\n\n contacts: {\n getCustomerContacts: {\n definition: \"customers/{CustomerId}/contacts\",\n render: (customerId: string, caseRef?: string | null): string => {\n const base = \"customers/{CustomerId}/contacts\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n );\n return caseRef\n ? base + \"?caseRef=\" + encodeURIComponent(caseRef)\n : base;\n },\n },\n\n create: {\n definition: \"customers/{CustomerId}/contacts\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/contacts\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n\n setCustomerBranch: {\n definition: \"customers/{CustomerId}/branch\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/branch\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n addresses: {\n create: {\n definition: \"customers/{CustomerId}/addresses\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/addresses\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n update: {\n definition: \"customers/{CustomerId}/addresses/{AddressId}\",\n render: (customerId: string, addressId: string): string =>\n \"customers/{CustomerId}/addresses/{AddressId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{AddressId}\", encodeURIComponent(addressId)),\n },\n getById: {\n definition: \"customers/{CustomerId}/addresses/{AddressId}\",\n render: (customerId: string, addressId: string): string =>\n \"customers/{CustomerId}/addresses/{AddressId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{AddressId}\", encodeURIComponent(addressId)),\n },\n getAll: {\n definition: \"customers/{CustomerId}/addresses\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/addresses\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n delete: {\n definition: \"customers/{CustomerId}/addresses/{AddressId}\",\n render: (customerId: string, addressId: string): string =>\n \"customers/{CustomerId}/addresses/{AddressId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{AddressId}\", encodeURIComponent(addressId)),\n },\n },\n\n consents: {\n give: {\n definition: \"customers/{CustomerId}/consents\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/consents\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n revoke: {\n definition: \"customers/{CustomerId}/consents/revoke\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/consents/revoke\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n getAll: {\n definition: \"customers/{CustomerId}/consents\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/consents\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n },\n} as const;\n\n/**\n * Address parameter endpoints\n */\nexport const addressParameters = {\n queryCities: \"address-parameters/cities\",\n\n queryDistricts: {\n definition: \"address-parameters/districts\",\n render: (request: { cityReference: string }): string =>\n \"address-parameters/districts?cityReference={cityReference}\".replace(\n \"{cityReference}\",\n request.cityReference,\n ),\n },\n\n queryTowns: {\n definition: \"address-parameters/towns\",\n render: (request: { districtReference: string }): string =>\n \"address-parameters/towns?districtReference={districtReference}\".replace(\n \"{districtReference}\",\n request.districtReference,\n ),\n },\n\n queryNeighbourhoods: {\n definition: \"address-parameters/neighbourhoods\",\n render: (request: { townReference: string }): string =>\n \"address-parameters/neighbourhoods?townReference={townReference}\".replace(\n \"{townReference}\",\n request.townReference,\n ),\n },\n\n queryStreets: {\n definition: \"address-parameters/streets\",\n render: (request: { neighbourhoodReference: string }): string =>\n \"address-parameters/streets?neighbourhoodReference={neighbourhoodReference}\".replace(\n \"{neighbourhoodReference}\",\n request.neighbourhoodReference,\n ),\n },\n\n queryBuildings: {\n definition: \"address-parameters/buildings\",\n render: (request: { streetReference: string }): string =>\n \"address-parameters/buildings?streetReference={streetReference}\".replace(\n \"{streetReference}\",\n request.streetReference,\n ),\n },\n\n queryApartments: {\n definition: \"address-parameters/apartments\",\n render: (request: { buildingReference: string }): string =>\n \"address-parameters/apartments?buildingReference={buildingReference}\".replace(\n \"{buildingReference}\",\n request.buildingReference,\n ),\n },\n} as const;\n\n/**\n * Vehicle parameter endpoints\n */\nexport const vehicleParameters = {\n queryBrands: \"vehicle-parameters/brands\",\n\n queryModels: {\n definition: \"vehicle-parameters/models\",\n render: (request: { brandReference: string; year: number }): string =>\n \"vehicle-parameters/models?brandReference={brandReference}&year={year}\"\n .replace(\"{brandReference}\", encodeURIComponent(request.brandReference))\n .replace(\"{year}\", encodeURIComponent(request.year.toString())),\n },\n} as const;\n\n/**\n * Vehicle endpoints\n */\nexport const vehicles = {\n getCurrentCustomerVehicles: \"customers/me/vehicles\",\n\n externalLookup: {\n definition: \"customers/{CustomerId}/vehicles/external-lookup\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/vehicles/external-lookup\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n create: {\n definition: \"customers/{CustomerId}/vehicles\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/vehicles\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n update: {\n definition: \"customers/{CustomerId}/vehicles/{VehicleId}\",\n render: (customerId: string, vehicleId: string): string =>\n \"customers/{CustomerId}/vehicles/{VehicleId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{VehicleId}\", encodeURIComponent(vehicleId)),\n },\n\n delete: {\n definition: \"customers/{CustomerId}/vehicles/{VehicleId}\",\n render: (customerId: string, vehicleId: string): string =>\n \"customers/{CustomerId}/vehicles/{VehicleId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{VehicleId}\", encodeURIComponent(vehicleId)),\n },\n\n get: {\n definition: \"customers/{CustomerId}/vehicles/{VehicleId}\",\n render: (customerId: string, vehicleId: string): string =>\n \"customers/{CustomerId}/vehicles/{VehicleId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{VehicleId}\", encodeURIComponent(vehicleId)),\n },\n\n getCustomerVehicles: {\n definition: \"customers/{CustomerId}/vehicles\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/vehicles\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n} as const;\n\n/**\n * Insurance services endpoints\n */\nexport const insuranceServices = {\n queryVehicleByBrandCode: \"insurance-services/query-vehicle-by-brand-code\",\n} as const;\n\n/**\n * Property endpoints\n */\nexport const properties = {\n getPropertyAddressByPropertyNumber:\n \"properties/query-address-by-property-number\",\n queryPropertyByDaskOldPolicy: \"properties/query-property-by-dask-old-policy\",\n getCurrentCustomerProperties: \"customers/me/properties\",\n\n getAll: {\n definition: \"customers/{CustomerId}/properties\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/properties\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n create: {\n definition: \"customers/{CustomerId}/properties\",\n render: (customerId: string): string =>\n \"customers/{CustomerId}/properties\".replace(\n \"{CustomerId}\",\n encodeURIComponent(customerId),\n ),\n },\n\n getById: {\n definition: \"customers/{CustomerId}/properties/{PropertyId}\",\n render: (customerId: string, propertyId: string): string =>\n \"customers/{CustomerId}/properties/{PropertyId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{PropertyId}\", encodeURIComponent(propertyId)),\n },\n\n update: {\n definition: \"customers/{CustomerId}/properties/{PropertyId}\",\n render: (customerId: string, propertyId: string): string =>\n \"customers/{CustomerId}/properties/{PropertyId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{PropertyId}\", encodeURIComponent(propertyId)),\n },\n\n delete: {\n definition: \"customers/{CustomerId}/properties/{PropertyId}\",\n render: (customerId: string, propertyId: string): string =>\n \"customers/{CustomerId}/properties/{PropertyId}\"\n .replace(\"{CustomerId}\", encodeURIComponent(customerId))\n .replace(\"{PropertyId}\", encodeURIComponent(propertyId)),\n },\n} as const;\n\n/**\n * Proposal endpoints\n */\nexport const proposals = {\n create: \"proposals\",\n\n getProposalById: {\n definition: \"proposals/{ProposalId}\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalSnapshot: {\n definition: \"proposals/{ProposalId}/snapshot\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/snapshot\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalCoverage: {\n definition: \"proposals/{ProposalId}/coverage\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/coverage\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalProductCoverage: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/coverage\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/coverage\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n retryFailedProposalProduct: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/retry\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/retry\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n getProposalProductPremiumDetail: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/premium-detail/{InstallmentNumber}\",\n render: (\n proposalId: string,\n proposalProductId: string,\n installmentNumber: number,\n ): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/premium-detail/{InstallmentNumber}\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId))\n .replace(\n \"{InstallmentNumber}\",\n encodeURIComponent(installmentNumber.toString()),\n ),\n },\n\n purchaseProposalProductSync: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/sync\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/sync\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n purchaseProposalProductAsync: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/async\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/purchase/async\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n reviseProposal: {\n definition: \"proposals/{ProposalId}/revise\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/revise\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n reviseProposalProduct: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/revise\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/revise\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n fetchProposalProductDocument: {\n definition: \"proposals/{ProposalId}/products/{ProposalProductId}/document\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/document\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n fetchProposalInformationFormDocument: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n sendProposalProductDocument: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/document/send\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/document/send\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n sendProposalInformationFormDocument: {\n definition:\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form/send\",\n render: (proposalId: string, proposalProductId: string): string =>\n \"proposals/{ProposalId}/products/{ProposalProductId}/information-form/send\"\n .replace(\"{ProposalId}\", encodeURIComponent(proposalId))\n .replace(\"{ProposalProductId}\", encodeURIComponent(proposalProductId)),\n },\n\n generateCompareProposalProductsPdf: {\n definition: \"proposals/{ProposalId}/products/compare-pdf\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/products/compare-pdf\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n sendCompareProposalProductsPdf: {\n definition: \"proposals/{ProposalId}/products/compare-pdf/send\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/products/compare-pdf/send\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n setProposalRepresentative: {\n definition: \"proposals/{ProposalId}/representative\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/representative\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n setProposalBranch: {\n definition: \"proposals/{ProposalId}/branch\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/branch\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n generateCustomerProposalDocumentPdf: {\n definition: \"proposals/{ProposalId}/customer-document-pdf\",\n render: (proposalId: string): string =>\n \"proposals/{ProposalId}/customer-document-pdf\".replace(\n \"{ProposalId}\",\n encodeURIComponent(proposalId),\n ),\n },\n\n getProposalConversionTrend: {\n definition: \"proposals/analytics/conversion-trend\",\n },\n} as const;\n\n/**\n * Policy endpoints\n */\nexport const policies = {\n getPolicyDetail: {\n definition: \"policies/{PolicyId}\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}\".replace(\"{PolicyId}\", encodeURIComponent(policyId)),\n },\n\n fetchPolicyDocument: {\n definition: \"policies/{PolicyId}/document\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/document\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n sendPolicyDocument: {\n definition: \"policies/{PolicyId}/document/send\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/document/send\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n setPolicyRepresentative: {\n definition: \"policies/{PolicyId}/representative\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/representative\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n setPolicyBranch: {\n definition: \"policies/{PolicyId}/branch\",\n render: (policyId: string): string =>\n \"policies/{PolicyId}/branch\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n createManualPolicy: {\n definition: \"policies/manual\",\n },\n\n updateManualPolicy: {\n definition: \"policies/manual/{PolicyId}\",\n render: (policyId: string): string =>\n \"policies/manual/{PolicyId}\".replace(\n \"{PolicyId}\",\n encodeURIComponent(policyId),\n ),\n },\n\n getPolicyCountAndPremiumAnalytics: {\n definition: \"policies/analytics/count-and-premium\",\n },\n\n getPolicyRenewalAnalytics: {\n definition: \"policies/analytics/renewal\",\n },\n\n getPolicyDistributionByBranch: {\n definition: \"policies/analytics/distribution-by-branch\",\n },\n\n getRepresentativeEarningsAnalytics: {\n definition: \"policies/analytics/representative-earnings\",\n },\n} as const;\n\n/**\n * Policy transfer endpoints\n */\nexport const policyTransfers = {\n create: \"policy-transfers\",\n\n getPolicyTransferDetail: {\n definition: \"policy-transfers/{PolicyTransferId}\",\n render: (policyTransferId: string): string =>\n \"policy-transfers/{PolicyTransferId}\".replace(\n \"{PolicyTransferId}\",\n encodeURIComponent(policyTransferId),\n ),\n },\n\n getPolicyTransferTriggerDetail: {\n definition:\n \"policy-transfers/{PolicyTransferId}/triggers/{PolicyTransferTriggerId}\",\n render: (\n policyTransferId: string,\n policyTransferTriggerId: string,\n ): string =>\n \"policy-transfers/{PolicyTransferId}/triggers/{PolicyTransferTriggerId}\"\n .replace(\"{PolicyTransferId}\", encodeURIComponent(policyTransferId))\n .replace(\n \"{PolicyTransferTriggerId}\",\n encodeURIComponent(policyTransferTriggerId),\n ),\n },\n\n triggerPolicyTransfer: {\n definition: \"policy-transfers/{PolicyTransferId}/trigger\",\n render: (policyTransferId: string): string =>\n \"policy-transfers/{PolicyTransferId}/trigger\".replace(\n \"{PolicyTransferId}\",\n encodeURIComponent(policyTransferId),\n ),\n },\n} as const;\n\n/**\n * File policy transfer endpoints\n */\nexport const filePolicyTransfers = {\n create: \"file-policy-transfers\",\n\n getFilePolicyTransferDetail: {\n definition: \"file-policy-transfers/{FilePolicyTransferId}\",\n render: (filePolicyTransferId: string): string =>\n \"file-policy-transfers/{FilePolicyTransferId}\".replace(\n \"{FilePolicyTransferId}\",\n encodeURIComponent(filePolicyTransferId),\n ),\n },\n} as const;\n\n/**\n * Coverage choice endpoints\n */\nexport const coverageChoices = {\n getKaskoCoverageChoices: {\n definition: \"coverage-choices:kasko\",\n render: (vehicleUtilizationStyle?: string): string =>\n vehicleUtilizationStyle !== undefined\n ? \"coverage-choices:kasko?vehicleUtilizationStyle={vehicleUtilizationStyle}\".replace(\n \"{vehicleUtilizationStyle}\",\n encodeURIComponent(vehicleUtilizationStyle),\n )\n : \"coverage-choices:kasko\",\n },\n\n getKonutCoverageChoices: {\n definition: \"coverage-choices:konut\",\n render: (): string => \"coverage-choices:konut\",\n },\n\n getImmCoverageChoices: {\n definition: \"coverage-choices:imm\",\n render: (): string => \"coverage-choices:imm\",\n },\n\n getTssCoverageChoices: {\n definition: \"coverage-choices:tss\",\n render: (): string => \"coverage-choices:tss\",\n },\n} as const;\n\n/**\n * Agent setup request endpoints\n */\nexport const agentSetupRequests = {\n complete: \"agent-setup-requests/complete\",\n create: \"agent-setup-requests\",\n getAll: \"agent-setup-requests\",\n enter: \"agent-setup-requests/enter\",\n\n getAgentSetupRequestById: {\n definition: \"agent-setup-requests/{Id}\",\n render: (id: string): string =>\n \"agent-setup-requests/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n disableAgentSetupRequest: {\n definition: \"agent-setup-requests/{Id}/disable\",\n render: (id: string): string =>\n \"agent-setup-requests/{Id}/disable\".replace(\n \"{Id}\",\n encodeURIComponent(id),\n ),\n },\n} as const;\n\n/**\n * Agent user endpoints\n */\nexport const agentUsers = {\n forgotPassword: \"agent-users/forgot-password\",\n resetPassword: \"agent-users/reset-password\",\n checkAgentUserForgotPasswordToken: \"agent-users/check-forgot-password-token\",\n me: \"agent-users/me\",\n meRobotCode: \"agent-users/me/robot-code\",\n invite: \"agent-users/invite\",\n updateMyUser: \"agent-users/me\",\n acceptInvite: \"agent-users/accept-invite\",\n updatePassword: \"agent-users/me/password\",\n\n reSendInvite: {\n definition: \"agent-users/{AgentUserId}/re-send-invite\",\n render: (userId: string): string =>\n \"agent-users/{AgentUserId}/re-send-invite\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(userId),\n ),\n },\n\n deactivate: {\n definition: \"agent-users/{AgentUserId}/deactivate\",\n render: (userId: string): string =>\n \"agent-users/{AgentUserId}/deactivate\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(userId),\n ),\n },\n\n activate: {\n definition: \"agent-users/{AgentUserId}/activate\",\n render: (userId: string): string =>\n \"agent-users/{AgentUserId}/activate\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(userId),\n ),\n },\n\n delete: {\n definition: \"agent-users/{UserId}\",\n render: (userId: string): string =>\n \"agent-users/{UserId}\".replace(\"{UserId}\", encodeURIComponent(userId)),\n },\n\n getById: {\n definition: \"agent-users/{UserId}\",\n render: (userId: string): string =>\n \"agent-users/{UserId}\".replace(\"{UserId}\", encodeURIComponent(userId)),\n },\n\n checkAgentUserInviteCode: {\n definition: \"agent-users/check-invite-code\",\n render: (code: string): string =>\n \"agent-users/check-invite-code?code={code}\".replace(\n \"{code}\",\n encodeURIComponent(code),\n ),\n },\n\n update: {\n definition: \"agent-users/{Id}\",\n render: (userId: string): string =>\n \"agent-users/{Id}\".replace(\"{Id}\", encodeURIComponent(userId)),\n },\n\n migrate: {\n definition: \"agent-users/{AgentUserId}/migrate\",\n render: (agentUserId: string): string =>\n \"agent-users/{AgentUserId}/migrate\".replace(\n \"{AgentUserId}\",\n encodeURIComponent(agentUserId),\n ),\n },\n\n migrateAll: \"agent-users/migrate-all\",\n} as const;\n\n/**\n * Agent role endpoints\n */\nexport const agentRoles = {\n getAll: \"agent-roles\",\n create: \"agent-roles\",\n\n update: {\n definition: \"agent-roles/{Id}\",\n render: (agentRoleId: string): string =>\n \"agent-roles/{Id}\".replace(\"{Id}\", encodeURIComponent(agentRoleId)),\n },\n\n delete: {\n definition: \"agent-roles/{Id}\",\n render: (agentRoleId: string): string =>\n \"agent-roles/{Id}\".replace(\"{Id}\", encodeURIComponent(agentRoleId)),\n },\n\n getById: {\n definition: \"agent-roles/{Id}\",\n render: (agentRoleId: string): string =>\n \"agent-roles/{Id}\".replace(\"{Id}\", encodeURIComponent(agentRoleId)),\n },\n} as const;\n\n/**\n * Webhook endpoints\n */\nexport const webhooks = {\n getAll: \"webhooks\",\n create: \"webhooks\",\n\n getById: {\n definition: \"webhooks/{Id}\",\n render: (id: string): string =>\n \"webhooks/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n update: {\n definition: \"webhooks/{Id}\",\n render: (id: string): string =>\n \"webhooks/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n delete: {\n definition: \"webhooks/{Id}\",\n render: (id: string): string =>\n \"webhooks/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n deliveries: {\n getById: {\n definition: \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}\",\n render: (webhookId: string, webhookDeliveryId: string): string =>\n \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}\"\n .replace(\"{WebhookId}\", encodeURIComponent(webhookId))\n .replace(\n \"{WebhookDeliveryId}\",\n encodeURIComponent(webhookDeliveryId),\n ),\n },\n\n redeliver: {\n definition:\n \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}/redeliver\",\n render: (webhookId: string, webhookDeliveryId: string): string =>\n \"webhooks/{WebhookId}/deliveries/{WebhookDeliveryId}/redeliver\"\n .replace(\"{WebhookId}\", encodeURIComponent(webhookId))\n .replace(\n \"{WebhookDeliveryId}\",\n encodeURIComponent(webhookDeliveryId),\n ),\n },\n },\n} as const;\n\n/**\n * Case management endpoints\n */\nexport const cases = {\n createNewSaleOpportunity: \"cases:new-sale-opportunity\",\n createCrossSaleOpportunity: \"cases:cross-sale-opportunity\",\n createCancel: \"cases:cancel\",\n createEndorsement: \"cases:endorsement\",\n createComplaint: \"cases:complaint\",\n\n assignRepresentative: {\n definition: \"cases/{Ref}/representative\",\n render: (ref: string): string =>\n \"cases/{Ref}/representative\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n addNoteToCase: {\n definition: \"cases/{Ref}/notes\",\n render: (ref: string): string =>\n \"cases/{Ref}/notes\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n changeChannel: {\n definition: \"cases/{Ref}/channel\",\n render: (ref: string): string =>\n \"cases/{Ref}/channel\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n changeState: {\n definition: \"cases/{Ref}/state\",\n render: (ref: string): string =>\n \"cases/{Ref}/state\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getActivities: {\n definition: \"cases/{Ref}/activities\",\n render: (ref: string): string =>\n \"cases/{Ref}/activities\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getCaseByRef: {\n definition: \"cases/{Ref}\",\n render: (ref: string): string =>\n \"cases/{Ref}\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getProposals: {\n definition: \"cases/{Ref}/proposals\",\n render: (ref: string): string =>\n \"cases/{Ref}/proposals\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getPolicies: {\n definition: \"cases/{Ref}/policies\",\n render: (ref: string): string =>\n \"cases/{Ref}/policies\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n setAsset: {\n definition: \"cases/{Ref}/asset\",\n render: (ref: string): string =>\n \"cases/{Ref}/asset\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n setBranch: {\n definition: \"cases/{Ref}/branch\",\n render: (ref: string): string =>\n \"cases/{Ref}/branch\".replace(\"{Ref}\", encodeURIComponent(ref)),\n },\n\n getSalesOpportunityFunnelAnalytics: {\n definition: \"cases/analytics/sales-opportunity-funnel\",\n },\n\n getOpenCaseBacklogPivotAnalytics: {\n definition: \"cases/analytics/open-case-backlog-pivot\",\n },\n\n getFailedCasesReasonDistribution: {\n definition: \"cases/analytics/failed-cases-reason-distribution\",\n },\n\n communicationAutomations: {\n getAll: \"cases/communication-automations\",\n },\n\n getPriorityTemplates: \"cases/priority-templates\",\n} as const;\n\n/**\n * Coverage Groups endpoints for managing insurance coverage groups\n * Sigorta teminat gruplarını yönetmek için teminat grupları endpoint'leri\n */\nexport const coverageGroups = {\n getAll: \"coverage-groups\",\n create: \"coverage-groups\",\n\n update: {\n definition: \"coverage-groups/{Id}\",\n render: (id: string): string =>\n \"coverage-groups/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n delete: {\n definition: \"coverage-groups/{Id}\",\n render: (id: string): string =>\n \"coverage-groups/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n\n getById: {\n definition: \"coverage-groups/{Id}\",\n render: (id: string): string =>\n \"coverage-groups/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n} as const;\n\n/**\n * Release Notes endpoints\n */\nexport const releaseNotes = {\n getAll: \"release-notes\",\n} as const;\n\n/**\n * Banks endpoints\n */\nexport const banks = {\n getAll: \"banks\",\n\n getBranches: {\n definition: \"banks/{BankId}/branches\",\n render: (bankId: string): string =>\n \"banks/{BankId}/branches\".replace(\"{BankId}\", encodeURIComponent(bankId)),\n },\n} as const;\n\n/**\n * Financial Institutions endpoints\n */\nexport const financialInstitutions = {\n getAll: \"financial-institutions\",\n} as const;\n\n/**\n * Agent Branches endpoints\n */\nexport const agentBranches = {\n getAll: \"agent-branches\",\n create: \"agent-branches\",\n getById: {\n definition: \"agent-branches/{Id}\",\n render: (id: string): string =>\n \"agent-branches/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n update: {\n definition: \"agent-branches/{Id}\",\n render: (id: string): string =>\n \"agent-branches/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n delete: {\n definition: \"agent-branches/{Id}\",\n render: (id: string): string =>\n \"agent-branches/{Id}\".replace(\"{Id}\", encodeURIComponent(id)),\n },\n} as const;\n\n/**\n * Files endpoints\n */\nexport const files = {\n uploadPublicFile: \"files/upload-public\",\n} as const;\n\n/**\n * Languages endpoints\n */\nexport const languages = {\n getAll: \"languages\",\n} as const;\n\n/**\n * Templates endpoints\n */\nexport const templates = {\n getDefinitions: \"templates/definitions\",\n getAll: \"templates\",\n getByKey: {\n definition: \"templates/{Key}\",\n render: (key: string): string =>\n \"templates/{Key}\".replace(\"{Key}\", encodeURIComponent(key)),\n },\n update: {\n definition: \"templates/{Key}\",\n render: (key: string): string =>\n \"templates/{Key}\".replace(\"{Key}\", encodeURIComponent(key)),\n },\n delete: {\n definition: \"templates/{Key}\",\n render: (key: string): string =>\n \"templates/{Key}\".replace(\"{Key}\", encodeURIComponent(key)),\n },\n} as const;\n\n/**\n * B2C Configuration endpoints\n */\nexport const b2c = {\n configFields: {\n getAll: \"b2c/config-fields\",\n updateAll: \"b2c/config-fields\",\n },\n} as const;\n\n/**\n * Main endpoints export object\n */\nexport const endpoints = {\n customers,\n vehicles,\n vehicleParameters,\n insuranceServices,\n agents,\n insuranceCompanies,\n resourceKeys,\n releaseNotes,\n banks,\n financialInstitutions,\n policies,\n policyTransfers,\n filePolicyTransfers,\n cases,\n coverageGroups,\n webhooks,\n agentBranches,\n files,\n languages,\n templates,\n b2c,\n proposals,\n} as const;\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agents } from \"../core/endpoints.js\";\nimport type {\n GetCurrentAgentResult,\n UpdateCurrentAgentRequest,\n GetMyAgentInsuranceCompaniesResult,\n GetAgentInsuranceCompanyBranchesResult,\n GetAgentInsuranceCompanyConnectionResult,\n AddInsuranceCompanyToAgentRequest,\n UpdateAgentInsuranceCompanyConnectionRequest,\n UpdateAgentInsuranceCompanyBranchesRequest,\n ReSyncAgentInsuranceCompanyWithInsuranceRequest,\n GetB2CConfigFieldsResult,\n UpdateB2CConfigFieldsRequest,\n} from \"@insurup/contracts\";\nimport { b2c } from \"../core/endpoints.js\";\n\n/**\n * Provides agent management operations for the InsurUp platform, enabling agents to manage their profile,\n * insurance company connections, and business relationships within the insurance ecosystem.\n *\n * InsurUp platformunda acente yönetimi işlemlerini sağlar; acentelerin profilerini, sigorta şirketi\n * bağlantılarını ve sigorta ekosistemi içindeki iş ilişkilerini yönetmelerine olanak tanır.\n */\nexport class InsurUpAgentClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves the current agent's profile information including business details and configuration settings.\n *\n * Mevcut acentenin iş detayları ve yapılandırma ayarları dahil profil bilgilerini getirir.\n *\n * @returns Agent profile information / Acente profil bilgileri\n */\n async getCurrentAgent(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCurrentAgentResult>> {\n return this.http.get<GetCurrentAgentResult>(\n agents.getCurrentAgent,\n options,\n );\n }\n\n /**\n * Updates the current agent's profile information such as business details, contact information, and operational preferences.\n *\n * Mevcut acentenin iş detayları, iletişim bilgileri ve operasyonel tercihleri gibi profil bilgilerini günceller.\n *\n * @param request Agent profile update data / Acente profil güncelleme verileri\n * @returns Operation result / İşlem sonucu\n */\n async updateCurrentAgent(\n request: UpdateCurrentAgentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(agents.updateCurrentAgent, request, options);\n }\n\n /**\n * Retrieves all insurance companies that the current agent is affiliated with or has authorization to work with.\n *\n * Mevcut acentenin bağlı olduğu veya çalışma yetkisine sahip olduğu tüm sigorta şirketlerini getirir.\n *\n * @returns List of agent's insurance companies / Acentenin sigorta şirketleri listesi\n */\n async getAgentInsuranceCompaniesAsync(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetMyAgentInsuranceCompaniesResult[]>> {\n return this.http.get<GetMyAgentInsuranceCompaniesResult[]>(\n agents.insuranceCompanies.getMyInsuranceCompanies,\n options,\n );\n }\n\n /**\n * Retrieves the available product branches (Kasko, TSS, IMM, DASK, etc.) for a specific insurance company that the agent can offer.\n *\n * Acentenin sunabileceği belirli bir sigorta şirketi için mevcut ürün dallarını (Kasko, TSS, İMM, DASK, vb.) getirir.\n *\n * @param agentInsuranceCompanyId Insurance company relationship identifier / Sigorta şirketi ilişki tanımlayıcısı\n * @returns Available product branches / Mevcut ürün dalları\n */\n async getAgentInsuranceCompanyBranchesAsync(\n agentInsuranceCompanyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentInsuranceCompanyBranchesResult[]>> {\n const endpoint = agents.insuranceCompanies.getBranches.render(\n agentInsuranceCompanyId,\n );\n return this.http.get<GetAgentInsuranceCompanyBranchesResult[]>(\n endpoint,\n options,\n );\n }\n\n /**\n * Retrieves the technical connection configuration and credentials for integrating with a specific insurance company's systems.\n *\n * Belirli bir sigorta şirketinin sistemleri ile entegrasyon için teknik bağlantı yapılandırması ve kimlik bilgilerini getirir.\n *\n * @param agentInsuranceCompanyId Insurance company relationship identifier / Sigorta şirketi ilişki tanımlayıcısı\n * @returns Connection configuration details / Bağlantı yapılandırma detayları\n */\n async getAgentInsuranceCompanyConnectionAsync(\n agentInsuranceCompanyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentInsuranceCompanyConnectionResult>> {\n const endpoint = agents.insuranceCompanies.getConnection.render(\n agentInsuranceCompanyId,\n );\n return this.http.get<GetAgentInsuranceCompanyConnectionResult>(\n endpoint,\n options,\n );\n }\n\n /**\n * Establishes a new business relationship between the agent and an insurance company, enabling the agent to offer that company's products.\n *\n * Acente ile sigorta şirketi arasında yeni bir iş ilişkisi kurar ve acentenin o şirketin ürünlerini sunmasına olanak tanır.\n *\n * @param request Insurance company association request / Sigorta şirketi ilişkilendirme talebi\n * @returns Operation result / İşlem sonucu\n */\n async addAgentInsuranceCompany(\n request: AddInsuranceCompanyToAgentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n agents.insuranceCompanies.addInsuranceCompanyToAgent,\n request,\n options,\n );\n }\n\n /**\n * Removes the business relationship between the agent and an insurance company, terminating the agent's ability to offer that company's products.\n *\n * Acente ile sigorta şirketi arasındaki iş ilişkisini kaldırır ve acentenin o şirketin ürünlerini sunma yeteneğini sonlandırır.\n *\n * @param agentInsuranceCompanyId Insurance company relationship identifier to remove / Kaldırılacak sigorta şirketi ilişki tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async removeAgentInsuranceCompany(\n agentInsuranceCompanyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agents.insuranceCompanies.remove.render(\n agentInsuranceCompanyId,\n );\n return this.http.deleteNoContent(endpoint, options);\n }\n\n /**\n * Updates the technical connection settings and credentials for integrating with an insurance company's API or systems.\n *\n * Bir sigorta şirketinin API'si veya sistemleri ile entegrasyon için teknik bağlantı ayarları ve kimlik bilgilerini günceller.\n *\n * @param request Connection configuration update request / Bağlantı yapılandırma güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentInsuranceCompanyConnection(\n request: UpdateAgentInsuranceCompanyConnectionRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agents.insuranceCompanies.updateConnection.render(\n request.agentInsuranceCompanyId,\n );\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Updates which product branches (Kasko, TSS, IMM, DASK, etc.) the agent is authorized to offer for a specific insurance company.\n *\n * Acentenin belirli bir sigorta şirketi için hangi ürün dallarını (Kasko, TSS, İMM, DASK, vb.) sunma yetkisine sahip olduğunu günceller.\n *\n * @param request Branch authorization update request / Şube yetkilendirme güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentInsuranceCompanyBranches(\n request: UpdateAgentInsuranceCompanyBranchesRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agents.insuranceCompanies.updateBranches.render(\n request.agentInsuranceCompanyId,\n );\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Re-synchronizes the agent's configuration and authorizations with the insurance company's systems to ensure data consistency and updated permissions.\n *\n * Veri tutarlılığını ve güncellenmiş izinleri sağlamak için acentenin yapılandırması ve yetkilendirmelerini sigorta şirketinin sistemleri ile yeniden senkronize eder.\n *\n * @param request Re-synchronization request details / Yeniden senkronizasyon talep detayları\n * @returns Operation result / İşlem sonucu\n */\n async reSyncAgentInsuranceCompanyWithInsurance(\n request: ReSyncAgentInsuranceCompanyWithInsuranceRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint =\n agents.insuranceCompanies.reSyncAgentInsuranceCompanyWithInsurance.render(\n request.agentInsuranceCompanyId,\n );\n return this.http.postNoContent(endpoint, request, options);\n }\n\n /**\n * Retrieves all B2C configuration fields that define the customizable settings and parameters for the agent's customer-facing interface.\n *\n * Acentenin müşteriye yönelik arayüzü için özelleştirilebilir ayarları ve parametreleri tanımlayan tüm B2C yapılandırma alanlarını getirir.\n *\n * @returns List of B2C configuration fields\n */\n async getB2CConfigFields(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetB2CConfigFieldsResult>> {\n return this.http.get<GetB2CConfigFieldsResult>(\n b2c.configFields.getAll,\n options,\n );\n }\n\n /**\n * Updates all B2C configuration fields at once, allowing agents to customize their customer-facing interface settings and branding parameters.\n *\n * Tüm B2C yapılandırma alanlarını bir kerede günceller, acentelerin müşteriye yönelik arayüz ayarlarını ve marka parametrelerini özelleştirmelerine olanak tanır.\n *\n * @param request B2C configuration fields update data\n * @returns Operation result\n */\n async updateB2CConfigFields(\n request: UpdateB2CConfigFieldsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(b2c.configFields.updateAll, request, options);\n }\n}\n","/**\n * @fileoverview Agent Branch Client - Agent branch management operations\n * @description Provides branch management operations for insurance agents\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentBranches } from \"../core/endpoints.js\";\nimport type {\n CreateAgentBranchRequest,\n UpdateAgentBranchRequest,\n DeleteAgentBranchRequest,\n GetAgentBranchResult,\n GetAllAgentBranchesResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides branch management operations for insurance agents, enabling the creation and administration\n * of organizational branches within agency structures.\n */\nexport class InsurUpAgentBranchClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Creates a new agent branch within the agency structure with optional parent branch relationship.\n *\n * Acente yapısı içinde isteğe bağlı üst şube ilişkisi ile yeni bir acente şubesi oluşturur.\n *\n * @param request Branch creation request with name and optional parent\n * @returns Created branch details\n */\n async createAgentBranch(\n request: CreateAgentBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return this.http.post<string>(agentBranches.create, request, options);\n }\n\n /**\n * Retrieves detailed information about a specific agent branch including its parent relationship.\n *\n * Belirli bir acente şubesi hakkında üst şube ilişkisi dahil detaylı bilgileri getirir.\n *\n * @param id Unique identifier of the agent branch\n * @returns Agent branch details\n */\n async getAgentBranchById(\n id: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentBranchResult>> {\n const endpoint = agentBranches.getById.render(id);\n return this.http.get<GetAgentBranchResult>(endpoint, options);\n }\n\n /**\n * Retrieves all available agent branches within the current agency, showing the complete branch hierarchy.\n *\n * Mevcut acente içindeki tüm kullanılabilir acente şubelerini getirir ve tam şube hiyerarşisini gösterir.\n *\n * @returns List of all agent branches\n */\n async getAgentBranches(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllAgentBranchesResult[]>> {\n return this.http.get<GetAllAgentBranchesResult[]>(\n agentBranches.getAll,\n options,\n );\n }\n\n /**\n * Updates an existing agent branch's name or parent branch relationship to reflect changing organizational needs.\n *\n * Değişen organizasyonel ihtiyaçları yansıtmak için mevcut bir acente şubesinin adını veya üst şube ilişkisini günceller.\n *\n * @param request Branch update request with modified details\n * @returns Operation result\n */\n async updateAgentBranch(\n request: UpdateAgentBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentBranches.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Removes an agent branch from the agency structure. The branch must not have any child branches.\n *\n * Acente yapısından bir acente şubesini kaldırır. Şubenin alt şubeleri olmamalıdır.\n *\n * @param request Branch deletion request\n * @returns Operation result\n */\n async deleteAgentBranch(\n request: DeleteAgentBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentBranches.delete.render(request.id);\n return this.http.deleteNoContent(endpoint, options);\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentRoles } from \"../core/endpoints.js\";\nimport type {\n CreateAgentRoleRequest,\n UpdateAgentRoleRequest,\n DeleteAgentRoleRequest,\n GetAgentRoleByIdResult,\n GetAllAgentRolesResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides role management operations for insurance agents, enabling the creation and administration\n * of role-based access control within agency hierarchies and permission structures.\n *\n * Sigorta acenteleri için rol yönetimi işlemlerini sağlar; acente hiyerarşileri ve izin yapıları\n * içinde rol tabanlı erişim kontrolünün oluşturulması ve yönetimini mümkün kılar.\n */\nexport class InsurUpAgentRoleClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Creates a new agent role with specified permissions and access levels for use within the agency structure.\n *\n * Acente yapısı içinde kullanım için belirtilen izinler ve erişim seviyeleri ile yeni bir acente rolü oluşturur.\n *\n * @param request Role creation request with permissions and configurations / İzinler ve yapılandırmalar ile rol oluşturma talebi\n * @returns Operation result / İşlem sonucu\n */\n async createAgentRole(\n request: CreateAgentRoleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(agentRoles.create, request, options);\n }\n\n /**\n * Retrieves detailed information about a specific agent role including its permissions and access configurations.\n *\n * Belirli bir acente rolü hakkında izinleri ve erişim yapılandırmaları dahil detaylı bilgileri getirir.\n *\n * @param id Unique identifier of the agent role / Acente rolünün benzersiz tanımlayıcısı\n * @returns Agent role details / Acente rolü detayları\n */\n async getAgentRoleById(\n id: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentRoleByIdResult>> {\n const endpoint = agentRoles.getById.render(id);\n return this.http.get<GetAgentRoleByIdResult>(endpoint, options);\n }\n\n /**\n * Retrieves all available agent roles within the current agency, showing the complete role hierarchy and permissions structure.\n *\n * Mevcut acente içindeki tüm kullanılabilir acente rollerini getirir ve tam rol hiyerarşisi ile izin yapısını gösterir.\n *\n * @returns List of all agent roles / Tüm acente rolleri listesi\n */\n async getAgentRoles(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllAgentRolesResult[]>> {\n return this.http.get<GetAllAgentRolesResult[]>(agentRoles.getAll, options);\n }\n\n /**\n * Updates an existing agent role's permissions, access levels, or configuration settings to reflect changing organizational needs.\n *\n * Değişen organizasyonel ihtiyaçları yansıtmak için mevcut bir acente rolünün izinlerini, erişim seviyelerini veya yapılandırma ayarlarını günceller.\n *\n * @param request Role update request with modified permissions / Değiştirilmiş izinlerle rol güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentRole(\n request: UpdateAgentRoleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentRoles.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Removes an agent role from the agency structure, ensuring proper cleanup of associated permissions and user assignments.\n *\n * Acente yapısından bir acente rolünü kaldırır ve ilişkili izinlerin ve kullanıcı atamalarının düzgün temizlenmesini sağlar.\n *\n * @param request Role deletion request / Rol silme talebi\n * @returns Operation result / İşlem sonucu\n */\n async deleteAgentRole(\n request: DeleteAgentRoleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentRoles.delete.render(request.id);\n return this.http.deleteNoContent(endpoint, options);\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentSetupRequests } from \"../core/endpoints.js\";\nimport type {\n EnterAgentSetupRequestRequest,\n EnterAgentSetupRequestResult,\n CompleteAgentSetupRequestRequest,\n} from \"@insurup/contracts\";\n\n/**\n * Provides agent onboarding and setup operations for new insurance agents joining the InsurUp platform,\n * facilitating the complete registration and configuration process required for business operations.\n *\n * InsurUp platformuna katılan yeni sigorta acenteleri için acente katılım ve kurulum işlemlerini sağlar;\n * iş operasyonları için gereken tam kayıt ve yapılandırma sürecini kolaylaştırır.\n */\nexport class InsurUpAgentSetupClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Initiates the agent setup process by submitting initial business information and required documentation for platform registration.\n *\n * Platform kaydı için ilk iş bilgilerini ve gerekli dokümantasyonu sunarak acente kurulum sürecini başlatır.\n *\n * @param request Agent setup initiation request with business details / İş detayları ile acente kurulum başlatma talebi\n * @returns Setup process identifier and next steps / Kurulum süreci tanımlayıcısı ve sonraki adımlar\n */\n async enterAgentSetupRequest(\n request: EnterAgentSetupRequestRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<EnterAgentSetupRequestResult>> {\n return this.http.post<EnterAgentSetupRequestResult>(\n agentSetupRequests.enter,\n request,\n options,\n );\n }\n\n /**\n * Finalizes the agent setup process by confirming all requirements are met and activating the agent's platform access.\n *\n * Tüm gereksinimlerin karşılandığını onaylayarak ve acentenin platform erişimini aktive ederek acente kurulum sürecini sonlandırır.\n *\n * @param request Setup completion request with final confirmations / Son onaylar ile kurulum tamamlama talebi\n * @returns Operation result / İşlem sonucu\n */\n async completeAgentSetupRequest(\n request: CompleteAgentSetupRequestRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n agentSetupRequests.complete,\n request,\n options,\n );\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { agentUsers } from \"../core/endpoints.js\";\nimport {\n ALL_AGENT_USER_FIELDS,\n type AgentUserFieldKey,\n type GetAgentUsersOptions,\n type AgentUsersConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n GetAgentUserResult,\n UpdateMyAgentUserRequest,\n InviteAgentUserRequest,\n AcceptAgentUserInviteRequest,\n UpdateAgentUserRequest,\n UpdateAgentUserPasswordRequest,\n GetMyAgentUserRobotCodeResult,\n MigrateAllAgentUsersResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides comprehensive user management operations for insurance agency staff, enabling agencies to manage\n * their team members, permissions, and access control within the InsurUp platform ecosystem.\n *\n * Sigorta acente personeli için kapsamlı kullanıcı yönetimi işlemlerini sağlar; acentelerin InsurUp platform\n * ekosistemi içinde ekip üyelerini, izinlerini ve erişim kontrolünü yönetmesine olanak tanır.\n */\nexport class InsurUpAgentUserClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Retrieves the current agent user's profile information including personal details and platform settings.\n *\n * Mevcut acente kullanıcısının kişisel detayları ve platform ayarları dahil profil bilgilerini getirir.\n *\n * @returns Current agent user profile / Mevcut acente kullanıcı profili\n */\n async getMyAgentUser(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentUserResult>> {\n return this.http.get<GetAgentUserResult>(agentUsers.me, options);\n }\n\n /**\n * Updates the current agent user's profile information such as contact details and preferences.\n *\n * Mevcut acente kullanıcısının iletişim detayları ve tercihleri gibi profil bilgilerini günceller.\n *\n * @param request Profile update request / Profil güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateMyAgentUser(\n request: UpdateMyAgentUserRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(agentUsers.updateMyUser, request, options);\n }\n\n /**\n * Sends an invitation to a new user to join the agency team with specified role and permissions.\n *\n * Belirtilen rol ve izinlerle acente takımına katılması için yeni bir kullanıcıya davetiye gönderir.\n *\n * @param request User invitation request with role and contact information / Rol ve iletişim bilgileri ile kullanıcı davet talebi\n * @returns Operation result / İşlem sonucu\n */\n async inviteAgentUser(\n request: InviteAgentUserRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(agentUsers.invite, request, options);\n }\n\n /**\n * Activates an agent user account, granting them access to the platform and enabling their permissions.\n *\n * Bir acente kullanıcı hesabını aktive eder, platform erişimi verir ve izinlerini etkinleştirir.\n *\n * @param agentUserId Unique identifier of the agent user to activate / Aktive edilecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async activateAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.activate.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Deactivates an agent user account, suspending their access while preserving their profile data.\n *\n * Bir acente kullanıcı hesabını deaktive eder, profil verilerini korurken erişimlerini askıya alır.\n *\n * @param agentUserId Unique identifier of the agent user to deactivate / Deaktive edilecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deactivateAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.deactivate.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Validates an agent user invitation code to ensure it is legitimate and has not expired.\n *\n * Bir acente kullanıcı davet kodunun meşru olduğunu ve süresinin dolmadığını doğrular.\n *\n * @param code Invitation code to validate / Doğrulanacak davet kodu\n * @returns Operation result / İşlem sonucu\n */\n async checkAgentUserInviteCode(\n code: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.checkAgentUserInviteCode.render(code);\n // Note: GET always expects content, but this validation endpoint may return 204\n // If this causes issues, the API should be updated to return a response body\n return this.http.get<void>(endpoint, options) as Promise<InsurUpResult>;\n }\n\n /**\n * Permanently removes an agent user account and all associated data from the agency.\n *\n * Bir acente kullanıcı hesabını ve tüm ilişkili verileri acenteden kalıcı olarak kaldırır.\n *\n * @param agentUserId Unique identifier of the agent user to delete / Silinecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.delete.render(agentUserId);\n return this.http.deleteNoContent(endpoint, options);\n }\n\n /**\n * Retrieves detailed information about a specific agent user including their role and current status.\n *\n * Belirli bir acente kullanıcısı hakkında rolü ve mevcut durumu dahil detaylı bilgileri getirir.\n *\n * @param agentUserId Unique identifier of the agent user / Acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Agent user details / Acente kullanıcı detayları\n */\n async getAgentUserById(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAgentUserResult>> {\n const endpoint = agentUsers.getById.render(agentUserId);\n return this.http.get<GetAgentUserResult>(endpoint, options);\n }\n\n /**\n * Resends an invitation email to an agent user who may not have received or lost their original invitation.\n *\n * Orijinal davetiyesini almamış veya kaybetmiş olabilecek bir acente kullanıcısına davet e-postasını yeniden gönderir.\n *\n * @param agentUserId Unique identifier of the agent user to resend invitation / Davetiyesi yeniden gönderilecek acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async reSendInviteAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.reSendInvite.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Accepts an agent user invitation and completes the registration process for the new team member.\n *\n * Bir acente kullanıcı davetiyesini kabul eder ve yeni ekip üyesi için kayıt sürecini tamamlar.\n *\n * @param request Invitation acceptance request with user details / Kullanıcı detayları ile davetiye kabul talebi\n * @returns Operation result / İşlem sonucu\n */\n async acceptAgentUserInvite(\n request: AcceptAgentUserInviteRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(agentUsers.acceptInvite, request, options);\n }\n\n /**\n * Updates an agent user's profile information, role assignments, or access permissions by an administrator.\n *\n * Bir yönetici tarafından acente kullanıcısının profil bilgilerini, rol atamalarını veya erişim izinlerini günceller.\n *\n * @param request User update request with modified information / Değiştirilmiş bilgilerle kullanıcı güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentUser(\n request: UpdateAgentUserRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Updates an agent user's password for enhanced security or when requested by the user.\n *\n * Gelişmiş güvenlik için veya kullanıcı tarafından talep edildiğinde acente kullanıcısının şifresini günceller.\n *\n * @param request Password update request / Şifre güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateAgentUserPassword(\n request: UpdateAgentUserPasswordRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(agentUsers.updatePassword, request, options);\n }\n\n /**\n * Retrieves the current agent user's robot/automation code for API integrations and automated operations.\n *\n * API entegrasyonları ve otomatik işlemler için mevcut acente kullanıcısının robot/otomasyon kodunu getirir.\n *\n * @returns Agent user robot code / Acente kullanıcı robot kodu\n */\n async getMyAgentUserRobotCode(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetMyAgentUserRobotCodeResult>> {\n return this.http.get<GetMyAgentUserRobotCodeResult>(\n agentUsers.meRobotCode,\n options,\n );\n }\n\n /**\n * Migrates an agent user from the legacy authentication system to the AuthServer.\n * Creates an auth user and links it via AuthUserId field. A password reset email will be sent.\n *\n * Acente kullanıcısını eski kimlik doğrulama sisteminden AuthServer'a taşır.\n * Auth kullanıcısı oluşturur ve AuthUserId alanı ile bağlar. Şifre sıfırlama e-postası gönderilir.\n *\n * @param agentUserId Unique identifier of the agent user to migrate / Taşınacak acente kullanıcısının benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async migrateAgentUser(\n agentUserId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = agentUsers.migrate.render(agentUserId);\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n /**\n * Migrates all agent users in the current tenant that haven't been migrated yet.\n *\n * Henüz taşınmamış mevcut kiracıdaki tüm acente kullanıcılarını taşır.\n *\n * @returns Response with the count of migrated users / Taşınan kullanıcı sayısı ile yanıt\n */\n async migrateAllAgentUsers(\n options?: RequestOptions,\n ): Promise<InsurUpResult<MigrateAllAgentUsersResult>> {\n return this.http.post<MigrateAllAgentUsersResult>(\n agentUsers.migrateAll,\n undefined,\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries agent users using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak acente kullanıcılarını sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.agentUsers.getAgentUsers({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.agentUsers.getAgentUsers({\n * select: ['id', 'email', 'name', 'state'] as const,\n * first: 10,\n * filter: { state: { eq: AgentUserState.Active } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of agent users with type-narrowed fields\n */\n async getAgentUsers<const TFields extends AgentUserFieldKey[]>(\n requestOptions?: GetAgentUsersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<AgentUsersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_AGENT_USER_FIELDS) as AgentUserFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetAgentUsers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryAgentUserResultFilterInput\n $filter: filtering_QueryAgentUserResultFilterInput\n $order: [sorting_QueryAgentUserResultSortInput!]\n ) {\n agentUsersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n agentUsersNew: Omit<AgentUsersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<AgentUsersConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.agentUsersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.agentUsersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<AgentUsersConnection<TFields>>;\n }\n}\n","/**\n * Customer management client for the InsurUp TypeScript SDK.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport type {\n CreateCustomerRequest,\n CreateCustomerResult,\n GetCustomerResult,\n UpdateCustomerRequest,\n AddCustomerEmailRequest,\n RemoveCustomerEmailRequest,\n ChangePrimaryCustomerEmailRequest,\n GetCustomerEmailsResultItem,\n AddCustomerPhoneNumberRequest,\n RemoveCustomerPhoneNumberRequest,\n ChangePrimaryCustomerPhoneNumberRequest,\n GetCustomerPhoneNumbersResultItem,\n SetCustomerRepresentativeRequest,\n GetCustomerHealthInfoResult,\n UpdateCustomerHealthInfoRequest,\n CreateContactFlowRequest,\n CreateCustomerContactRequest,\n EndContactFlowRequest,\n GetCustomerContactFlowsResultItem,\n GetCustomerContactsResultItem,\n ExternalLookupCustomerRequest,\n ExternalLookupCustomerResult,\n SetCustomerBranchRequest,\n CreateCustomerAddressRequest,\n CreateCustomerAddressResult,\n UpdateCustomerAddressRequest,\n GetCustomerAddressResult,\n GiveCustomerConsentRequest,\n RevokeCustomerConsentRequest,\n GetCustomerConsentsResult,\n} from \"@insurup/contracts\";\nimport {\n ALL_CUSTOMER_FIELDS,\n CustomerType,\n type CustomerFieldKey,\n type GetCustomersOptions,\n type CustomersConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\n\n/**\n * Customer management client providing comprehensive customer lifecycle management.\n */\nexport class InsurUpCustomerClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Creates a new customer profile with essential personal and contact information.\n */\n async createCustomer(\n request: CreateCustomerRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerResult>> {\n // Transform request: type -> $type with lowercase discriminator for API\n const { type, ...rest } = request;\n\n let $type: string;\n switch (type) {\n case CustomerType.Individual:\n $type = \"individual\";\n break;\n case CustomerType.Company:\n $type = \"company\";\n break;\n case CustomerType.Foreign:\n $type = \"foreign\";\n break;\n }\n\n return this.http.post<CreateCustomerResult>(\n endpoints.customers.createCustomer,\n { $type, ...rest },\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific customer.\n */\n async getCustomer(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerResult>> {\n return this.http.get<GetCustomerResult>(\n endpoints.customers.getCustomer.render(customerId),\n options,\n );\n }\n\n /**\n * Retrieves the profile information of the currently authenticated customer.\n */\n async getCurrentCustomer(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerResult>> {\n return this.http.get<GetCustomerResult>(\n endpoints.customers.getCurrentCustomer,\n options,\n );\n }\n\n /**\n * Updates existing customer profile information.\n */\n async updateCustomer(\n request: UpdateCustomerRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.customers.updateCustomer.render(request.id),\n request,\n options,\n );\n }\n\n /**\n * Permanently removes a customer profile and all associated data.\n */\n async deleteCustomer(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.deleteCustomer.render(customerId),\n options,\n );\n }\n\n /**\n * Retrieves all email addresses associated with a customer.\n */\n async getCustomerEmails(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerEmailsResultItem[]>> {\n return this.http.get<GetCustomerEmailsResultItem[]>(\n endpoints.customers.emails.getCustomerEmails.render(customerId),\n options,\n );\n }\n\n /**\n * Adds a new email address to a customer's contact information.\n */\n async addCustomerEmail(\n request: AddCustomerEmailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.emails.addCustomerEmail.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Removes an email address from a customer's contact information.\n */\n async removeCustomerEmail(\n request: RemoveCustomerEmailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.emails.removeCustomerEmail.render(request),\n options,\n );\n }\n\n /**\n * Changes the primary email address for a customer.\n */\n async changePrimaryCustomerEmail(\n request: ChangePrimaryCustomerEmailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.emails.changePrimaryCustomerEmail.render(request),\n undefined,\n options,\n );\n }\n\n /**\n * Retrieves all phone numbers associated with a customer.\n */\n async getCustomerPhoneNumbers(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerPhoneNumbersResultItem[]>> {\n return this.http.get<GetCustomerPhoneNumbersResultItem[]>(\n endpoints.customers.phoneNumbers.getCustomerPhoneNumbers.render(\n customerId,\n ),\n options,\n );\n }\n\n /**\n * Adds a new phone number to a customer's contact information.\n */\n async addCustomerPhoneNumber(\n request: AddCustomerPhoneNumberRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.phoneNumbers.addCustomerPhoneNumber.render(\n request.customerId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Removes a phone number from a customer's contact information.\n */\n async removeCustomerPhoneNumber(\n request: RemoveCustomerPhoneNumberRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.phoneNumbers.removeCustomerPhoneNumber.render(\n request,\n ),\n options,\n );\n }\n\n /**\n * Changes the primary phone number for a customer.\n */\n async changePrimaryCustomerPhoneNumber(\n request: ChangePrimaryCustomerPhoneNumberRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.phoneNumbers.changePrimaryCustomerPhoneNumber.render(\n request,\n ),\n undefined,\n options,\n );\n }\n\n /**\n * Assigns a specific agent representative to manage a customer's account.\n */\n async setCustomerRepresentative(\n request: SetCustomerRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.setCustomerRepresentative.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Assigns or changes the branch for a customer to organize customer segmentation and reporting.\n *\n * Müşteri segmentasyonu ve raporlama için müşterinin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setCustomerBranch(\n request: SetCustomerBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.setCustomerBranch.render(request.customerId),\n request,\n options,\n );\n }\n\n // Address management methods\n\n /**\n * Creates a new customer address record using property number as the single source of truth.\n *\n * Tek doğruluk kaynağı olarak konut numarasını kullanarak yeni müşteri adres kaydı oluşturur.\n *\n * @param request Address creation request / Adres oluşturma talebi\n * @returns Created address information / Oluşturulan adres bilgileri\n */\n async createCustomerAddress(\n request: CreateCustomerAddressRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerAddressResult>> {\n return this.http.post<CreateCustomerAddressResult>(\n endpoints.customers.addresses.create.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Updates the type classification of an existing customer address.\n *\n * Mevcut bir müşteri adresinin tür sınıflandırmasını günceller.\n *\n * @param request Address update request / Adres güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCustomerAddress(\n request: UpdateCustomerAddressRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.customers.addresses.update.render(\n request.customerId,\n request.addressId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific customer address.\n *\n * Belirli bir müşteri adresi hakkında detaylı bilgileri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param addressId Unique identifier of the address / Adresin benzersiz tanımlayıcısı\n * @returns Address details / Adres detayları\n */\n async getCustomerAddressById(\n customerId: string,\n addressId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerAddressResult>> {\n return this.http.get<GetCustomerAddressResult>(\n endpoints.customers.addresses.getById.render(customerId, addressId),\n options,\n );\n }\n\n /**\n * Retrieves all addresses owned by a specific customer for comprehensive address management.\n *\n * Kapsamlı adres yönetimi için belirli bir müşteriye ait tüm adresleri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @returns Customer addresses / Müşteri adresleri\n */\n async getCustomerAddresses(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerAddressResult[]>> {\n return this.http.get<GetCustomerAddressResult[]>(\n endpoints.customers.addresses.getAll.render(customerId),\n options,\n );\n }\n\n /**\n * Deletes a customer address from their address collection.\n *\n * Müşterinin adres koleksiyonundan bir adresi siler.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param addressId Unique identifier of the address to delete / Silinecek adresin benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteCustomerAddress(\n customerId: string,\n addressId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n endpoints.customers.addresses.delete.render(customerId, addressId),\n options,\n );\n }\n\n // Consent management methods\n\n /**\n * Records customer consent for data processing or marketing communications in compliance with KVKK/ETK regulations.\n *\n * KVKK/ETK düzenlemelerine uygun olarak veri işleme veya pazarlama iletişimleri için müşteri iznini kaydeder.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param request Consent recording request / İzin kayıt talebi\n * @returns Operation result / İşlem sonucu\n */\n async giveCustomerConsent(\n customerId: string,\n request: GiveCustomerConsentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.consents.give.render(customerId),\n request,\n options,\n );\n }\n\n /**\n * Revokes a previously granted customer consent in accordance with customer data rights.\n *\n * Müşteri veri hakları uyarınca önceden verilmiş bir müşteri iznini geri çeker.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param request Consent revocation request / İzin geri çekme talebi\n * @returns Operation result / İşlem sonucu\n */\n async revokeCustomerConsent(\n customerId: string,\n request: RevokeCustomerConsentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.consents.revoke.render(customerId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves both active consent states and complete consent history for a customer in a single optimized API call.\n *\n * Müşterinin hem aktif izin durumlarını hem de tam izin geçmişini tek bir optimize edilmiş API çağrısında getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @returns Active consent states and complete history / Aktif izin durumları ve tam geçmiş\n */\n async getCustomerConsents(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerConsentsResult>> {\n return this.http.get<GetCustomerConsentsResult>(\n endpoints.customers.consents.getAll.render(customerId),\n options,\n );\n }\n\n /**\n * Retrieves comprehensive health information for a customer.\n */\n async getCustomerHealthInfo(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerHealthInfoResult>> {\n return this.http.get<GetCustomerHealthInfoResult>(\n endpoints.customers.getHealthInfo.render(customerId),\n options,\n );\n }\n\n /**\n * Updates customer health information.\n */\n async updateCustomerHealthInfo(\n request: UpdateCustomerHealthInfoRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.customers.updateHealthInfo.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Initiates a new customer contact flow.\n */\n async createCustomerContactFlow(\n request: CreateContactFlowRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.contactFlows.createContactFlow.render(\n request.customerId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Records a customer contact interaction.\n */\n async createCustomerContact(\n request: CreateCustomerContactRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.contacts.create.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Completes and closes a customer contact flow.\n */\n async endCustomerContactFlow(\n request: EndContactFlowRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.customers.contactFlows.endContactFlow.render(\n request.customerId,\n request.contactFlowId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves all contact flows for a customer.\n */\n async getCustomerContactFlows(\n customerId: string,\n caseRef?: string | null,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerContactFlowsResultItem[]>> {\n return this.http.get<GetCustomerContactFlowsResultItem[]>(\n endpoints.customers.contactFlows.getCustomerContactFlows.render(\n customerId,\n caseRef,\n ),\n options,\n );\n }\n\n /**\n * Retrieves all individual contact interactions for a customer.\n */\n async getCustomerContacts(\n customerId: string,\n caseRef?: string | null,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerContactsResultItem[]>> {\n return this.http.get<GetCustomerContactsResultItem[]>(\n endpoints.customers.contacts.getCustomerContacts.render(\n customerId,\n caseRef,\n ),\n options,\n );\n }\n\n /**\n * Performs external customer data lookup.\n */\n async externalLookupCustomer(\n request: ExternalLookupCustomerRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<ExternalLookupCustomerResult>> {\n return this.http.post<ExternalLookupCustomerResult>(\n endpoints.customers.externalLookup,\n request,\n options,\n );\n }\n\n // ============================================\n // GraphQL Methods\n // ============================================\n\n /**\n * Retrieves a paginated list of customers using GraphQL with type-safe field selection.\n *\n * GraphQL kullanarak tip güvenli alan seçimi ile sayfalanmış müşteri listesi getirir.\n *\n * @example\n * // Get all fields\n * const result = await client.customers.getCustomers({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.customers.getCustomers({\n * select: ['id', 'name', 'type', 'primaryEmail'] as const,\n * first: 10,\n * filter: { type: { eq: CustomerType.INDIVIDUAL } }\n * });\n * // result.data.nodes[0].id - ✓ string\n * // result.data.nodes[0].name - ✓ string | null\n * // result.data.nodes[0].type - ✓ CustomerType\n * // result.data.nodes[0].birthDate - ✗ TypeScript Error!\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of customers with type-narrowed fields\n */\n async getCustomers<const TFields extends CustomerFieldKey[]>(\n requestOptions?: GetCustomersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<CustomersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_CUSTOMER_FIELDS) as CustomerFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n const includeTotalCount = requestOptions?.includeTotalCount !== false;\n\n const query = `\n query GetCustomers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryCustomerModelFilterInput\n $filter: filtering_QueryCustomerModelFilterInput\n $order: [sorting_QueryCustomerModelSortInput!]\n ) {\n customersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n ${includeTotalCount ? \"totalCount\" : \"\"}\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables: Record<string, unknown> = {};\n\n // Default to first: 50 if no pagination params provided\n if (\n requestOptions?.first === undefined &&\n requestOptions?.last === undefined\n ) {\n variables.first = 50;\n } else {\n if (requestOptions?.first !== undefined)\n variables.first = requestOptions.first;\n if (requestOptions?.last !== undefined)\n variables.last = requestOptions.last;\n }\n\n if (requestOptions?.after !== undefined)\n variables.after = requestOptions.after;\n if (requestOptions?.before !== undefined)\n variables.before = requestOptions.before;\n if (requestOptions?.search !== undefined)\n variables.search = requestOptions.search;\n if (requestOptions?.filter !== undefined)\n variables.filter = requestOptions.filter;\n if (requestOptions?.order !== undefined)\n variables.order = requestOptions.order;\n\n const result = await this.graphql.query<{\n customersNew: Omit<CustomersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<CustomersConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.customersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n // Return the customersNew data with derived nodes\n return {\n ...result,\n data: {\n ...result.data.customersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<CustomersConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview Vehicle Client Implementation\n * @description Provides comprehensive vehicle management operations for handling customer vehicles, vehicle data lookups,\n * brand and model queries, and vehicle-based insurance operations within the automotive insurance ecosystem.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type { InsuranceParameter } from \"@insurup/contracts\";\nimport type {\n CreateCustomerVehicleRequest,\n CreateCustomerVehicleResult,\n UpdateCustomerVehicleRequest,\n GetCustomerVehicleResult,\n GetCustomerVehiclesRequest,\n GetCustomerVehiclesResult,\n ExternalLookupVehicleRequest,\n ExternalLookupVehicleResult,\n QueryVehicleModelTypesRequest,\n QueryVehicleByBrandCodeRequest,\n QueryVehicleByBrandCodeResult,\n} from \"@insurup/contracts\";\nimport { endpoints } from \"../core/endpoints.js\";\n\n/**\n * Vehicle Management Client\n *\n * Specialized client for managing customer vehicles and automotive industry data within the InsurUp platform.\n * Handles vehicle lifecycle management, chassis number validations, external vehicle data lookups, brand and model\n * queries, and vehicle-based insurance operations. Essential for agencies offering vehicle insurance products including\n * Kasko (comprehensive vehicle insurance), TSS (traffic insurance), and IMM (voluntary financial liability) coverage,\n * requiring accurate vehicle identification, validation, and market data integration for proper risk assessment and pricing.\n *\n * InsurUp platformu içinde müşteri araçları ve otomotiv sektörü verilerini yönetmek için özelleşmiş istemci.\n * Araç yaşam döngüsü yönetimi, şasi numarası doğrulamaları, harici araç veri aramaları, marka ve model sorguları ve\n * araç tabanlı sigorta operasyonlarını yönetir. Kasko (kasko araç sigortası), TSS (trafik sigortası) ve İMM (ihtiyari\n * mali mesuliyet) teminatı dahil araç sigortası ürünleri sunan ve uygun risk değerlendirmesi ile fiyatlandırma için\n * doğru araç tanımlaması, doğrulama ve pazar veri entegrasyonu gerektiren acenteler için olmazsa olmazdır.\n */\nexport class InsurUpVehicleClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Adds a new vehicle to a customer's profile with complete vehicle information including chassis number and specifications.\n *\n * Şasi numarası ve özellikler dahil tam araç bilgileri ile müşterinin profiline yeni araç ekler.\n *\n * @param request Vehicle creation request with vehicle details / Araç detayları ile araç oluşturma talebi\n * @returns Created vehicle information / Oluşturulan araç bilgileri\n */\n async addCustomerVehicle(\n request: CreateCustomerVehicleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerVehicleResult>> {\n const path = endpoints.vehicles.create.render(request.customerId);\n return this.http.post<CreateCustomerVehicleResult>(path, request, options);\n }\n\n /**\n * Updates existing customer vehicle information including modifications, ownership changes, or specification updates.\n *\n * Modifikasyonlar, sahiplik değişiklikleri veya özellik güncellemeleri dahil mevcut müşteri araç bilgilerini günceller.\n *\n * @param request Vehicle update request / Araç güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCustomerVehicle(\n request: UpdateCustomerVehicleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const path = endpoints.vehicles.update.render(\n request.customerId,\n request.vehicleId,\n );\n return this.http.putNoContent(path, request, options);\n }\n\n /**\n * Retrieves detailed information about a specific customer vehicle including its insurance history and current status.\n *\n * Belirli bir müşteri aracı hakkında sigorta geçmişi ve mevcut durumu dahil detaylı bilgileri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param vehicleId Unique identifier of the vehicle / Aracın benzersiz tanımlayıcısı\n * @returns Vehicle details / Araç detayları\n */\n async getCustomerVehicle(\n customerId: string,\n vehicleId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerVehicleResult>> {\n const path = endpoints.vehicles.get.render(customerId, vehicleId);\n return this.http.get<GetCustomerVehicleResult>(path, options);\n }\n\n /**\n * Retrieves all vehicles owned by a specific customer for comprehensive vehicle portfolio management.\n *\n * Kapsamlı araç portföy yönetimi için belirli bir müşterinin sahip olduğu tüm araçları getirir.\n *\n * @param request Customer vehicles query request / Müşteri araçları sorgu talebi\n * @returns List of customer vehicles / Müşteri araçları listesi\n */\n async getCustomerVehicles(\n request: GetCustomerVehiclesRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerVehiclesResult[]>> {\n const path = endpoints.vehicles.getCustomerVehicles.render(\n request.customerId,\n );\n return this.http.get<GetCustomerVehiclesResult[]>(path, options);\n }\n\n /**\n * Permanently removes a customer vehicle record from the system with proper data cleanup and insurance impact assessment.\n *\n * Uygun veri temizliği ve sigorta etki değerlendirmesi ile müşteri araç kaydını sistemden kalıcı olarak kaldırır.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param vehicleId Unique identifier of the vehicle / Aracın benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteCustomerVehicle(\n customerId: string,\n vehicleId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const path = endpoints.vehicles.delete.render(customerId, vehicleId);\n return this.http.deleteNoContent(path, options);\n }\n\n /**\n * Performs external vehicle data lookup using chassis number or license plate to retrieve official vehicle information.\n *\n * Resmi araç bilgilerini almak için şasi numarası veya plaka kullanarak harici araç veri araması yapar.\n *\n * @param request External vehicle lookup request / Harici araç arama talebi\n * @returns External vehicle data / Harici araç verileri\n */\n async externalLookupVehicle(\n request: ExternalLookupVehicleRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<ExternalLookupVehicleResult>> {\n const path = endpoints.vehicles.externalLookup.render(request.customerId);\n return this.http.post<ExternalLookupVehicleResult>(path, request, options);\n }\n\n /**\n * Retrieves all available vehicle brands for vehicle selection and registration purposes.\n *\n * Araç seçimi ve kayıt amaçları için mevcut tüm araç markalarını getirir.\n *\n * @returns List of vehicle brands / Araç markaları listesi\n */\n async queryVehicleBrands(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n const path = endpoints.vehicleParameters.queryBrands;\n return this.http.get<InsuranceParameter[]>(path, options);\n }\n\n /**\n * Retrieves all vehicle models for a specific brand including different model years and specifications.\n *\n * Farklı model yılları ve özellikler dahil belirli bir marka için tüm araç modellerini getirir.\n *\n * @param request Vehicle model query request / Araç modeli sorgu talebi\n * @returns List of vehicle models / Araç modelleri listesi\n */\n async queryVehicleModels(\n request: QueryVehicleModelTypesRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n const path = endpoints.vehicleParameters.queryModels.render(request);\n return this.http.get<InsuranceParameter[]>(path, options);\n }\n\n /**\n * Queries vehicle information using a specific brand code to retrieve detailed brand and model specifications.\n *\n * Detaylı marka ve model özelliklerini almak için belirli bir marka kodu kullanarak araç bilgilerini sorgular.\n *\n * @param brandCode Vehicle brand code for query / Sorgu için araç marka kodu\n * @returns Vehicle brand information / Araç marka bilgileri\n */\n async queryVehicleByBrandCode(\n brandCode: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<QueryVehicleByBrandCodeResult>> {\n const path = endpoints.insuranceServices.queryVehicleByBrandCode;\n const request: QueryVehicleByBrandCodeRequest = { brandCode };\n return this.http.post<QueryVehicleByBrandCodeResult>(\n path,\n request,\n options,\n );\n }\n}\n","/**\n * Property Management Client\n *\n * Provides comprehensive property management operations for handling customer properties, Turkish address hierarchy queries,\n * DASK earthquake insurance lookups, and property-based insurance operations within the real estate insurance ecosystem.\n *\n * Gayrimenkul sigorta ekosistemi içinde müşteri mülklerini yönetme, Türk adres hiyerarşisi sorguları, DASK deprem\n * sigortası aramaları ve mülk tabanlı sigorta operasyonları için kapsamlı mülk yönetimi işlemlerini sağlar.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type { InsuranceParameter } from \"@insurup/contracts\";\nimport type {\n // Address parameter requests\n QueryDistrictsRequest,\n QueryTownsRequest,\n QueryNeighbourhoodsRequest,\n QueryStreetsRequest,\n QueryBuildingsRequest,\n QueryApartmentsRequest,\n\n // Property management requests\n CreateCustomerPropertyRequest,\n UpdateCustomerPropertyRequest,\n GetPropertyAddressByPropertyNumberRequest,\n\n // Property management responses\n CreateCustomerPropertyResult,\n GetCustomerPropertyByIdResult,\n GetAllCustomerPropertiesResult,\n QueryPropertyByDaskOldPolicyResult,\n} from \"@insurup/contracts\";\nimport type { PropertyAddress } from \"@insurup/contracts\";\nimport { addressParameters, properties } from \"../core/endpoints.js\";\n\n/**\n * Property Management Client\n *\n * Specialized client for managing customer properties and Turkish address system integration within the InsurUp platform.\n * Handles the complete Turkish administrative address hierarchy (City→District→Town→Neighborhood→Street→Building→Apartment),\n * customer property lifecycle management, DASK earthquake insurance policy lookups, and property-based insurance operations.\n * Essential for agencies offering property insurance products including home insurance (Konut), earthquake insurance (DASK),\n * and commercial property coverage, requiring precise address validation and property identification within Turkey's\n * administrative structure.\n *\n * InsurUp platformu içinde müşteri mülkleri ve Türk adres sistemi entegrasyonunu yönetmek için özelleşmiş istemci.\n * Tam Türk idari adres hiyerarşisini (Şehir→İlçe→Kasaba→Mahalle→Sokak→Bina→Daire), müşteri mülk yaşam döngüsü yönetimini,\n * DASK deprem sigortası poliçe aramalarını ve mülk tabanlı sigorta operasyonlarını yönetir. Ev sigortası (Konut), deprem\n * sigortası (DASK) ve ticari mülk teminatı dahil mülk sigortası ürünleri sunan ve Türkiye'nin idari yapısı içinde hassas\n * adres doğrulaması ve mülk tanımlaması gerektiren acenteler için olmazsa olmazdır.\n */\nexport class InsurUpPropertyClient {\n constructor(private readonly http: HttpTransport) {}\n\n // ===== LOCATION/ADDRESS QUERY METHODS =====\n\n /**\n * Retrieves all cities (provinces) in Turkey for address selection and property location identification.\n *\n * Adres seçimi ve mülk konum tanımlaması için Türkiye'deki tüm şehirleri (illeri) getirir.\n *\n * @returns List of Turkish cities / Türk şehirleri listesi\n */\n async queryCities(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryCities,\n options,\n );\n }\n\n /**\n * Retrieves all districts within a specific city following the Turkish administrative hierarchy.\n *\n * Türk idari hiyerarşisini takip ederek belirli bir şehir içindeki tüm ilçeleri getirir.\n *\n * @param request District query request with city selection / Şehir seçimi ile ilçe sorgu talebi\n * @returns List of districts in the selected city / Seçilen şehirdeki ilçeler listesi\n */\n async queryDistricts(\n request: QueryDistrictsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryDistricts.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all towns within a specific district for precise administrative location identification.\n *\n * Hassas idari konum tanımlaması için belirli bir ilçe içindeki tüm kasabaları getirir.\n *\n * @param request Town query request with district selection / İlçe seçimi ile kasaba sorgu talebi\n * @returns List of towns in the selected district / Seçilen ilçedeki kasabalar listesi\n */\n async queryTowns(\n request: QueryTownsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryTowns.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all neighborhoods within a specific administrative area for detailed address specification.\n *\n * Detaylı adres belirtimi için belirli bir idari alan içindeki tüm mahalleleri getirir.\n *\n * @param request Neighborhood query request / Mahalle sorgu talebi\n * @returns List of neighborhoods / Mahalleler listesi\n */\n async queryNeighborhoods(\n request: QueryNeighbourhoodsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryNeighbourhoods.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all streets within a specific neighborhood for complete address formation.\n *\n * Tam adres oluşturma için belirli bir mahalle içindeki tüm sokakları getirir.\n *\n * @param request Street query request / Sokak sorgu talebi\n * @returns List of streets / Sokaklar listesi\n */\n async queryStreets(\n request: QueryStreetsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryStreets.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all buildings on a specific street for precise property identification and addressing.\n *\n * Hassas mülk tanımlaması ve adresleme için belirli bir sokaktaki tüm binaları getirir.\n *\n * @param request Building query request / Bina sorgu talebi\n * @returns List of buildings / Binalar listesi\n */\n async queryBuildings(\n request: QueryBuildingsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryBuildings.render(request),\n options,\n );\n }\n\n /**\n * Retrieves all apartments within a specific building for individual property unit identification.\n *\n * Bireysel mülk birimi tanımlaması için belirli bir bina içindeki tüm daireleri getirir.\n *\n * @param request Apartment query request / Daire sorgu talebi\n * @returns List of apartments / Daireler listesi\n */\n async queryApartments(\n request: QueryApartmentsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceParameter[]>> {\n return this.http.get<InsuranceParameter[]>(\n addressParameters.queryApartments.render(request),\n options,\n );\n }\n\n // ===== PROPERTY MANAGEMENT METHODS =====\n\n /**\n * Creates a new customer property record with complete address information and property characteristics for insurance purposes.\n *\n * Sigorta amaçları için tam adres bilgileri ve mülk özellikleri ile yeni müşteri mülk kaydı oluşturur.\n *\n * @param request Property creation request with details / Detaylar ile mülk oluşturma talebi\n * @returns Created property information / Oluşturulan mülk bilgileri\n */\n async createCustomerProperty(\n request: CreateCustomerPropertyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateCustomerPropertyResult>> {\n return this.http.post<CreateCustomerPropertyResult>(\n properties.create.render(request.customerId),\n request,\n options,\n );\n }\n\n /**\n * Updates existing customer property information including address changes, structural modifications, or usage updates.\n *\n * Adres değişiklikleri, yapısal değişiklikler veya kullanım güncellemeleri dahil mevcut müşteri mülk bilgilerini günceller.\n *\n * @param request Property update request / Mülk güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCustomerProperty(\n request: UpdateCustomerPropertyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n properties.update.render(request.customerId, request.propertyId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific customer property including its insurance history and characteristics.\n *\n * Belirli bir müşteri mülkü hakkında sigorta geçmişi ve özellikleri dahil detaylı bilgileri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param propertyId Unique identifier of the property / Mülkün benzersiz tanımlayıcısı\n * @returns Property details / Mülk detayları\n */\n async getCustomerPropertyById(\n customerId: string,\n propertyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCustomerPropertyByIdResult>> {\n return this.http.get<GetCustomerPropertyByIdResult>(\n properties.getById.render(customerId, propertyId),\n options,\n );\n }\n\n /**\n * Retrieves all properties owned by a specific customer for comprehensive property portfolio management.\n *\n * Kapsamlı mülk portföy yönetimi için belirli bir müşterinin sahip olduğu tüm mülkleri getirir.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @returns List of customer properties / Müşteri mülkleri listesi\n */\n async getCustomerProperties(\n customerId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllCustomerPropertiesResult[]>> {\n return this.http.get<GetAllCustomerPropertiesResult[]>(\n properties.getAll.render(customerId),\n options,\n );\n }\n\n /**\n * Permanently removes a customer property record from the system with proper data cleanup and insurance impact assessment.\n *\n * Uygun veri temizliği ve sigorta etki değerlendirmesi ile müşteri mülk kaydını sistemden kalıcı olarak kaldırır.\n *\n * @param customerId Unique identifier of the customer / Müşterinin benzersiz tanımlayıcısı\n * @param propertyId Unique identifier of the property / Mülkün benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteCustomerProperty(\n customerId: string,\n propertyId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n properties.delete.render(customerId, propertyId),\n options,\n );\n }\n\n /**\n * Retrieves property address information using the official Turkish property registration number for verification purposes.\n *\n * Doğrulama amaçları için resmi Türk mülk kayıt numarasını kullanarak mülk adres bilgilerini getirir.\n *\n * @param propertyNumber Official Turkish property registration number / Resmi Türk mülk kayıt numarası\n * @returns Property address information / Mülk adres bilgileri\n */\n async getPropertyAddressByPropertyNumber(\n propertyNumber: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<PropertyAddress>> {\n return this.http.post<PropertyAddress>(\n properties.getPropertyAddressByPropertyNumber,\n {\n propertyNumber,\n } satisfies GetPropertyAddressByPropertyNumberRequest,\n options,\n );\n }\n\n /**\n * Queries property information using an existing DASK earthquake insurance policy number for cross-reference and continuity.\n *\n * Çapraz referans ve süreklilik için mevcut DASK deprem sigortası poliçe numarasını kullanarak mülk bilgilerini sorgular.\n *\n * @param daskPolicyNumber DASK earthquake insurance policy number / DASK deprem sigortası poliçe numarası\n * @returns Property information from DASK records / DASK kayıtlarından mülk bilgileri\n */\n async queryPropertyByDaskOldPolicy(\n daskPolicyNumber: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<QueryPropertyByDaskOldPolicyResult>> {\n return this.http.post<QueryPropertyByDaskOldPolicyResult>(\n properties.queryPropertyByDaskOldPolicy,\n { daskPolicyNumber },\n options,\n );\n }\n}\n","/**\n * @fileoverview Policy Management Client - Comprehensive policy operations\n * @description Provides comprehensive policy management operations for handling active insurance policies,\n * document generation, customer communications, representative assignments, and policy transfer processes\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport type {\n GetPolicyDetailRequest,\n GetPolicyDetailResult,\n FetchPolicyDocumentRequest,\n FetchPolicyDocumentResult,\n SendPolicyDocumentRequest,\n SetPolicyRepresentativeRequest,\n SetPolicyBranchRequest,\n CreateManualPolicyRequest,\n CreateManualPolicyResult,\n UpdateManualPolicyRequest,\n GetPolicyCountAndPremiumAnalyticsRequest,\n GetPolicyCountAndPremiumAnalyticsResult,\n GetPolicyRenewalAnalyticsRequest,\n GetPolicyRenewalAnalyticsResult,\n GetPolicyDistributionByBranchRequest,\n GetPolicyDistributionByBranchResult,\n GetRepresentativeEarningsAnalyticsRequest,\n GetRepresentativeEarningsAnalyticsResult,\n} from \"@insurup/contracts\";\nimport type {\n GetPolicyTransferDetailRequest,\n GetPolicyTransferDetailResult,\n GetPolicyTransferTriggerDetailRequest,\n GetPolicyTransferTriggerDetailResult,\n CreatePolicyTransferRequest,\n TriggerPolicyTransferRequest,\n CreateFilePolicyTransferRequest,\n GetFilePolicyTransferDetailRequest,\n GetFilePolicyTransferDetailResult,\n} from \"@insurup/contracts\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport {\n ALL_POLICY_FIELDS,\n type PolicyFieldKey,\n type GetPoliciesOptions,\n type PoliciesConnection,\n} from \"@insurup/contracts\";\nimport {\n ALL_POLICY_TRANSFER_FIELDS,\n type PolicyTransferFieldKey,\n type GetPolicyTransfersOptions,\n type PolicyTransfersConnection,\n} from \"@insurup/contracts\";\nimport {\n ALL_FILE_POLICY_TRANSFER_FIELDS,\n type FilePolicyTransferFieldKey,\n type GetFilePolicyTransfersOptions,\n type FilePolicyTransfersConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\n\n/**\n * Policy Management Client / Poliçe Yönetimi İstemcisi\n *\n * Central client for managing active insurance policies throughout their lifecycle from issuance to expiration.\n * Handles policy documentation, customer communication, representative management, and complex policy transfer operations\n * including bulk transfers and file-based transfers. Essential for agencies that need to maintain comprehensive policy\n * administration, ensure proper documentation delivery to customers, manage policy ownership changes, and coordinate\n * policy transfers between different systems or agents while maintaining audit trails and regulatory compliance.\n *\n * Düzenlenmesinden sona ermesine kadar aktif sigorta poliçelerini yaşam döngüleri boyunca yönetmek için merkezi istemci.\n * Poliçe dokümantasyonu, müşteri iletişimi, temsilci yönetimi ve toplu transferler ile dosya tabanlı transferler dahil\n * karmaşık poliçe transfer operasyonlarını yönetir. Kapsamlı poliçe yönetimi sürdürmesi, müşterilere uygun dokümantasyon\n * teslimatını sağlaması, poliçe sahiplik değişikliklerini yönetmesi ve denetim izleri ile düzenleyici uyumu korurken\n * farklı sistemler veya acenteler arasında poliçe transferlerini koordine etmesi gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpPolicyClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Retrieves comprehensive details of a specific policy including coverage information, premium details, and current status.\n *\n * Teminat bilgileri, prim detayları ve mevcut durum dahil belirli bir poliçenin kapsamlı detaylarını getirir.\n *\n * @param request - Policy detail request with policy ID\n * @returns Detailed policy information\n */\n async getPolicyDetail(\n request: GetPolicyDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyDetailResult>> {\n return this.http.get<GetPolicyDetailResult>(\n endpoints.policies.getPolicyDetail.render(request.policyId),\n options,\n );\n }\n\n /**\n * Fetches the official policy document from the insurance company's systems for customer delivery or records.\n *\n * Müşteri teslimatı veya kayıtlar için sigorta şirketinin sistemlerinden resmi poliçe belgesini getirir.\n *\n * @param request - Policy document fetch request with policy ID\n * @returns Policy document data\n */\n async fetchPolicyDocument(\n request: FetchPolicyDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<FetchPolicyDocumentResult>> {\n return this.http.get<FetchPolicyDocumentResult>(\n endpoints.policies.fetchPolicyDocument.render(request.policyId),\n options,\n );\n }\n\n /**\n * Sends the policy document directly to the customer via email or other communication channels for their records.\n *\n * Poliçe belgesini müşterinin kayıtları için e-posta veya diğer iletişim kanalları aracılığıyla doğrudan müşteriye gönderir.\n *\n * @param request - Document delivery request\n * @returns Operation result\n */\n async sendPolicyDocumentToCustomer(\n request: SendPolicyDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policies.sendPolicyDocument.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Assigns or updates the representative responsible for managing a specific policy and customer relationship.\n *\n * Belirli bir poliçeyi ve müşteri ilişkisini yönetmekten sorumlu temsilciyi atar veya günceller.\n *\n * @param request - Representative assignment request\n * @returns Operation result\n */\n async setPolicyRepresentative(\n request: SetPolicyRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policies.setPolicyRepresentative.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Assigns or changes the branch for a policy to organize policy segmentation and reporting.\n *\n * Poliçe segmentasyonu ve raporlama için poliçenin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setPolicyBranch(\n request: SetPolicyBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policies.setPolicyBranch.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Creates a new manual policy through the agent panel without insurance services integration.\n *\n * Sigorta hizmetleri entegrasyonu olmadan acente paneli üzerinden yeni manuel poliçe oluşturur.\n *\n * @param request Manual policy creation request / Manuel poliçe oluşturma talebi\n * @returns Created policy identifier / Oluşturulan poliçe tanımlayıcısı\n */\n async createManualPolicy(\n request: CreateManualPolicyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateManualPolicyResult>> {\n return this.http.post<CreateManualPolicyResult>(\n endpoints.policies.createManualPolicy.definition,\n request,\n options,\n );\n }\n\n /**\n * Updates an existing manual policy through the agent panel and creates a new policy version for tracking changes.\n *\n * Acente paneli üzerinden mevcut manuel poliçeyi günceller ve değişiklikleri takip etmek için yeni poliçe versiyonu oluşturur.\n *\n * @param request Manual policy update request / Manuel poliçe güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateManualPolicy(\n request: UpdateManualPolicyRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n endpoints.policies.updateManualPolicy.render(request.policyId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves comprehensive policy count and gross premium analytics with flexible filtering and grouping options.\n * Provides time series data, summary KPIs, and optional grouping by product branch or insurance company.\n *\n * Esnek filtreleme ve gruplama seçenekleri ile kapsamlı poliçe adedi ve brüt prim analitiği getirir.\n * Zaman serisi verileri, özet KPI'lar ve isteğe bağlı ürün branşı veya sigorta şirketine göre gruplama sağlar.\n *\n * @param request Analytics request with filters and grouping options / Filtreler ve gruplama seçenekleri ile analitik talebi\n * @returns Comprehensive analytics data including KPIs, time series, and grouped data / KPI'lar, zaman serisi ve gruplanmış veriler dahil kapsamlı analitik verileri\n */\n async getPolicyCountAndPremiumAnalytics(\n request: GetPolicyCountAndPremiumAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyCountAndPremiumAnalyticsResult>> {\n return this.http.post<GetPolicyCountAndPremiumAnalyticsResult>(\n endpoints.policies.getPolicyCountAndPremiumAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves stacked daily renewal analytics for policies with RenewalNumber greater than zero.\n * Provides branch segmented counts together with total and peak KPIs.\n *\n * RenewalNumber değeri sıfırdan büyük olan poliçeler için günlük yenileme analitiği sağlar.\n * Branş bazlı yığılmış adetler ile toplam ve pik KPI değerlerini döner.\n *\n * @param request Renewal analytics request with filtering options / Filtre seçenekleri ile yenileme analitiği isteği\n * @returns Renewal analytics response / Yenileme analitiği yanıtı\n */\n async getPolicyRenewalAnalytics(\n request: GetPolicyRenewalAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyRenewalAnalyticsResult>> {\n return this.http.post<GetPolicyRenewalAnalyticsResult>(\n endpoints.policies.getPolicyRenewalAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves policy distribution by branch analytics data.\n * Provides aggregated counts, gross premiums, and percentage shares grouped by product branch.\n *\n * Branş bazında poliçe dağılımı analitik verilerini getirir.\n * Ürün branşına göre gruplanmış toplam adetler, brüt primler ve yüzde payları sağlar.\n *\n * @param request Distribution analytics request with filtering options / Filtre seçenekleri ile dağılım analitiği isteği\n * @returns Distribution analytics response / Dağılım analitiği yanıtı\n */\n async getPolicyDistributionByBranch(\n request: GetPolicyDistributionByBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyDistributionByBranchResult>> {\n return this.http.post<GetPolicyDistributionByBranchResult>(\n endpoints.policies.getPolicyDistributionByBranch.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves representative earnings analytics data.\n * Provides earnings breakdown grouped by representative for performance tracking.\n *\n * Temsilci kazanç analitik verilerini getirir.\n * Performans takibi için temsilciye göre gruplanmış kazanç dökümü sağlar.\n *\n * @param request Representative earnings analytics request with filtering options / Filtre seçenekleri ile temsilci kazanç analitiği isteği\n * @returns Representative earnings analytics response / Temsilci kazanç analitiği yanıtı\n */\n async getRepresentativeEarningsAnalytics(\n request: GetRepresentativeEarningsAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetRepresentativeEarningsAnalyticsResult>> {\n return this.http.post<GetRepresentativeEarningsAnalyticsResult>(\n endpoints.policies.getRepresentativeEarningsAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific policy transfer process including status and progress tracking.\n *\n * Durum ve ilerleme takibi dahil belirli bir poliçe transfer süreciyle ilgili detaylı bilgileri getirir.\n *\n * @param request - Policy transfer detail request\n * @returns Policy transfer details\n */\n async getPolicyTransferDetail(\n request: GetPolicyTransferDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyTransferDetailResult>> {\n return this.http.get<GetPolicyTransferDetailResult>(\n endpoints.policyTransfers.getPolicyTransferDetail.render(\n request.policyTransferId,\n ),\n options,\n );\n }\n\n /**\n * Retrieves specific trigger details for a policy transfer process to understand execution conditions and timing.\n *\n * Yürütme koşulları ve zamanlamasını anlamak için poliçe transfer sürecinin belirli tetikleyici detaylarını getirir.\n *\n * @param request - Policy transfer trigger detail request\n * @returns Transfer trigger details\n */\n async getPolicyTransferTriggerDetail(\n request: GetPolicyTransferTriggerDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetPolicyTransferTriggerDetailResult>> {\n return this.http.get<GetPolicyTransferTriggerDetailResult>(\n endpoints.policyTransfers.getPolicyTransferTriggerDetail.render(\n request.policyTransferId,\n request.policyTransferTriggerId,\n ),\n options,\n );\n }\n\n /**\n * Creates a new policy transfer request to move policies between agents, agencies, or systems with proper validation.\n *\n * Uygun doğrulama ile poliçeleri acenteler, acenteler veya sistemler arasında taşımak için yeni poliçe transfer talebi oluşturur.\n *\n * @param request - Policy transfer creation request\n * @returns Created transfer identifier\n */\n async createPolicyTransfer(\n request: CreatePolicyTransferRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return this.http.post<string>(\n endpoints.policyTransfers.create,\n request,\n options,\n );\n }\n\n /**\n * Executes a prepared policy transfer, initiating the actual movement of policies according to the transfer configuration.\n *\n * Hazırlanmış poliçe transferini yürütür ve transfer yapılandırmasına göre poliçelerin gerçek hareketini başlatır.\n *\n * @param request - Policy transfer trigger request\n * @returns Operation result\n */\n async triggerPolicyTransfer(\n request: TriggerPolicyTransferRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.policyTransfers.triggerPolicyTransfer.render(\n request.policyTransferId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Creates a file-based policy transfer by uploading a file containing policy information for bulk transfer operations.\n *\n * Toplu transfer işlemleri için poliçe bilgilerini içeren dosya yükleyerek dosya tabanlı poliçe transferi oluşturur.\n *\n * @param request - File-based transfer request\n * @param file - File containing policy data\n * @param fileName - Name of the uploaded file\n * @returns Operation result\n */\n async createFilePolicyTransfer(\n request: CreateFilePolicyTransferRequest,\n file: File,\n fileName: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n // Create FormData for multipart file upload\n const formData = new FormData();\n formData.append(\n \"insuranceCompanyId\",\n request.insuranceCompanyId.toString(),\n );\n formData.append(\"file\", file, fileName);\n\n return this.http.postNoContent(\n endpoints.filePolicyTransfers.create,\n formData,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a file-based policy transfer including processing status and results.\n *\n * İşleme durumu ve sonuçları dahil dosya tabanlı poliçe transferi hakkında detaylı bilgileri getirir.\n *\n * @param request - File policy transfer detail request\n * @returns File transfer details\n */\n async getFilePolicyTransferDetail(\n request: GetFilePolicyTransferDetailRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetFilePolicyTransferDetailResult>> {\n return this.http.get<GetFilePolicyTransferDetailResult>(\n endpoints.filePolicyTransfers.getFilePolicyTransferDetail.render(\n request.filePolicyTransferId,\n ),\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries policies using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak poliçeleri sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.policies.getPolicies({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.policies.getPolicies({\n * select: ['id', 'productBranch', 'grossPremium', 'state'] as const,\n * first: 10,\n * filter: { state: { eq: PolicyState.Active } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of policies with type-narrowed fields\n */\n async getPolicies<const TFields extends PolicyFieldKey[]>(\n requestOptions?: GetPoliciesOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<PoliciesConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_POLICY_FIELDS) as PolicyFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n const includeTotalCount = requestOptions?.includeTotalCount !== false;\n\n const query = `\n query GetPolicies(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryPoliciesResultFilterInput\n $filter: filtering_QueryPoliciesResultFilterInput\n $order: [sorting_QueryPoliciesResultSortInput!]\n ) {\n policiesNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n ${includeTotalCount ? \"totalCount\" : \"\"}\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n policiesNew: Omit<PoliciesConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<PoliciesConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.policiesNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.policiesNew,\n nodes,\n },\n } as InsurUpGraphQLResult<PoliciesConnection<TFields>>;\n }\n\n /**\n * Queries policy transfers using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak poliçe transferlerini sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.policies.getPolicyTransfers({ first: 10 });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of policy transfers with type-narrowed fields\n */\n async getPolicyTransfers<const TFields extends PolicyTransferFieldKey[]>(\n requestOptions?: GetPolicyTransfersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<PolicyTransfersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_POLICY_TRANSFER_FIELDS) as PolicyTransferFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetPolicyTransfers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryPolicyTransfersResultFilterInput\n $filter: filtering_QueryPolicyTransfersResultFilterInput\n $order: [sorting_QueryPolicyTransfersResultSortInput!]\n ) {\n policyTransfersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n policyTransfersNew: Omit<PolicyTransfersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<PolicyTransfersConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.policyTransfersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.policyTransfersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<PolicyTransfersConnection<TFields>>;\n }\n\n /**\n * Queries file policy transfers using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak dosya bazlı poliçe transferlerini sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.policies.getFilePolicyTransfers({ first: 10 });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of file policy transfers with type-narrowed fields\n */\n async getFilePolicyTransfers<\n const TFields extends FilePolicyTransferFieldKey[],\n >(\n requestOptions?: GetFilePolicyTransfersOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<FilePolicyTransfersConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_FILE_POLICY_TRANSFER_FIELDS) as FilePolicyTransferFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetFilePolicyTransfers(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryFilePolicyTransfersResultFilterInput\n $filter: filtering_QueryFilePolicyTransfersResultFilterInput\n $order: [sorting_QueryFilePolicyTransfersResultSortInput!]\n ) {\n filePolicyTransfersNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n filePolicyTransfersNew: Omit<FilePolicyTransfersConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<\n FilePolicyTransfersConnection<TFields>\n >;\n }\n\n // Derive nodes from edges\n const edges = result.data.filePolicyTransfersNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.filePolicyTransfersNew,\n nodes,\n },\n } as InsurUpGraphQLResult<FilePolicyTransfersConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview Case Management Client - Direct port from DefaultInsurUpClient.Case.cs\n * @description TypeScript client for case management operations\n */\n\nimport { cases } from \"../core/endpoints.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport {\n ALL_CASE_FIELDS,\n type CaseFieldKey,\n type GetCasesOptions,\n type CasesConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n // Request types\n AssignCaseRepresentativeRequest,\n ChangeCaseChannelRequest,\n ChangeCaseStateRequest,\n CreateCancelCaseRequest,\n CreateComplaintCaseRequest,\n CreateCrossSaleOpportunityCaseRequest,\n CreateEndorsementCaseRequest,\n CreateNewSaleOpportunityCaseRequest,\n AddNoteToCaseRequest,\n SetCaseAssetRequest,\n SetCaseBranchRequest,\n GetSalesOpportunityFunnelAnalyticsRequest,\n GetOpenCaseBacklogPivotAnalyticsRequest,\n GetFailedCasesReasonDistributionRequest,\n // Response types\n GetCaseByRefResult,\n CasePolicyResult,\n CaseActivityResult,\n CaseProposalResult,\n GetSalesOpportunityFunnelAnalyticsResult,\n GetOpenCaseBacklogPivotAnalyticsResult,\n GetFailedCasesReasonDistributionResult,\n CaseCommunicationAutomationResult,\n GetCasePriorityTemplatesResult,\n} from \"@insurup/contracts\";\n\n/**\n * Case Management Client\n *\n * Central client for managing all types of customer cases and requests within the InsurUp platform. Handles various\n * case types including policy cancellations, customer complaints, cross-sale opportunities, endorsement requests, and\n * new sale opportunities. Provides comprehensive workflow management including case representative assignment, status tracking, activity\n * logging, and representative management. Essential for agencies that need to maintain organized customer service operations\n * and ensure proper follow-up on all customer interactions and business opportunities.\n *\n * InsurUp platformu içinde her türlü müşteri talebi ve isteğini yönetmek için merkezi istemci. Poliçe iptalleri,\n * müşteri şikayetleri, çapraz satış fırsatları, zeyilname talepleri ve yeni satış fırsatları dahil çeşitli talep türlerini\n * yönetir. Talep atama, durum takibi, aktivite kaydı ve temsilci yönetimi dahil kapsamlı iş akışı yönetimi sağlar.\n * Düzenli müşteri hizmet operasyonlarını sürdürmesi ve tüm müşteri etkileşimleri ile iş fırsatlarında uygun takibi\n * sağlaması gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpCaseClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Assigns a case representative to handle a specific customer case, ensuring proper ownership and accountability.\n *\n * Belirli bir müşteri talebini ele almak için talep temsilcisi atar ve uygun sahiplik ile hesap verebilirliği sağlar.\n *\n * @param request Case representative assignment request with representative details / Temsilci detayları ile talep atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async assignCaseRepresentative(\n request: AssignCaseRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.assignRepresentative.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Changes the communication channel for a case to redirect it to appropriate department or platform.\n *\n * Bir talebin iletişim kanalını değiştirerek uygun departman veya platforma yönlendirir.\n *\n * @param request Channel change request / Kanal değişiklik talebi\n * @returns Operation result / İşlem sonucu\n */\n async changeCaseChannel(\n request: ChangeCaseChannelRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.changeChannel.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Updates the status of a case to reflect its current progress in the resolution workflow.\n *\n * Çözüm iş akışındaki mevcut ilerlemesini yansıtmak için talebin durumunu günceller.\n *\n * @param request Status change request / Durum değişiklik talebi\n * @returns Operation result / İşlem sonucu\n */\n async changeCaseState(\n request: ChangeCaseStateRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.changeState.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Creates a policy cancellation case when a customer requests to terminate their insurance coverage.\n *\n * Müşteri sigorta teminatını sonlandırma talebinde bulunduğunda poliçe iptal talebi oluşturur.\n *\n * @param request Cancellation case creation request / İptal talebi oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createCancelCase(\n request: CreateCancelCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(cases.createCancel, request, options);\n }\n\n /**\n * Creates a complaint case to handle customer dissatisfaction or service issues requiring resolution.\n *\n * Müşteri memnuniyetsizliği veya çözüm gerektiren hizmet sorunlarını ele almak için şikayet talebi oluşturur.\n *\n * @param request Complaint case creation request / Şikayet talebi oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createComplaintCase(\n request: CreateComplaintCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createComplaint,\n request,\n options,\n );\n }\n\n /**\n * Creates a cross-sale opportunity case to track potential additional insurance products for existing customers.\n *\n * Mevcut müşteriler için potansiyel ek sigorta ürünlerini takip etmek üzere çapraz satış fırsatı talebi oluşturur.\n *\n * @param request Cross-sale opportunity creation request / Çapraz satış fırsatı oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createCrossSaleOpportunityCase(\n request: CreateCrossSaleOpportunityCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createCrossSaleOpportunity,\n request,\n options,\n );\n }\n\n /**\n * Creates an endorsement case for policy modifications or updates requested by the customer.\n *\n * Müşteri tarafından talep edilen poliçe değişiklikleri veya güncellemeler için zeyilname talebi oluşturur.\n *\n * @param request Endorsement case creation request / Zeyilname talebi oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createEndorsementCase(\n request: CreateEndorsementCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createEndorsement,\n request,\n options,\n );\n }\n\n /**\n * Creates a new sale opportunity case to track potential insurance sales to prospective customers.\n *\n * Potansiyel müşterilere olası sigorta satışlarını takip etmek için yeni satış fırsatı talebi oluşturur.\n *\n * @param request New sale opportunity creation request / Yeni satış fırsatı oluşturma talebi\n * @returns Created case identifier / Oluşturulan talep tanımlayıcısı\n */\n async createNewSaleOpportunityCase(\n request: CreateNewSaleOpportunityCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<string>> {\n return await this.http.post<string>(\n cases.createNewSaleOpportunity,\n request,\n options,\n );\n }\n\n /**\n * Retrieves all policies associated with a specific case for comprehensive case context and decision making.\n *\n * Kapsamlı talep bağlamı ve karar verme için belirli bir talep ile ilişkili tüm poliçeleri getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Associated policies / İlişkili poliçeler\n */\n async getCasePolicies(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CasePolicyResult[]>> {\n const endpoint = cases.getPolicies.render(ref);\n return await this.http.get<CasePolicyResult[]>(endpoint, options);\n }\n\n /**\n * Retrieves the complete activity history for a case showing all actions, updates, and communications.\n *\n * Tüm eylemleri, güncellemeleri ve iletişimleri gösteren talep için tam aktivite geçmişini getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Case activity history / Talep aktivite geçmişi\n */\n async getCaseActivities(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CaseActivityResult[]>> {\n const endpoint = cases.getActivities.render(ref);\n return await this.http.get<CaseActivityResult[]>(endpoint, options);\n }\n\n /**\n * Retrieves detailed information about a specific case including status, assigned representative, and progress.\n *\n * Belirli bir talep hakkında durum, atanan temsilci ve ilerleme dahil detaylı bilgileri getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Detailed case information / Detaylı talep bilgileri\n */\n async getCaseByRef(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCaseByRefResult>> {\n const endpoint = cases.getCaseByRef.render(ref);\n return await this.http.get<GetCaseByRefResult>(endpoint, options);\n }\n\n /**\n * Retrieves all proposals associated with a specific case to understand related insurance quotations.\n *\n * İlgili sigorta tekliflerini anlamak için belirli bir talep ile ilişkili tüm teklifleri getirir.\n *\n * @param ref Case reference identifier / Talep referans tanımlayıcısı\n * @returns Associated proposals / İlişkili teklifler\n */\n async getCaseProposals(\n ref: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CaseProposalResult[]>> {\n const endpoint = cases.getProposals.render(ref);\n return await this.http.get<CaseProposalResult[]>(endpoint, options);\n }\n\n /**\n * Adds a note or comment to a case for documentation, communication, or progress tracking purposes.\n *\n * Dokümantasyon, iletişim veya ilerleme takibi amaçları için talepe not veya yorum ekler.\n *\n * @param request Note addition request / Not ekleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async addNoteToCase(\n request: AddNoteToCaseRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.addNoteToCase.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Sets or updates the asset associated with a case for proper tracking and management.\n *\n * Uygun takip ve yönetim için taleple ilişkili varlığı ayarlar veya günceller.\n *\n * @param request Asset assignment request / Varlık atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setCaseAsset(\n request: SetCaseAssetRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.setAsset.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Assigns or changes the branch for a case to organize case segmentation and reporting.\n *\n * Talep segmentasyonu ve raporlama için talebin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setCaseBranch(\n request: SetCaseBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = cases.setBranch.render(request.ref);\n return await this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Retrieves analytics for the New Sales Opportunity Lifecycle Funnel dashboard widget.\n *\n * Yeni Satış Fırsatı Yaşam Döngüsü Hunisi gösterge paneli bileşeni için analitik verileri getirir.\n *\n * @param request Analytics request with filtering options / Filtreleme seçenekleri içeren analitik isteği\n * @returns Funnel analytics response / Huni analitiği yanıtı\n */\n async getSalesOpportunityFunnelAnalytics(\n request: GetSalesOpportunityFunnelAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetSalesOpportunityFunnelAnalyticsResult>> {\n return await this.http.post<GetSalesOpportunityFunnelAnalyticsResult>(\n cases.getSalesOpportunityFunnelAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves backlog analytics that pivot open cases by type and subtype for dashboard reporting.\n *\n * Gösterge paneli raporlaması için açık talepleri tür ve alt tür bazında pivotlayan backlog analitiğini getirir.\n *\n * @param request Backlog pivot analytics request / Backlog pivot analitiği isteği\n * @returns Backlog pivot analytics response / Backlog pivot analitiği yanıtı\n */\n async getOpenCaseBacklogPivotAnalytics(\n request: GetOpenCaseBacklogPivotAnalyticsRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetOpenCaseBacklogPivotAnalyticsResult>> {\n return await this.http.post<GetOpenCaseBacklogPivotAnalyticsResult>(\n cases.getOpenCaseBacklogPivotAnalytics.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves failed cases reason distribution analytics for conversion improvement analysis.\n *\n * Dönüşüm iyileştirme analizi için başarısız taleplerin neden dağılımı analitiğini getirir.\n *\n * @param request Failed cases reason distribution analytics request / Başarısız talep neden dağılımı analitiği isteği\n * @returns Failed cases reason distribution analytics response / Başarısız talep neden dağılımı analitiği yanıtı\n */\n async getFailedCasesReasonDistribution(\n request: GetFailedCasesReasonDistributionRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetFailedCasesReasonDistributionResult>> {\n return await this.http.post<GetFailedCasesReasonDistributionResult>(\n cases.getFailedCasesReasonDistribution.definition,\n request,\n options,\n );\n }\n\n /**\n * Retrieves all available case communication automation configurations with their argument definitions.\n *\n * Argüman tanımları ile birlikte mevcut tüm talep iletişim otomasyonu yapılandırmalarını getirir.\n *\n * @returns Available communication automations / Mevcut iletişim otomasyonları\n */\n async getAllCaseCommunicationAutomations(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CaseCommunicationAutomationResult[]>> {\n return await this.http.get<CaseCommunicationAutomationResult[]>(\n cases.communicationAutomations.getAll,\n options,\n );\n }\n\n /**\n * Retrieves all available case priority templates for agent configuration.\n *\n * Acente yapılandırması için mevcut tüm talep öncelik şablonlarını getirir.\n *\n * @returns Available case priority templates / Mevcut talep öncelik şablonları\n */\n async getCasePriorityTemplates(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCasePriorityTemplatesResult>> {\n return await this.http.get<GetCasePriorityTemplatesResult>(\n cases.getPriorityTemplates,\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries cases using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak talepleri sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.cases.getCases({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.cases.getCases({\n * select: ['id', 'ref', 'type', 'status', 'mainState'] as const,\n * first: 10,\n * filter: { type: { eq: CaseType.NewSaleOpportunity } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of cases with type-narrowed fields\n */\n async getCases<const TFields extends CaseFieldKey[]>(\n requestOptions?: GetCasesOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<CasesConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_CASE_FIELDS) as CaseFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetCases(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryCaseModelFilterInput\n $filter: filtering_QueryCaseModelFilterInput\n $order: [sorting_QueryCaseModelSortInput!]\n ) {\n casesNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n casesNew: Omit<CasesConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<CasesConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.casesNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.casesNew,\n nodes,\n },\n } as InsurUpGraphQLResult<CasesConnection<TFields>>;\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { webhooks } from \"../core/endpoints.js\";\nimport {\n ALL_WEBHOOK_DELIVERY_FIELDS,\n type WebhookDeliveryFieldKey,\n type GetWebhookDeliveriesOptions,\n type WebhookDeliveriesConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n CreateWebhookRequest,\n CreateWebhookResult,\n GetWebhookByIdResult,\n GetWebhooksResult,\n UpdateWebhookRequest,\n GetWebhookDeliveryResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides comprehensive webhook management operations for configuring event notifications, monitoring delivery status,\n * and managing external system integrations within the InsurUp platform ecosystem.\n *\n * InsurUp platform ekosistemi içinde olay bildirimlerini yapılandırma, teslimat durumunu izleme ve\n * harici sistem entegrasyonlarını yönetmek için kapsamlı webhook yönetimi işlemlerini sağlar.\n */\nexport class InsurUpWebhookClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Creates a new webhook configuration to receive event notifications from the InsurUp platform.\n *\n * InsurUp platformundan olay bildirimleri almak için yeni webhook yapılandırması oluşturur.\n *\n * @param request Webhook creation request with endpoint and event configurations / Endpoint ve olay yapılandırmaları ile webhook oluşturma talebi\n * @returns Created webhook information / Oluşturulan webhook bilgileri\n */\n async createWebhook(\n request: CreateWebhookRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateWebhookResult>> {\n return this.http.post<CreateWebhookResult>(\n webhooks.create,\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific webhook including its configuration and current status.\n *\n * Belirli bir webhook hakkında yapılandırması ve mevcut durumu dahil detaylı bilgileri getirir.\n *\n * @param webhookId Unique identifier of the webhook / Webhook'un benzersiz tanımlayıcısı\n * @returns Webhook configuration details / Webhook yapılandırma detayları\n */\n async getWebhookById(\n webhookId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetWebhookByIdResult>> {\n const endpoint = webhooks.getById.render(webhookId);\n return this.http.get<GetWebhookByIdResult>(endpoint, options);\n }\n\n /**\n * Retrieves all webhooks configured for the current agent or organization for comprehensive webhook management.\n *\n * Kapsamlı webhook yönetimi için mevcut acente veya organizasyon için yapılandırılmış tüm webhook'ları getirir.\n *\n * @returns List of configured webhooks / Yapılandırılmış webhook'lar listesi\n */\n async getWebhooks(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetWebhooksResult[]>> {\n return this.http.get<GetWebhooksResult[]>(webhooks.getAll, options);\n }\n\n /**\n * Updates an existing webhook configuration including endpoint URL, event subscriptions, or authentication settings.\n *\n * Endpoint URL'si, olay abonelikleri veya kimlik doğrulama ayarları dahil mevcut webhook yapılandırmasını günceller.\n *\n * @param request Webhook update request with modified configuration / Değiştirilmiş yapılandırma ile webhook güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateWebhook(\n request: UpdateWebhookRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = webhooks.update.render(request.id);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Permanently removes a webhook configuration, stopping all future event notifications to the specified endpoint.\n *\n * Webhook yapılandırmasını kalıcı olarak kaldırır ve belirtilen endpoint'e gelecekteki tüm olay bildirimlerini durdurur.\n *\n * @param webhookId Unique identifier of the webhook to delete / Silinecek webhook'un benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async deleteWebhook(\n webhookId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = webhooks.delete.render(webhookId);\n return this.http.deleteNoContent(endpoint, options);\n }\n\n /**\n * Retrieves detailed information about a specific webhook delivery including delivery status, response, and timing.\n *\n * Teslimat durumu, yanıt ve zamanlama dahil belirli bir webhook teslimatı hakkında detaylı bilgileri getirir.\n *\n * @param webhookId Unique identifier of the webhook / Webhook'un benzersiz tanımlayıcısı\n * @param webhookDeliveryId Unique identifier of the delivery attempt / Teslimat denemesinin benzersiz tanımlayıcısı\n * @returns Webhook delivery details / Webhook teslimat detayları\n */\n async getWebhookDelivery(\n webhookId: string,\n webhookDeliveryId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetWebhookDeliveryResult>> {\n const endpoint = webhooks.deliveries.getById.render(\n webhookId,\n webhookDeliveryId,\n );\n return this.http.get<GetWebhookDeliveryResult>(endpoint, options);\n }\n\n /**\n * Manually retries a failed webhook event delivery to attempt successful notification delivery.\n *\n * Başarılı bildirim teslimatını denemek için başarısız webhook olay teslimatını manuel olarak yeniden dener.\n *\n * @param webhookId Unique identifier of the webhook / Webhook'un benzersiz tanımlayıcısı\n * @param webhookDeliveryId Unique identifier of the delivery to retry / Yeniden denenecek teslimatın benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async redeliverWebhookEvent(\n webhookId: string,\n webhookDeliveryId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = webhooks.deliveries.redeliver.render(\n webhookId,\n webhookDeliveryId,\n );\n return this.http.postNoContent(endpoint, undefined, options);\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries webhook deliveries using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak webhook teslimatlarını sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.webhooks.getWebhookDeliveries({ first: 10 });\n *\n * @example\n * // Type-safe field selection with filter\n * const result = await client.webhooks.getWebhookDeliveries({\n * select: ['id', 'webhookId', 'event', 'state'] as const,\n * first: 10,\n * filter: { state: { eq: WebhookDeliveryState.Failed } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of webhook deliveries with type-narrowed fields\n */\n async getWebhookDeliveries<const TFields extends WebhookDeliveryFieldKey[]>(\n requestOptions?: GetWebhookDeliveriesOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<WebhookDeliveriesConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_WEBHOOK_DELIVERY_FIELDS) as WebhookDeliveryFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetWebhookDeliveries(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryWebhookDeliveryResultFilterInput\n $filter: filtering_QueryWebhookDeliveryResultFilterInput\n $order: [sorting_QueryWebhookDeliveryResultSortInput!]\n ) {\n webhookDeliveriesNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n webhookDeliveriesNew: Omit<WebhookDeliveriesConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<\n WebhookDeliveriesConnection<TFields>\n >;\n }\n\n // Derive nodes from edges\n const edges = result.data.webhookDeliveriesNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.webhookDeliveriesNew,\n nodes,\n },\n } as InsurUpGraphQLResult<WebhookDeliveriesConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview Coverage Management Client - Client for managing insurance coverage configurations\n * @description Provides coverage management operations for configuring insurance product coverages, managing coverage groups, and retrieving available coverage options\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { coverageGroups, coverageChoices } from \"../core/endpoints.js\";\nimport type {\n CreateCoverageGroupRequest,\n UpdateCoverageGroupRequest,\n DeleteCoverageGroupRequest,\n GetCoverageGroupByIdResult,\n GetCoverageGroupsResultItem,\n KaskoCoverageChoices,\n KonutCoverageChoices,\n TssCoverageChoices,\n ImmCoverageChoices,\n CompanyCoverageChoices,\n} from \"@insurup/contracts\";\nimport type { VehicleUtilizationStyle } from \"@insurup/contracts\";\n\n/**\n * Provides coverage management operations for configuring insurance product coverages, managing coverage groups,\n * and retrieving available coverage options for different insurance branches within the InsurUp platform.\n *\n * InsurUp platformu içinde sigorta ürün teminatlarını yapılandırma, teminat gruplarını yönetme ve farklı\n * sigorta dalları için mevcut teminat seçeneklerini alma konularında teminat yönetimi işlemlerini sağlar.\n */\nexport class InsurUpCoverageClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Creates a new coverage group to organize and standardize coverage offerings across multiple insurance products.\n *\n * Birden fazla sigorta ürününde teminat tekliflerini organize etmek ve standartlaştırmak için yeni teminat grubu oluşturur.\n *\n * @param request Coverage group creation request / Teminat grubu oluşturma talebi\n * @returns Operation result / İşlem sonucu\n */\n async createCoverageGroup(\n request: CreateCoverageGroupRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(coverageGroups.create, request, options);\n }\n\n /**\n * Updates an existing coverage group's configuration, coverage options, or applicable insurance products.\n *\n * Mevcut bir teminat grubunun yapılandırmasını, teminat seçeneklerini veya uygulanabilir sigorta ürünlerini günceller.\n *\n * @param request Coverage group update request / Teminat grubu güncelleme talebi\n * @returns Operation result / İşlem sonucu\n */\n async updateCoverageGroup(\n request: UpdateCoverageGroupRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.putNoContent(\n coverageGroups.update.render(request.id),\n request,\n options,\n );\n }\n\n /**\n * Removes a coverage group from the system, ensuring proper cleanup of associated coverage configurations.\n *\n * Sistemden bir teminat grubunu kaldırır ve ilişkili teminat yapılandırmalarının düzgün temizlenmesini sağlar.\n *\n * @param request Coverage group deletion request / Teminat grubu silme talebi\n * @returns Operation result / İşlem sonucu\n */\n async deleteCoverageGroup(\n request: DeleteCoverageGroupRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.deleteNoContent(\n coverageGroups.delete.render(request.id),\n options,\n );\n }\n\n /**\n * Retrieves detailed information about a specific coverage group including its coverage options and configurations.\n *\n * Belirli bir teminat grubu hakkında teminat seçenekleri ve yapılandırmaları dahil detaylı bilgileri getirir.\n *\n * @param coverageGroupId Unique identifier of the coverage group / Teminat grubunun benzersiz tanımlayıcısı\n * @returns Coverage group details / Teminat grubu detayları\n */\n async getCoverageGroupById(\n coverageGroupId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCoverageGroupByIdResult>> {\n return this.http.get(\n coverageGroups.getById.render(coverageGroupId),\n options,\n );\n }\n\n /**\n * Retrieves all available coverage groups within the agency for comprehensive coverage management overview.\n *\n * Kapsamlı teminat yönetimi genel bakışı için acente içindeki tüm mevcut teminat gruplarını getirir.\n *\n * @returns List of all coverage groups / Tüm teminat grupları listesi\n */\n async getAllCoverageGroups(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetCoverageGroupsResultItem[]>> {\n return this.http.get(coverageGroups.getAll, options);\n }\n\n /**\n * Retrieves available Kasko (comprehensive vehicle insurance) coverage options and configurations for proposal generation.\n *\n * Teklif oluşturma için mevcut Kasko (kasko araç sigortası) teminat seçenekleri ve yapılandırmalarını getirir.\n *\n * @param vehicleUtilizationStyle Optional vehicle utilization style filter / İsteğe bağlı araç kullanım stili filtresi\n * @returns Kasko coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış Kasko teminat seçenekleri\n */\n async getKaskoCoverageChoices(\n vehicleUtilizationStyle?: VehicleUtilizationStyle,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<KaskoCoverageChoices>[]>> {\n const endpoint = coverageChoices.getKaskoCoverageChoices.render(\n vehicleUtilizationStyle,\n );\n return this.http.get<CompanyCoverageChoices<KaskoCoverageChoices>[]>(\n endpoint,\n options,\n );\n }\n\n /**\n * Retrieves available Konut (home/property insurance) coverage options including DASK earthquake insurance configurations.\n *\n * DASK deprem sigortası yapılandırmaları dahil mevcut Konut (ev/mülk sigortası) teminat seçeneklerini getirir.\n *\n * @returns Konut coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış Konut teminat seçenekleri\n */\n async getKonutCoverageChoices(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<KonutCoverageChoices>[]>> {\n return this.http.get<CompanyCoverageChoices<KonutCoverageChoices>[]>(\n coverageChoices.getKonutCoverageChoices.render(),\n options,\n );\n }\n\n /**\n * Retrieves available TSS (Traffic Insurance) coverage options for mandatory and voluntary vehicle liability insurance.\n *\n * Zorunlu ve ihtiyari araç sorumluluk sigortası için mevcut TSS (Trafik Sigortası) teminat seçeneklerini getirir.\n *\n * @returns TSS coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış TSS teminat seçenekleri\n */\n async getTssCoverageChoices(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<TssCoverageChoices>[]>> {\n return this.http.get<CompanyCoverageChoices<TssCoverageChoices>[]>(\n coverageChoices.getTssCoverageChoices.render(),\n options,\n );\n }\n\n /**\n * Retrieves available IMM (Voluntary Financial Liability) coverage options for extended liability protection beyond mandatory insurance.\n *\n * Zorunlu sigortanın ötesinde genişletilmiş sorumluluk koruması için mevcut İMM (İhtiyari Mali Mesuliyet) teminat seçeneklerini getirir.\n *\n * @returns IMM coverage choices grouped by insurance company / Sigorta şirketine göre gruplanmış İMM teminat seçenekleri\n */\n async getImmCoverageChoices(\n options?: RequestOptions,\n ): Promise<InsurUpResult<CompanyCoverageChoices<ImmCoverageChoices>[]>> {\n return this.http.get<CompanyCoverageChoices<ImmCoverageChoices>[]>(\n coverageChoices.getImmCoverageChoices.render(),\n options,\n );\n }\n}\n","import type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport type {\n ResourceKey,\n InsuranceCompany,\n InsuranceProduct,\n GetAgentBasedConnectionFieldsByCompanyIdResultItem,\n GetAllReleaseNotesResultItem,\n Bank,\n BankBranch,\n FinancialInstitution,\n} from \"@insurup/contracts\";\n\n/**\n * Provides comprehensive insurance industry data access for retrieving insurance companies, products, resource keys,\n * release notes, and financial institution information essential for platform operations and integrations.\n *\n * Platform operasyonları ve entegrasyonları için gerekli sigorta şirketleri, ürünler, kaynak anahtarları,\n * sürüm notları ve finansal kurum bilgilerini almak üzere kapsamlı sigorta sektörü veri erişimi sağlar.\n *\n * **Insurance Industry Data Client / Sigorta Sektörü Veri İstemcisi**\n *\n * EN: Central client for accessing comprehensive insurance industry reference data and platform configuration information.\n * Provides access to insurance companies, their products, localization resources, platform release notes, banking\n * institutions, and financial service providers. Essential for agencies that need to stay updated with insurance\n * market offerings, configure platform integrations, access multilingual resources, and integrate with banking\n * systems for premium collection and policy financing operations.\n *\n * TR: Kapsamlı sigorta sektörü referans verilerine ve platform yapılandırma bilgilerine erişim için merkezi istemci.\n * Sigorta şirketleri, ürünleri, yerelleştirme kaynakları, platform sürüm notları, bankacılık kurumları ve finansal\n * hizmet sağlayıcılarına erişim sağlar. Sigorta pazar teklifleri ile güncel kalması, platform entegrasyonlarını\n * yapılandırması, çok dilli kaynaklara erişmesi ve prim tahsilatı ile poliçe finansman operasyonları için bankacılık\n * sistemleri ile entegrasyon yapması gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpInsuranceClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves all available resource keys for localization and multi-language support within the platform.\n *\n * Platform içinde yerelleştirme ve çoklu dil desteği için mevcut tüm kaynak anahtarlarını getirir.\n *\n * @returns List of resource keys for localization / Yerelleştirme için kaynak anahtarları listesi\n */\n async getResourceKeys(\n options?: RequestOptions,\n ): Promise<InsurUpResult<ResourceKey[]>> {\n return this.http.get<ResourceKey[]>(endpoints.resourceKeys.getAll, options);\n }\n\n /**\n * Retrieves all insurance companies available on the platform for agent partnerships and product offerings.\n *\n * Acente ortaklıkları ve ürün teklifleri için platformda bulunan tüm sigorta şirketlerini getirir.\n *\n * @returns List of insurance companies / Sigorta şirketleri listesi\n */\n async getInsuranceCompanies(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceCompany[]>> {\n return this.http.get<InsuranceCompany[]>(\n endpoints.insuranceCompanies.getInsuranceCompanies,\n options,\n );\n }\n\n /**\n * Retrieves all insurance products offered by a specific insurance company including their features and coverage options.\n *\n * Belirli bir sigorta şirketinin sunduğu tüm sigorta ürünlerini özellikleri ve teminat seçenekleri dahil getirir.\n *\n * @param insuranceCompanyId Unique identifier of the insurance company / Sigorta şirketinin benzersiz tanımlayıcısı\n * @returns List of insurance products / Sigorta ürünleri listesi\n */\n async getInsuranceCompanyProducts(\n insuranceCompanyId: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceProduct[]>> {\n const path =\n endpoints.insuranceCompanies.getInsuranceCompanyProducts.render(\n insuranceCompanyId,\n );\n return this.http.get<InsuranceProduct[]>(path, options);\n }\n\n /**\n * Retrieves all insurance products from all companies on the platform including their features and coverage options.\n *\n * Platformdaki tüm şirketlerden mevcut tüm sigorta ürünlerini özellikleri ve teminat seçenekleri dahil getirir.\n *\n * @returns List of all insurance products / Tüm sigorta ürünleri listesi\n */\n async getAllProducts(\n options?: RequestOptions,\n ): Promise<InsurUpResult<InsuranceProduct[]>> {\n return this.http.get<InsuranceProduct[]>(\n endpoints.insuranceCompanies.getAllProducts,\n options,\n );\n }\n\n /**\n * Retrieves agent-specific connection fields and requirements for integrating with a particular insurance company's systems.\n *\n * Belirli bir sigorta şirketinin sistemleri ile entegrasyon için acente özel bağlantı alanları ve gereksinimlerini getirir.\n *\n * @param insuranceCompanyId Unique identifier of the insurance company / Sigorta şirketinin benzersiz tanımlayıcısı\n * @returns Connection field requirements / Bağlantı alanı gereksinimleri\n */\n async getCompanyConnectionFields(\n insuranceCompanyId: number,\n options?: RequestOptions,\n ): Promise<\n InsurUpResult<GetAgentBasedConnectionFieldsByCompanyIdResultItem[]>\n > {\n const path =\n endpoints.insuranceCompanies.connectionFields.getAgentBasedConnectionFieldsByCompanyId.render(\n insuranceCompanyId,\n );\n return this.http.get<GetAgentBasedConnectionFieldsByCompanyIdResultItem[]>(\n path,\n options,\n );\n }\n\n /**\n * Retrieves all platform release notes including new features, bug fixes, and important updates for system awareness.\n *\n * Sistem farkındalığı için yeni özellikler, hata düzeltmeleri ve önemli güncellemeler dahil tüm platform sürüm notlarını getirir.\n *\n * @returns Platform release notes / Platform sürüm notları\n */\n async getAllReleaseNotes(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetAllReleaseNotesResultItem[]>> {\n return this.http.get<GetAllReleaseNotesResultItem[]>(\n endpoints.releaseNotes.getAll,\n options,\n );\n }\n\n /**\n * Retrieves all banks available for premium collection, policy financing, and customer payment processing operations.\n *\n * Prim tahsilatı, poliçe finansmanı ve müşteri ödeme işleme operasyonları için mevcut tüm bankaları getirir.\n *\n * @returns List of banks / Bankalar listesi\n */\n async getBanks(options?: RequestOptions): Promise<InsurUpResult<Bank[]>> {\n return this.http.get<Bank[]>(endpoints.banks.getAll, options);\n }\n\n /**\n * Retrieves all branches for a specific bank to enable precise payment routing and customer service location matching.\n *\n * Hassas ödeme yönlendirmesi ve müşteri hizmet konumu eşleştirmesi için belirli bir bankanın tüm şubelerini getirir.\n *\n * @param bankId Unique identifier of the bank / Bankanın benzersiz tanımlayıcısı\n * @returns List of bank branches / Banka şubeleri listesi\n */\n async getBankBranches(\n bankId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<BankBranch[]>> {\n const path = endpoints.banks.getBranches.render(bankId);\n return this.http.get<BankBranch[]>(path, options);\n }\n\n /**\n * Retrieves all financial institutions including banks, credit unions, and other financial service providers for comprehensive payment options.\n *\n * Kapsamlı ödeme seçenekleri için bankalar, kredi birlikleri ve diğer finansal hizmet sağlayıcıları dahil tüm finansal kurumları getirir.\n *\n * @returns List of financial institutions / Finansal kurumlar listesi\n */\n async getFinancialInstitutions(\n options?: RequestOptions,\n ): Promise<InsurUpResult<FinancialInstitution[]>> {\n return this.http.get<FinancialInstitution[]>(\n endpoints.financialInstitutions.getAll,\n options,\n );\n }\n}\n","/**\n * @fileoverview Proposal Client - Comprehensive proposal management operations\n * @description Provides comprehensive proposal management operations for creating insurance proposals, managing proposal lifecycle,\n * document generation, product purchasing, and comparison tools within the insurance sales process.\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { GraphQLTransport } from \"../client/graphql.js\";\nimport type { InsurUpResult, InsurUpGraphQLResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { endpoints } from \"../core/endpoints.js\";\nimport {\n ALL_PROPOSAL_FIELDS,\n type ProposalFieldKey,\n type GetProposalsOptions,\n type ProposalsConnection,\n} from \"@insurup/contracts\";\nimport { buildFieldSelection } from \"@insurup/contracts\";\nimport type {\n CreateProposalRequest,\n CreateProposalResult,\n GetProposalByIdResult,\n GetProposalProductPremiumDetailResult,\n PurchaseProposalProductSyncRequest,\n PurchaseProposalProductSyncResult,\n PurchaseProposalProductAsyncRequest,\n PurchaseProposalProductAsyncResult,\n GetProposalProductCoverageResult,\n ReviseProposalRequest,\n ReviseProposalResult,\n ReviseProposalProductRequest,\n FetchProposalProductDocumentRequest,\n FetchProposalProductDocumentResult,\n FetchProposalInformationFormDocumentRequest,\n FetchProposalInformationFormDocumentResult,\n SendProposalProductDocumentRequest,\n SendProposalInformationFormDocumentRequest,\n GenerateCompareProposalProductsPdfRequest,\n GenerateCompareProposalProductsPdfResult,\n SendCompareProposalProductsPdfRequest,\n SetProposalRepresentativeRequest,\n RetryFailedProposalProductRequest,\n GenerateCustomerProposalDocumentPdfRequest,\n GenerateCustomerProposalDocumentPdfResult,\n SetProposalBranchRequest,\n GetProposalConversionTrendRequest,\n GetProposalConversionTrendResult,\n} from \"@insurup/contracts\";\n\n/**\n * Proposal Management Client / Teklif Yönetimi İstemcisi\n *\n * Central client for managing the complete insurance proposal lifecycle from creation to policy conversion. Handles\n * proposal generation, product comparison, premium calculations, document management, customer communication, and the\n * purchasing process for various insurance products. Provides both synchronous and asynchronous purchasing options,\n * comprehensive document generation including comparison PDFs, and proposal revision capabilities. Essential for\n * agencies that need to create competitive insurance proposals, manage customer decision processes, and convert\n * proposals into active policies while maintaining detailed audit trails and customer communication records.\n *\n * Oluşturmadan poliçe dönüştürmeye kadar tam sigorta teklif yaşam döngüsünü yönetmek için merkezi istemci.\n * Teklif oluşturma, ürün karşılaştırması, prim hesaplamaları, belge yönetimi, müşteri iletişimi ve çeşitli sigorta\n * ürünleri için satın alma sürecini yönetir. Hem senkron hem de asenkron satın alma seçenekleri, karşılaştırma PDF'leri\n * dahil kapsamlı belge oluşturma ve teklif revizyon yetenekleri sağlar. Rekabetçi sigorta teklifleri oluşturması,\n * müşteri karar süreçlerini yönetmesi ve detaylı denetim izleri ile müşteri iletişim kayıtlarını korurken teklifleri\n * aktif poliçelere dönüştürmesi gereken acenteler için olmazsa olmazdır.\n */\nexport class InsurUpProposalClient {\n constructor(\n private readonly http: HttpTransport,\n private readonly graphql?: GraphQLTransport,\n ) {}\n\n /**\n * Creates a new insurance proposal with customer information, coverage selections, and product options for quotation.\n *\n * Fiyat teklifi için müşteri bilgileri, teminat seçimleri ve ürün seçenekleri ile yeni sigorta teklifi oluşturur.\n *\n * @param request - Proposal creation request with customer and coverage details / Müşteri ve teminat detayları ile teklif oluşturma talebi\n * @returns Created proposal information / Oluşturulan teklif bilgileri\n */\n async createProposal(\n request: CreateProposalRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<CreateProposalResult>> {\n return this.http.post<CreateProposalResult>(\n endpoints.proposals.create,\n request,\n options,\n );\n }\n\n /**\n * Retries a failed proposal product calculation or processing to attempt resolution of temporary issues.\n *\n * Geçici sorunların çözümünü denemek için başarısız teklif ürün hesaplama veya işlemesini yeniden dener.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @param proposalProductId - Unique identifier of the proposal product / Teklif ürününün benzersiz tanımlayıcısı\n * @returns Operation result / İşlem sonucu\n */\n async retryFailedProposalProduct(\n proposalId: string,\n proposalProductId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const request: RetryFailedProposalProductRequest = {\n proposalId,\n proposalProductId,\n };\n return this.http.postNoContent(\n endpoints.proposals.retryFailedProposalProduct.render(\n proposalId,\n proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves comprehensive details of a specific proposal including all products, coverage options, and pricing information.\n *\n * Tüm ürünler, teminat seçenekleri ve fiyatlandırma bilgileri dahil belirli bir teklifin kapsamlı detaylarını getirir.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @returns Detailed proposal information / Detaylı teklif bilgileri\n */\n async getProposalDetail(\n proposalId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalByIdResult>> {\n return this.http.get<GetProposalByIdResult>(\n endpoints.proposals.getProposalById.render(proposalId),\n options,\n );\n }\n\n /**\n * Retrieves detailed premium breakdown information for a specific proposal product including installment options.\n *\n * Taksit seçenekleri dahil belirli bir teklif ürünü için detaylı prim dağılım bilgilerini getirir.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @param proposalProductId - Unique identifier of the proposal product / Teklif ürününün benzersiz tanımlayıcısı\n * @param installmentNumber - Installment option number / Taksit seçenek numarası\n * @returns Premium breakdown details / Prim dağılım detayları\n */\n async getProposalProductPremiumDetail(\n proposalId: string,\n proposalProductId: string,\n installmentNumber: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalProductPremiumDetailResult>> {\n return this.http.get<GetProposalProductPremiumDetailResult>(\n endpoints.proposals.getProposalProductPremiumDetail.render(\n proposalId,\n proposalProductId,\n installmentNumber,\n ),\n options,\n );\n }\n\n /**\n * Purchases a proposal product synchronously, converting it to an active policy with immediate confirmation.\n *\n * Teklif ürününü senkron olarak satın alır ve anında onay ile aktif poliçeye dönüştürür.\n *\n * @param request - Synchronous purchase request / Senkron satın alma talebi\n * @returns Purchase confirmation with policy details / Poliçe detayları ile satın alma onayı\n */\n async purchaseProposalProductSync(\n request: PurchaseProposalProductSyncRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<PurchaseProposalProductSyncResult>> {\n return this.http.post<PurchaseProposalProductSyncResult>(\n endpoints.proposals.purchaseProposalProductSync.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Initiates an asynchronous purchase process for a proposal product, allowing for background processing and later confirmation.\n *\n * Arka plan işleme ve sonraki onay için teklif ürünü için asenkron satın alma sürecini başlatır.\n *\n * @param request - Asynchronous purchase request / Asenkron satın alma talebi\n * @returns Purchase initiation confirmation / Satın alma başlatma onayı\n */\n async purchaseProposalProductAsync(\n request: PurchaseProposalProductAsyncRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<PurchaseProposalProductAsyncResult>> {\n return this.http.post<PurchaseProposalProductAsyncResult>(\n endpoints.proposals.purchaseProposalProductAsync.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Retrieves detailed coverage configuration for a specific proposal product including all coverage options and limits.\n *\n * Tüm teminat seçenekleri ve limitleri dahil belirli bir teklif ürünü için detaylı teminat yapılandırmasını getirir.\n *\n * @param proposalId - Unique identifier of the proposal / Teklifin benzersiz tanımlayıcısı\n * @param proposalProductId - Unique identifier of the proposal product / Teklif ürününün benzersiz tanımlayıcısı\n * @returns Coverage configuration details / Teminat yapılandırma detayları\n */\n async getProposalProductCoverage(\n proposalId: string,\n proposalProductId: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalProductCoverageResult>> {\n return this.http.get<GetProposalProductCoverageResult>(\n endpoints.proposals.getProposalProductCoverage.render(\n proposalId,\n proposalProductId,\n ),\n options,\n );\n }\n\n /**\n * Creates a revised version of an existing proposal with updated information, coverage changes, or customer modifications.\n *\n * Güncellenmiş bilgiler, teminat değişiklikleri veya müşteri değişiklikleri ile mevcut teklifin revize edilmiş versiyonunu oluşturur.\n *\n * @param request - Proposal revision request / Teklif revizyon talebi\n * @returns Revised proposal information / Revize edilmiş teklif bilgileri\n */\n async reviseProposal(\n request: ReviseProposalRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<ReviseProposalResult>> {\n return this.http.post<ReviseProposalResult>(\n endpoints.proposals.reviseProposal.render(request.proposalId),\n request,\n options,\n );\n }\n\n /**\n * Revises a specific product within a proposal with updated coverage options, limits, or pricing parameters.\n *\n * Güncellenmiş teminat seçenekleri, limitler veya fiyatlandırma parametreleri ile teklif içindeki belirli ürünü revize eder.\n *\n * @param request - Product revision request / Ürün revizyon talebi\n * @returns Operation result / İşlem sonucu\n */\n async reviseProposalProduct(\n request: ReviseProposalProductRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.reviseProposalProduct.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Fetches the official proposal document for a specific product from the insurance company's systems.\n *\n * Sigorta şirketinin sistemlerinden belirli bir ürün için resmi teklif belgesini getirir.\n *\n * @param request - Document fetch request / Belge getirme talebi\n * @returns Proposal document data / Teklif belgesi verisi\n */\n async fetchProposalProductDocument(\n request: FetchProposalProductDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<FetchProposalProductDocumentResult>> {\n return this.http.get<FetchProposalProductDocumentResult>(\n endpoints.proposals.fetchProposalProductDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n options,\n );\n }\n\n /**\n * Fetches the information form document that contains detailed product information and terms for customer review.\n *\n * Müşteri incelemesi için detaylı ürün bilgileri ve şartları içeren bilgi formu belgesini getirir.\n *\n * @param request - Information form document request / Bilgi formu belgesi talebi\n * @returns Information form document data / Bilgi formu belgesi verisi\n */\n async fetchProposalInformationFormDocument(\n request: FetchProposalInformationFormDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<FetchProposalInformationFormDocumentResult>> {\n return this.http.get<FetchProposalInformationFormDocumentResult>(\n endpoints.proposals.fetchProposalInformationFormDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n options,\n );\n }\n\n /**\n * Sends the proposal product document directly to the customer via email or other communication channels.\n *\n * Teklif ürün belgesini e-posta veya diğer iletişim kanalları aracılığıyla doğrudan müşteriye gönderir.\n *\n * @param request - Document delivery request / Belge teslim talebi\n * @returns Operation result / İşlem sonucu\n */\n async sendProposalProductDocument(\n request: SendProposalProductDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.sendProposalProductDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Sends the information form document to the customer for detailed product review and decision making.\n *\n * Detaylı ürün incelemesi ve karar verme için bilgi formu belgesini müşteriye gönderir.\n *\n * @param request - Information form delivery request / Bilgi formu teslim talebi\n * @returns Operation result / İşlem sonucu\n */\n async sendProposalInformationFormDocument(\n request: SendProposalInformationFormDocumentRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.sendProposalInformationFormDocument.render(\n request.proposalId,\n request.proposalProductId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Generates a comparative PDF document showing multiple proposal products side-by-side for customer decision support.\n *\n * Müşteri karar desteği için birden fazla teklif ürününü yan yana gösteren karşılaştırmalı PDF belgesi oluşturur.\n *\n * @param request - Comparison PDF generation request / Karşılaştırma PDF oluşturma talebi\n * @returns Generated comparison document / Oluşturulan karşılaştırma belgesi\n */\n async generateCompareProposalProductsPdf(\n request: GenerateCompareProposalProductsPdfRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GenerateCompareProposalProductsPdfResult>> {\n return this.http.post<GenerateCompareProposalProductsPdfResult>(\n endpoints.proposals.generateCompareProposalProductsPdf.render(\n request.proposalId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Sends the proposal comparison PDF document to the customer to facilitate informed decision making between insurance options.\n *\n * Sigorta seçenekleri arasında bilinçli karar vermeyi kolaylaştırmak için teklif karşılaştırma PDF belgesini müşteriye gönderir.\n *\n * @param request - Comparison PDF delivery request / Karşılaştırma PDF teslim talebi\n * @returns Operation result / İşlem sonucu\n */\n async sendCompareProposalProductsPdf(\n request: SendCompareProposalProductsPdfRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.sendCompareProposalProductsPdf.render(\n request.proposalId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Generates a professional PDF document containing selected proposal products for customer presentation.\n *\n * Müşteri sunumu için seçilen teklif ürünlerini içeren profesyonel bir PDF belgesi oluşturur.\n *\n * @param request Customer proposal document generation request / Müşteri teklif belgesi oluşturma talebi\n * @returns Generated document URL / Oluşturulan belge URL'i\n */\n async generateCustomerProposalDocumentPdf(\n request: GenerateCustomerProposalDocumentPdfRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GenerateCustomerProposalDocumentPdfResult>> {\n return this.http.post<GenerateCustomerProposalDocumentPdfResult>(\n endpoints.proposals.generateCustomerProposalDocumentPdf.render(\n request.proposalId,\n ),\n request,\n options,\n );\n }\n\n /**\n * Assigns or changes the branch for a proposal to organize proposal segmentation and reporting.\n *\n * Teklif segmentasyonu ve raporlama için teklifin şubesini atar veya değiştirir.\n *\n * @param request Branch assignment request / Şube atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setProposalBranch(\n request: SetProposalBranchRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.setProposalBranch.render(request.proposalId),\n request,\n options,\n );\n }\n\n /**\n * Retrieves proposal-to-policy conversion trend analytics as a time series.\n *\n * Tekliften poliçeye dönüşüm trendi analitiğini zaman serisi olarak getirir.\n *\n * @param request Conversion trend analytics request / Dönüşüm trendi analitik isteği\n * @returns Conversion trend analytics response / Dönüşüm trendi analitiği yanıtı\n */\n async getProposalConversionTrend(\n request: GetProposalConversionTrendRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetProposalConversionTrendResult>> {\n return this.http.post<GetProposalConversionTrendResult>(\n endpoints.proposals.getProposalConversionTrend.definition,\n request,\n options,\n );\n }\n\n /**\n * Assigns or updates the representative responsible for managing a specific proposal and customer relationship.\n *\n * Belirli bir teklifi ve müşteri ilişkisini yönetmekten sorumlu temsilciyi atar veya günceller.\n *\n * @param request - Representative assignment request / Temsilci atama talebi\n * @returns Operation result / İşlem sonucu\n */\n async setProposalRepresentative(\n request: SetProposalRepresentativeRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n return this.http.postNoContent(\n endpoints.proposals.setProposalRepresentative.render(request.proposalId),\n request,\n options,\n );\n }\n\n // ============================================================================\n // GRAPHQL QUERIES\n // ============================================================================\n\n /**\n * Queries proposals using GraphQL with advanced filtering, searching, sorting, and field selection.\n * Supports cursor-based pagination and type-safe field selection.\n *\n * Gelişmiş filtreleme, arama, sıralama ve alan seçimi ile GraphQL kullanarak teklifleri sorgular.\n * İmleç tabanlı sayfalama ve tip-güvenli alan seçimini destekler.\n *\n * @example\n * // Basic query with all fields\n * const result = await client.proposals.getProposals({ first: 10 });\n *\n * @example\n * // Type-safe field selection\n * const result = await client.proposals.getProposals({\n * select: ['id', 'productBranch', 'state', 'insuredCustomerName'] as const,\n * first: 10,\n * filter: { state: { eq: ProposalState.Active } }\n * });\n *\n * @param requestOptions Query options including pagination, filters, search, and field selection\n * @returns Paginated connection of proposals with type-narrowed fields\n */\n async getProposals<const TFields extends ProposalFieldKey[]>(\n requestOptions?: GetProposalsOptions<TFields>,\n options?: RequestOptions,\n ): Promise<InsurUpGraphQLResult<ProposalsConnection<TFields>>> {\n if (!this.graphql) {\n throw new Error(\n \"GraphQL transport is not available. Ensure the client is properly initialized.\",\n );\n }\n\n const fields = (requestOptions?.select ??\n ALL_PROPOSAL_FIELDS) as ProposalFieldKey[];\n const fieldSelection = buildFieldSelection(fields);\n const hasFieldSelection = fieldSelection.length > 0;\n\n const query = `\n query GetProposals(\n $first: Int\n $after: String\n $last: Int\n $before: String\n $search: searching_QueryProposalsResultFilterInput\n $filter: filtering_QueryProposalsResultFilterInput\n $order: [sorting_QueryProposalsResultSortInput!]\n ) {\n proposalsNew(\n first: $first\n after: $after\n last: $last\n before: $before\n search: $search\n filter: $filter\n order: $order\n ) {\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n totalCount\n ${hasFieldSelection ? `edges {\n cursor\n node {\n ${fieldSelection}\n }\n }` : \"\"}\n }\n }\n `;\n\n const variables = {\n first: requestOptions?.first,\n after: requestOptions?.after,\n last: requestOptions?.last,\n before: requestOptions?.before,\n search: requestOptions?.search,\n filter: requestOptions?.filter,\n order: requestOptions?.order,\n };\n\n const result = await this.graphql.query<{\n proposalsNew: Omit<ProposalsConnection, \"nodes\">;\n }>(query, variables, options);\n\n if (!result.isSuccess) {\n return result as InsurUpGraphQLResult<ProposalsConnection<TFields>>;\n }\n\n // Derive nodes from edges\n const edges = result.data.proposalsNew.edges;\n const nodes = edges?.map((edge) => edge?.node ?? null) ?? null;\n\n return {\n ...result,\n data: {\n ...result.data.proposalsNew,\n nodes,\n },\n } as InsurUpGraphQLResult<ProposalsConnection<TFields>>;\n }\n}\n","/**\n * @fileoverview File Client - File upload operations\n * @description Provides file management operations for the InsurUp platform\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { files } from \"../core/endpoints.js\";\nimport type {\n UploadPublicFileRequest,\n UploadPublicFileResult,\n} from \"@insurup/contracts\";\n\n/**\n * Provides file management operations for the InsurUp platform, enabling agents to upload and manage files\n * within the insurance ecosystem.\n */\nexport class InsurUpFileClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Uploads a file to public storage and returns the file URL for public access.\n * Maximum file size is 1MB. Only available for agent users.\n *\n * Bir dosyayı genel depolamaya yükler ve genel erişim için dosya URL'sini döndürür.\n * Maksimum dosya boyutu 1MB'dir. Sadece acente kullanıcıları için kullanılabilir.\n *\n * @param request Upload configuration including optional path\n * @param file File content\n * @param fileName Name of the file\n * @returns File URL and path information\n */\n async uploadPublicFile(\n request: UploadPublicFileRequest,\n file: File,\n fileName: string,\n options?: RequestOptions,\n ): Promise<InsurUpResult<UploadPublicFileResult>> {\n const formData = new FormData();\n formData.append(\"file\", file, fileName);\n\n if (request.path) {\n formData.append(\"path\", request.path);\n }\n\n return this.http.post<UploadPublicFileResult>(\n files.uploadPublicFile,\n formData,\n options,\n );\n }\n}\n","/**\n * @fileoverview Language Client - Language and localization operations\n * @description Provides language and localization operations for retrieving available languages\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { languages } from \"../core/endpoints.js\";\nimport type { LanguageResult } from \"@insurup/contracts\";\n\n/**\n * Provides language and localization operations for retrieving available languages in the InsurUp platform.\n * Essential for multi-language support and internationalization features.\n */\nexport class InsurUpLanguageClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves all available languages in the system for localization and internationalization purposes.\n * Returns language information including language codes, native names, and English names.\n *\n * Yerelleştirme ve uluslararasılaştırma amaçları için sistemdeki tüm kullanılabilir dilleri getirir.\n * Dil kodları, yerel adlar ve İngilizce adlar dahil dil bilgilerini döndürür.\n *\n * @returns List of all available languages\n */\n async getLanguages(\n options?: RequestOptions,\n ): Promise<InsurUpResult<LanguageResult[]>> {\n return this.http.get<LanguageResult[]>(languages.getAll, options);\n }\n}\n","/**\n * @fileoverview Template Client - Template management operations\n * @description Provides template management operations for the InsurUp platform\n */\n\nimport type { HttpTransport } from \"../client/http.js\";\nimport type { InsurUpResult } from \"../core/result.js\";\nimport type { RequestOptions } from \"../core/options.js\";\nimport { templates } from \"../core/endpoints.js\";\nimport type {\n GetTemplateDefinitionsResult,\n QueryTemplatesResult,\n GetTemplateByKeyResult,\n UpdateTemplateRequest,\n DeleteTemplateRequest,\n} from \"@insurup/contracts\";\n\n/**\n * Provides template management operations for the InsurUp platform, enabling agents to retrieve and update\n * document templates, email templates, and other content templates used in insurance workflows.\n */\nexport class InsurUpTemplateClient {\n constructor(private readonly http: HttpTransport) {}\n\n /**\n * Retrieves all template definitions with their JSON schemas and metadata.\n * These definitions describe the structure and data models for all template types available in the system.\n * Only accessible by admin panel users and agent users with appropriate permissions.\n *\n * Tüm şablon tanımlarını JSON şemaları ve meta verileriyle getirir.\n * Bu tanımlar, sistemde mevcut tüm şablon türleri için yapı ve veri modellerini açıklar.\n * Sadece yönetici panel kullanıcıları ve uygun izinlere sahip acente kullanıcıları tarafından erişilebilir.\n *\n * @returns List of all template definitions\n */\n async getTemplateDefinitions(\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetTemplateDefinitionsResult[]>> {\n return this.http.get<GetTemplateDefinitionsResult[]>(\n templates.getDefinitions,\n options,\n );\n }\n\n /**\n * Retrieves all available templates in the system with their metadata and content.\n * Only accessible by admin panel users and agent users with appropriate permissions.\n *\n * Sistemdeki tüm kullanılabilir şablonları meta verileri ve içerikleriyle getirir.\n * Sadece yönetici panel kullanıcıları ve uygun izinlere sahip acente kullanıcıları tarafından erişilebilir.\n *\n * @returns List of all templates with their details\n */\n async getAllTemplates(\n options?: RequestOptions,\n ): Promise<InsurUpResult<QueryTemplatesResult[]>> {\n return this.http.get<QueryTemplatesResult[]>(templates.getAll, options);\n }\n\n /**\n * Retrieves a specific template by its unique key for a particular language.\n * Returns the complete template including content and JSON schema for data validation.\n *\n * Belirli bir dil için benzersiz anahtarına göre belirli bir şablonu getirir.\n * Veri doğrulama için içerik ve JSON şeması dahil tam şablonu döndürür.\n *\n * @param key Unique identifier key of the template\n * @param languageId Language identifier for template localization\n * @returns Complete template information\n */\n async getTemplateByKey(\n key: string,\n languageId: number,\n options?: RequestOptions,\n ): Promise<InsurUpResult<GetTemplateByKeyResult>> {\n const endpoint = `${templates.getByKey.render(key)}?languageId=${languageId}`;\n return this.http.get<GetTemplateByKeyResult>(endpoint, options);\n }\n\n /**\n * Updates an existing template with new content, name, description, and localization settings.\n * Allows administrators to maintain and modify templates used throughout the insurance platform.\n *\n * Mevcut bir şablonu yeni içerik, ad, açıklama ve yerelleştirme ayarlarıyla günceller.\n * Yöneticilerin sigorta platformu boyunca kullanılan şablonları sürdürmesine ve değiştirmesine olanak tanır.\n *\n * @param request Template update request with new content and metadata\n * @returns Operation result\n */\n async updateTemplate(\n request: UpdateTemplateRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = templates.update.render(request.key);\n return this.http.putNoContent(endpoint, request, options);\n }\n\n /**\n * Deletes a template owned by the current agent user.\n * Only agent users can delete templates they own. Templates with null AgentId or different AgentId cannot be deleted.\n *\n * Mevcut acente kullanıcısına ait bir şablonu siler.\n * Sadece acente kullanıcıları kendi şablonlarını silebilir. Null AgentId'ye sahip veya farklı AgentId'ye sahip şablonlar silinemez.\n *\n * @param request Template delete request with key and language ID\n * @returns Operation result\n */\n async deleteTemplate(\n request: DeleteTemplateRequest,\n options?: RequestOptions,\n ): Promise<InsurUpResult> {\n const endpoint = `${templates.delete.render(request.key)}?languageId=${request.languageId}`;\n return this.http.deleteNoContent(endpoint, options);\n }\n}\n","/**\n * @fileoverview Default InsurUp Client - Main SDK client implementation\n * @description Main SDK client implementation\n */\n\nimport { HttpTransport } from \"./http.js\";\nimport { GraphQLTransport } from \"./graphql.js\";\nimport type { InsurUpClientOptions } from \"../core/options.js\";\n\n// Import specialized clients\nimport { InsurUpAgentClient } from \"../clients/agent.js\";\nimport { InsurUpAgentBranchClient } from \"../clients/agentBranch.js\";\nimport { InsurUpAgentRoleClient } from \"../clients/agentRole.js\";\nimport { InsurUpAgentSetupClient } from \"../clients/agentSetup.js\";\nimport { InsurUpAgentUserClient } from \"../clients/agentUser.js\";\nimport { InsurUpCustomerClient } from \"../clients/customer.js\";\nimport { InsurUpVehicleClient } from \"../clients/vehicle.js\";\nimport { InsurUpPropertyClient } from \"../clients/property.js\";\nimport { InsurUpPolicyClient } from \"../clients/policy.js\";\nimport { InsurUpCaseClient } from \"../clients/case.js\";\nimport { InsurUpWebhookClient } from \"../clients/webhook.js\";\nimport { InsurUpCoverageClient } from \"../clients/coverage.js\";\nimport { InsurUpInsuranceClient } from \"../clients/insurance.js\";\nimport { InsurUpProposalClient } from \"../clients/proposal.js\";\nimport { InsurUpFileClient } from \"../clients/file.js\";\nimport { InsurUpLanguageClient } from \"../clients/language.js\";\nimport { InsurUpTemplateClient } from \"../clients/template.js\";\n\n/**\n * Main unified client providing comprehensive access to all InsurUp platform operations.\n * Aggregates specialized client interfaces for authentication, agent management, customer operations,\n * vehicle and property insurance, coverage management, and policy administration.\n */\nexport class DefaultInsurUpClient {\n private readonly http: HttpTransport;\n private readonly graphql: GraphQLTransport;\n\n /**\n * Agent Management Client\n *\n * Provides agent management operations for handling agent profiles, insurance company connections,\n * and business relationships within the insurance ecosystem.\n */\n public readonly agents: InsurUpAgentClient;\n\n /**\n * Agent Branch Management Client\n *\n * Provides branch management operations for insurance agents, enabling the creation and administration\n * of organizational branches within agency structures.\n */\n public readonly agentBranches: InsurUpAgentBranchClient;\n\n /**\n * Agent Role Management Client\n *\n * Provides role management operations for insurance agents, enabling the creation and administration\n * of role-based access control within agency hierarchies and permission structures.\n */\n public readonly agentRoles: InsurUpAgentRoleClient;\n\n /**\n * Agent Setup Client\n *\n * Provides agent onboarding and setup operations for new insurance agents joining the InsurUp platform,\n * facilitating the complete registration and configuration process required for business operations.\n */\n public readonly agentSetup: InsurUpAgentSetupClient;\n\n /**\n * Agent User Management Client\n *\n * Provides comprehensive user management operations for insurance agency staff, enabling agencies to manage\n * their team members, permissions, and access control within the InsurUp platform ecosystem.\n */\n public readonly agentUsers: InsurUpAgentUserClient;\n\n /**\n * Customer Management Client\n *\n * Provides comprehensive customer management operations for handling customer profiles, contact information,\n * health data, communication flows, and external customer data integration.\n */\n public readonly customers: InsurUpCustomerClient;\n\n /**\n * Vehicle Management Client\n *\n * Provides comprehensive vehicle management operations for handling customer vehicles, vehicle data lookups,\n * brand and model queries, and vehicle-based insurance operations within the automotive insurance ecosystem.\n */\n public readonly vehicles: InsurUpVehicleClient;\n\n /**\n * Property Management Client\n *\n * Provides comprehensive property management operations for handling customer properties, Turkish address hierarchy queries,\n * DASK earthquake insurance lookups, and property-based insurance operations within the real estate insurance ecosystem.\n */\n public readonly properties: InsurUpPropertyClient;\n\n /**\n * Policy Management Client\n *\n * Provides comprehensive policy management operations for handling insurance policies, policy documents,\n * representative assignments, and policy administration.\n */\n public readonly policies: InsurUpPolicyClient;\n\n /**\n * Case Management Client\n *\n * Provides comprehensive case management operations for handling customer service requests, claims processing,\n * sales opportunities, and complaint resolution within the insurance workflow.\n */\n public readonly cases: InsurUpCaseClient;\n\n /**\n * Webhook Management Client\n *\n * Provides comprehensive webhook management operations for configuring event notifications, monitoring delivery status,\n * and managing external system integrations within the InsurUp platform ecosystem.\n */\n public readonly webhooks: InsurUpWebhookClient;\n\n /**\n * Coverage Management Client\n *\n * Provides coverage management operations for configuring insurance product coverages, managing coverage groups,\n * and retrieving available coverage options for different insurance branches within the InsurUp platform.\n */\n public readonly coverage: InsurUpCoverageClient;\n\n /**\n * Insurance Industry Data Client\n *\n * Provides comprehensive insurance industry data access for retrieving insurance companies, products, resource keys,\n * release notes, and financial institution information essential for platform operations and integrations.\n */\n public readonly insurance: InsurUpInsuranceClient;\n\n /**\n * Proposal Management Client\n *\n * Provides comprehensive proposal management operations for creating insurance proposals, managing proposal lifecycle,\n * document generation, product purchasing, and comparison tools within the insurance sales process.\n */\n public readonly proposals: InsurUpProposalClient;\n\n /**\n * File Management Client\n *\n * Provides file management operations for the InsurUp platform, enabling agents to upload and manage files\n * within the insurance ecosystem.\n */\n public readonly files: InsurUpFileClient;\n\n /**\n * Language Management Client\n *\n * Provides language and localization operations for retrieving available languages in the InsurUp platform.\n * Essential for multi-language support and internationalization features.\n */\n public readonly languages: InsurUpLanguageClient;\n\n /**\n * Template Management Client\n *\n * Provides template management operations for the InsurUp platform, enabling agents to retrieve and update\n * document templates, email templates, and other content templates used in insurance workflows.\n */\n public readonly templates: InsurUpTemplateClient;\n\n public readonly options: InsurUpClientOptions;\n\n constructor(options?: InsurUpClientOptions) {\n this.http = new HttpTransport(options);\n this.graphql = new GraphQLTransport(this.http);\n this.options = options || {};\n\n // Initialize all specialized clients\n this.agents = new InsurUpAgentClient(this.http);\n this.agentBranches = new InsurUpAgentBranchClient(this.http);\n this.agentRoles = new InsurUpAgentRoleClient(this.http);\n this.agentSetup = new InsurUpAgentSetupClient(this.http);\n this.agentUsers = new InsurUpAgentUserClient(this.http, this.graphql);\n this.customers = new InsurUpCustomerClient(this.http, this.graphql);\n this.vehicles = new InsurUpVehicleClient(this.http);\n this.properties = new InsurUpPropertyClient(this.http);\n this.policies = new InsurUpPolicyClient(this.http, this.graphql);\n this.cases = new InsurUpCaseClient(this.http, this.graphql);\n this.webhooks = new InsurUpWebhookClient(this.http, this.graphql);\n this.coverage = new InsurUpCoverageClient(this.http);\n this.insurance = new InsurUpInsuranceClient(this.http);\n this.proposals = new InsurUpProposalClient(this.http, this.graphql);\n this.files = new InsurUpFileClient(this.http);\n this.languages = new InsurUpLanguageClient(this.http);\n this.templates = new InsurUpTemplateClient(this.http);\n }\n}\n"],"mappings":"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","names":["InsurUpClientErrorType","InsurUpServerErrorType","InsurUpGraphQLErrorCode","import_contracts","import_contracts","import_contracts","import_contracts","import_contracts","import_contracts"]}