import type { CompileTimeMetadata, InterfaceDefinition, ObjectTypeDefinition } from "@osdk/client"; import type { AddLink, AnyEdit, CreateObject, CreateObjectForInterface, DeleteObject, DeleteObjectForInterface, InterfaceLocator, ObjectLocator, RemoveLink, UpdateObject, UpdateObjectForInterface } from "./types.js"; interface ObjectTypeDefinitionForLocator
    > extends ObjectTypeDefinition { apiName: OL["$apiName"]; } interface InterfaceDefinitionForLocator> extends InterfaceDefinition { apiName: IL["$apiName"]; } export type AddLinkSources = X extends AddLink ? ObjectLocator : never; export type AddLinkApiNames< X extends AnyEdit, SOL extends ObjectLocator > = X extends AddLink, infer A> ? A : never; export type AddLinkTargets< X extends AnyEdit, SOL extends ObjectLocator, A extends string > = X extends AddLink, A> ? (X extends AddLink ? (CompileTimeMetadata["links"][A]["multiplicity"] extends true ? Array | X["target"] : X["target"]) : never) : never; export type RemoveLinkSources = X extends RemoveLink ? ObjectLocator : never; export type RemoveLinkApiNames< X extends AnyEdit, SOL extends ObjectLocator > = X extends RemoveLink, infer L> ? L : never; export type RemoveLinkTargets< X extends AnyEdit, SOL extends ObjectLocator, A extends string > = X extends RemoveLink, A> ? (X extends RemoveLink ? (CompileTimeMetadata["links"][A]["multiplicity"] extends true ? Array | X["target"] : X["target"]) : never) : never; export type CreatableObjectOrInterfaceTypes = X extends CreateObject ? OTD : X extends CreateObjectForInterface ? ID : never; export type CreatableObjectOrInterfaceTypeProperties< X extends AnyEdit, OI extends ObjectTypeDefinition | InterfaceDefinition > = X extends CreateObject ? OTD extends OI ? X["properties"] : never : X extends CreateObjectForInterface ? ID extends OI ? X["properties"] : never : never; export type DeletableObjectOrInterfaceLocators = X extends DeleteObject ? ObjectLocator : X extends DeleteObjectForInterface ? InterfaceLocator : never; export type UpdatableObjectOrInterfaceLocators = X extends UpdateObject ? ObjectLocator : X extends UpdateObjectForInterface ? InterfaceLocator : never; export type UpdatableObjectOrInterfaceLocatorProperties< X extends AnyEdit, OL extends ObjectLocator > = X extends UpdateObject> ? X["properties"] : X extends UpdateObjectForInterface> ? X["properties"] : never; export interface EditBatch { link: < SOL extends AddLinkSources, A extends AddLinkApiNames >(source: SOL, apiName: A, target: AddLinkTargets) => void; unlink: < SOL extends RemoveLinkSources, A extends RemoveLinkApiNames >(source: SOL, apiName: A, target: RemoveLinkTargets) => void; create: >(objectOrInterfaceType: OI, properties: CreatableObjectOrInterfaceTypeProperties) => void; delete:
      >(obj: OL) => void; update:
        >(obj: OL, properties: UpdatableObjectOrInterfaceLocatorProperties) => void; getEdits: () => X[]; } export {};