KDB * kdbOpen(Key *errorKey);
int kdbClose(KDB *handle, Key *errorKey);
int kdbGet(KDB *handle, KeySet *returned, Key *parentKey);
int kdbSet(KDB *handle, KeySet *returned, Key *parentKey);
int kdbEnsure (KDB * handle, KeySet * contract, Key * parentKey);
Key *keyNew(const char *keyname, ...);
Key *keyVNew(const char *keyname, va_list ap);
Key *keyDup(const Key *source);
int keyCopy(Key *dest, const Key *source);
int keyClear(Key *key);
int keyDel(Key *key);
ssize_t keyIncRef(Key *key);
ssize_t keyDecRef(Key *key);
ssize_t keyGetRef(const Key *key);
int keyRewindMeta(Key *key);
const Key *keyNextMeta(Key *key);
const Key *keyCurrentMeta(const Key *key);
int keyCopyMeta(Key *dest, const Key *source, const char *metaName);
int keyCopyAllMeta(Key *dest, const Key *source);
const Key *keyGetMeta(const Key *key, const char* metaName);
ssize_t    keySetMeta(Key *key, const char* metaName,const char *newMetaString);
KeySet * keyMeta (Key * key);
int keyCmp(const Key *k1, const Key *k2);
int keyNeedSync(const Key *key);
int keyIsBelow(const Key *key, const Key *check);
int keyIsBelowOrSame(const Key *key, const Key *check);
int keyIsDirectlyBelow(const Key *key, const Key *check);
int keyIsBinary(const Key *key);
int keyIsString(const Key *key);
const char *keyName(const Key *key);
ssize_t keyGetNameSize(const Key *key);
ssize_t keyGetName(const Key *key, char *returnedName, size_t maxSize);
ssize_t keySetName(Key *key, const char *newname);
ssize_t keyAddName(Key *key, const char *addName);
const void *keyUnescapedName(const Key *key);
ssize_t keyGetUnescapedNameSize(const Key *key);
const char *keyBaseName(const Key *key);
ssize_t keyGetBaseNameSize(const Key *key);
ssize_t keyGetBaseName(const Key *key, char *returned, size_t maxSize);
ssize_t keySetBaseName(Key *key,const char *baseName);
ssize_t keyAddBaseName(Key *key,const char *baseName);
elektraNamespace keyGetNamespace(Key const* key);
ssize_t keySetNamespace(Key * key, elektraNamespace ns);
const void *keyValue(const Key *key);
ssize_t keyGetValueSize(const Key *key);
const char *keyString(const Key *key);
ssize_t keyGetString(const Key *key, char *returnedString, size_t maxSize);
ssize_t keySetString(Key *key, const char *newString);
ssize_t keyGetBinary(const Key *key, void *returnedBinary, size_t maxSize);
ssize_t keySetBinary(Key *key, const void *newBinary, size_t dataSize);
int keyLock (Key * key, elektraLockFlags what);
int keyIsLocked (const Key * key, elektraLockFlags what);
KeySet *ksNew(size_t alloc, ...) ELEKTRA_SENTINEL;
KeySet *ksVNew(size_t alloc, va_list ap);
KeySet *ksDup(const KeySet * source);
int ksCopy(KeySet *dest, const KeySet *source);
int ksClear(KeySet *ks);
int ksDel(KeySet *ks);
int ksNeedSync(const KeySet *ks);
ssize_t ksGetSize(const KeySet *ks);
ssize_t ksAppendKey(KeySet *ks, Key *toAppend);
ssize_t ksAppend(KeySet *ks, const KeySet *toAppend);
KeySet *ksCut(KeySet *ks, const Key *cutpoint);
Key *ksPop(KeySet *ks);
int ksRewind(KeySet *ks);
Key *ksNext(KeySet *ks);
Key *ksCurrent(const KeySet *ks);
Key *ksHead(const KeySet *ks);
Key *ksTail(const KeySet *ks);
elektraCursor ksGetCursor(const KeySet *ks);
int ksSetCursor(KeySet *ks, elektraCursor cursor);
Key *ksAtCursor(KeySet *ks, elektraCursor cursor);
Key *ksLookup(KeySet *ks, Key *k, elektraLookupFlags options);
Key *ksLookupByName(KeySet *ks, const char *name, elektraLookupFlags options);
