/// <reference types="node" />
import { BaseStore, ImmutableStoreGetter, StoreGetter } from '../../base_store';
import { TokenID } from '../types';
export interface UserStoreData {
    availableBalance: bigint;
    lockedBalances: {
        module: string;
        amount: bigint;
    }[];
}
export declare const userStoreSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        availableBalance: {
            dataType: string;
            fieldNumber: number;
        };
        lockedBalances: {
            type: string;
            fieldNumber: number;
            items: {
                type: string;
                required: string[];
                properties: {
                    module: {
                        dataType: string;
                        fieldNumber: number;
                        minLength: number;
                        maxLength: number;
                    };
                    amount: {
                        dataType: string;
                        fieldNumber: number;
                    };
                };
            };
        };
    };
};
export declare class UserStore extends BaseStore<UserStoreData> {
    schema: {
        $id: string;
        type: string;
        required: string[];
        properties: {
            availableBalance: {
                dataType: string;
                fieldNumber: number;
            };
            lockedBalances: {
                type: string;
                fieldNumber: number;
                items: {
                    type: string;
                    required: string[];
                    properties: {
                        module: {
                            dataType: string;
                            fieldNumber: number;
                            minLength: number;
                            maxLength: number;
                        };
                        amount: {
                            dataType: string;
                            fieldNumber: number;
                        };
                    };
                };
            };
        };
    };
    accountExist(context: ImmutableStoreGetter, address: Buffer): Promise<boolean>;
    createDefaultAccount(context: StoreGetter, address: Buffer, tokenID: Buffer): Promise<void>;
    addAvailableBalanceWithCreate(context: StoreGetter, address: Buffer, tokenID: Buffer, amount: bigint): Promise<void>;
    getKey(address: Buffer, tokenID: TokenID): Buffer;
    save(context: StoreGetter, address: Buffer, tokenID: Buffer, data: UserStoreData): Promise<void>;
    addAvailableBalance(context: StoreGetter, address: Buffer, tokenID: Buffer, amount: bigint): Promise<void>;
}
