package KiokuDB::Role::API;
BEGIN {
  $KiokuDB::Role::API::AUTHORITY = 'cpan:NUFFIN';
}
$KiokuDB::Role::API::VERSION = '0.57';
use Moose::Role;
# ABSTRACT: Role for KiokuDB api (used to setup delegations).

use namespace::clean -except => 'meta';

requires qw(
    new_scope
    txn_do
    scoped_txn

    lookup

    exists

    store store_nonroot

    insert insert_nonroot
    update
    deep_update

    delete

    is_root

    set_root
    unset_root

    search

    all_objects
    root_set

    grep
    scan

    clear_live_objects

    new_scope

    object_to_id
    objects_to_ids

    id_to_object
    ids_to_objects

    live_objects

    directory
);

__PACKAGE__

__END__

=pod

=encoding UTF-8

=head1 NAME

KiokuDB::Role::API - Role for KiokuDB api (used to setup delegations).

=head1 VERSION

version 0.57

=head1 SYNOPSIS

    has directory => (
        isa => "KiokuDB",
        handles => "KiokuDB::Role::API",
    );

=head1 DESCRIPTION

This role provides C<requires> declarations for the runtime methods of
L<KiokuDB>. This is useful for setting up delegations.

This is used in e.g. L<KiokuX::User>.

=head1 METHODS

=over 4

=item new_scope

=item txn_do

=item lookup

=item exists

=item store

=item insert

=item update

=item deep_update

=item delete

=item is_root

=item set_root

=item unset_root

=item search

=item all_objects

=item root_set

=item grep

=item scan

=item clear_live_objects

=item new_scope

=item object_to_id

=item objects_to_ids

=item id_to_object

=item ids_to_objects

=item live_objects

=item directory

The C<directory> method should be used to fetch the actual L<KiokuDB> delegate.
This will work no matter how deeply it is nested.

=back

=head1 AUTHOR

Yuval Kogman <nothingmuch@woobling.org>

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by Yuval Kogman, Infinity Interactive.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut