/// <reference types="node" />
import { BaseStore, ImmutableStoreGetter } from '../../base_store';
export declare const enum ChainStatus {
    REGISTERED = 0,
    ACTIVE = 1,
    TERMINATED = 2
}
export interface LastCertificate {
    height: number;
    timestamp: number;
    stateRoot: Buffer;
    validatorsHash: Buffer;
}
export interface LastCertificateJSON {
    height: number;
    timestamp: number;
    stateRoot: string;
    validatorsHash: string;
}
export interface ChainAccount {
    name: string;
    lastCertificate: LastCertificate;
    status: ChainStatus;
}
export declare const chainDataJSONSchema: {
    type: string;
    required: string[];
    properties: {
        name: {
            dataType: string;
            fieldNumber: number;
        };
        lastCertificate: {
            type: string;
            fieldNumber: number;
            required: string[];
            properties: {
                height: {
                    dataType: string;
                    fieldNumber: number;
                };
                timestamp: {
                    dataType: string;
                    fieldNumber: number;
                };
                stateRoot: {
                    dataType: string;
                    format: string;
                    fieldNumber: number;
                };
                validatorsHash: {
                    dataType: string;
                    format: string;
                    fieldNumber: number;
                };
            };
        };
        status: {
            dataType: string;
            fieldNumber: number;
        };
    };
};
export declare const chainDataSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        name: {
            dataType: string;
            minLength: number;
            maxLength: number;
            fieldNumber: number;
        };
        lastCertificate: {
            type: string;
            fieldNumber: number;
            required: string[];
            properties: {
                height: {
                    dataType: string;
                    fieldNumber: number;
                };
                timestamp: {
                    dataType: string;
                    fieldNumber: number;
                };
                stateRoot: {
                    dataType: string;
                    minLength: number;
                    maxLength: number;
                    fieldNumber: number;
                };
                validatorsHash: {
                    dataType: string;
                    minLength: number;
                    maxLength: number;
                    fieldNumber: number;
                };
            };
        };
        status: {
            dataType: string;
            fieldNumber: number;
        };
    };
};
export declare const allChainAccountsSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        chains: {
            type: string;
            items: {
                type: string;
                required: string[];
                properties: {
                    name: {
                        dataType: string;
                        fieldNumber: number;
                    };
                    lastCertificate: {
                        type: string;
                        fieldNumber: number;
                        required: string[];
                        properties: {
                            height: {
                                dataType: string;
                                fieldNumber: number;
                            };
                            timestamp: {
                                dataType: string;
                                fieldNumber: number;
                            };
                            stateRoot: {
                                dataType: string;
                                format: string;
                                fieldNumber: number;
                            };
                            validatorsHash: {
                                dataType: string;
                                format: string;
                                fieldNumber: number;
                            };
                        };
                    };
                    status: {
                        dataType: string;
                        fieldNumber: number;
                    };
                };
            };
        };
    };
};
export declare class ChainAccountStore extends BaseStore<ChainAccount> {
    schema: {
        $id: string;
        type: string;
        required: string[];
        properties: {
            name: {
                dataType: string;
                minLength: number;
                maxLength: number;
                fieldNumber: number;
            };
            lastCertificate: {
                type: string;
                fieldNumber: number;
                required: string[];
                properties: {
                    height: {
                        dataType: string;
                        fieldNumber: number;
                    };
                    timestamp: {
                        dataType: string;
                        fieldNumber: number;
                    };
                    stateRoot: {
                        dataType: string;
                        minLength: number;
                        maxLength: number;
                        fieldNumber: number;
                    };
                    validatorsHash: {
                        dataType: string;
                        minLength: number;
                        maxLength: number;
                        fieldNumber: number;
                    };
                };
            };
            status: {
                dataType: string;
                fieldNumber: number;
            };
        };
    };
    get storePrefix(): Buffer;
    getAllAccounts(context: ImmutableStoreGetter, startChainID: Buffer): Promise<ChainAccount[]>;
    getOrUndefined(context: ImmutableStoreGetter, key: Buffer): Promise<ChainAccount | undefined>;
}
