/**
 *   Wechaty Chatbot SDK - https://github.com/wechaty/wechaty
 *
 *   @copyright 2016 Huan LI (李卓桓) <https://github.com/huan>, and
 *                   Wechaty Contributors <https://github.com/wechaty>.
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agGroupreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific languagGroupe governing permissions and
 *   limitations under the License.
 *
 */
import type * as PUPPET from '@juzi/wechaty-puppet';
import type { TagGroupQueryFilter } from '@juzi/wechaty-puppet/dist/esm/src/schemas/tag.js';
import type { Constructor } from 'clone-class';
import type { TagInterface } from './tag.js';
declare const MixinBase: ((abstract new (...args: any[]) => {
    readonly wechaty: import("../wechaty/wechaty-impl.js").WechatyInterface;
}) & {
    readonly wechaty: import("../wechaty/wechaty-impl.js").WechatyInterface;
}) & ((abstract new (...args: any[]) => {}) & {
    _pool?: Map<string, TagGroupImplInterface> | undefined;
    readonly pool: Map<string, TagGroupImplInterface>;
    load<L extends import("clone-class/dist/esm/src/constructor.js").ClassInterface<{}> & {
        new (...args: any[]): TagGroupImplInterface;
        prototype: TagGroupImplInterface;
    } & import("../user-mixins/poolify.js").PoolifyMixin<TagGroupImplInterface>>(this: L, id: string): TagGroupImplInterface;
}) & ObjectConstructor;
declare class TagGroupMixin extends MixinBase {
    readonly id: string;
    /**
     *
     * Instance properties
     * @ignore
     *
     */
    payload?: PUPPET.payloads.TagGroup;
    /**
     * @hideconstructor
     */
    constructor(id: string);
    name(): string;
    static list(): Promise<TagGroupInterface[]>;
    static createTagGroup(name: string): Promise<TagGroupInterface | void>;
    static deleteTagGroup(tagGroup: TagGroupInterface): Promise<TagGroupInterface | void>;
    tags(): Promise<TagInterface[]>;
    static find(filter: TagGroupQueryFilter): Promise<TagGroupInterface | undefined>;
    /**
     * Force reload data for TagGroup, Sync data from low-level API again.
     *
     * @returns {Promise<this>}
     * @example
     * await tagGroup.sync()
     */
    sync(): Promise<void>;
    /**
     * @ignore
     */
    isReady(): boolean;
    /**
     * `ready()` is For FrameWork ONLY!
     *
     * Please not to use `ready()` at the user land.
     * If you want to sync data, use `sync()` instead.
     *
     * @ignore
     */
    ready(forceSync?: boolean): Promise<void>;
    toString(): string;
}
declare const TagGroupImplBase_base: {
    new (...args: any[]): {};
    valid: (o: any) => o is TagGroupImplInterface;
    validInstance: (target: any) => target is TagGroupMixin;
    validInterface: (target: any) => target is TagGroupImplInterface;
} & typeof TagGroupMixin;
declare class TagGroupImplBase extends TagGroupImplBase_base {
}
interface TagGroupImplInterface extends TagGroupImplBase {
}
declare type TagGroupProtectedProperty = 'ready';
declare type TagGroupInterface = Omit<TagGroupImplInterface, TagGroupProtectedProperty>;
declare const TagGroupImpl_base: {
    new (...args: any[]): {};
    valid: (o: any) => o is TagGroupInterface;
    validInstance: (target: any) => target is TagGroupImplBase;
    validInterface: (target: any) => target is TagGroupInterface;
} & typeof TagGroupImplBase;
declare class TagGroupImpl extends TagGroupImpl_base {
}
declare type TagGroupConstructor = Constructor<TagGroupImplInterface, Omit<typeof TagGroupImpl, 'load'>>;
export type { TagGroupConstructor, TagGroupProtectedProperty, TagGroupInterface, };
export { TagGroupImpl, };
//# sourceMappingURL=tag-group.d.ts.map