/// <reference types="node" />
import { EventJSON, JSONObject } from '../../types';
import { GeneratorKeys } from './types';
export declare const transactionIdsSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        transactionIds: {
            type: string;
            fieldNumber: number;
            minItems: number;
            maxItems: number;
            items: {
                dataType: string;
            };
        };
    };
};
export interface SetStatusRequest {
    address: string;
    height: number;
    maxHeightPrevoted: number;
    maxHeightGenerated: number;
}
export declare const setStatusRequestSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        address: {
            type: string;
            format: string;
        };
        height: {
            type: string;
            minimum: number;
        };
        maxHeightGenerated: {
            type: string;
            minimum: number;
        };
        maxHeightPrevoted: {
            type: string;
            minimum: number;
        };
    };
};
export interface UpdateStatusRequest {
    address: string;
    enable: boolean;
    password: string;
    height: number;
    maxHeightPrevoted: number;
    maxHeightGenerated: number;
}
export interface UpdateStatusResponse {
    address: string;
    enabled: boolean;
}
export interface GetStatusResponse {
    status: {
        address: string;
        height: number;
        maxHeightPrevoted: number;
        maxHeightGenerated: number;
        blsKey: string;
        generatorKey: string;
        enabled: boolean;
    }[];
}
export declare const updateStatusRequestSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        address: {
            type: string;
            format: string;
        };
        password: {
            type: string;
        };
        enable: {
            type: string;
        };
        height: {
            type: string;
        };
        maxHeightGenerated: {
            type: string;
        };
        maxHeightPrevoted: {
            type: string;
        };
    };
};
export interface EstimateSafeStatusRequest {
    timeShutdown: number;
}
export declare const estimateSafeStatusRequestSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        timeShutdown: {
            type: string;
        };
    };
};
export interface EstimateSafeStatusResponse {
    height: number;
    maxHeightPrevoted: number;
    maxHeightGenerated: number;
}
export interface PostTransactionRequest {
    transaction: string;
}
export interface PostTransactionResponse {
    transactionId: string;
}
export declare const postTransactionRequestSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        transaction: {
            type: string;
            format: string;
        };
    };
};
export declare const getTransactionRequestSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        transactionIds: {
            type: string;
            fieldNumber: number;
            minItems: number;
            maxItems: number;
            items: {
                dataType: string;
            };
        };
    };
};
export interface GetTransactionRequest {
    transactionIds: Buffer[];
}
export declare const getTransactionsResponseSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        transactions: {
            type: string;
            fieldNumber: number;
            items: {
                dataType: string;
            };
        };
    };
};
export interface GetTransactionResponse {
    transactions: Buffer[];
}
export declare const postTransactionsAnnouncementSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        transactionIds: {
            type: string;
            fieldNumber: number;
            minItems: number;
            maxItems: number;
            items: {
                dataType: string;
            };
        };
    };
};
export interface PostTransactionsAnnouncement {
    transactionIds: Buffer[];
}
export interface GeneratedInfo {
    height: number;
    maxHeightPrevoted: number;
    maxHeightGenerated: number;
}
export declare const previouslyGeneratedInfoSchema: {
    title: string;
    $id: string;
    type: string;
    required: string[];
    properties: {
        height: {
            dataType: string;
            fieldNumber: number;
        };
        maxHeightPrevoted: {
            dataType: string;
            fieldNumber: number;
        };
        maxHeightGenerated: {
            dataType: string;
            fieldNumber: number;
        };
    };
};
export interface DryRunTransactionRequest {
    transaction: string;
    skipVerify: boolean;
    strict: boolean;
}
export interface DryRunTransactionResponse {
    result: number;
    events: EventJSON[];
    errorMessage?: string;
}
export declare const dryRunTransactionRequestSchema: {
    $id: string;
    title: string;
    type: string;
    required: string[];
    properties: {
        transaction: {
            type: string;
            format: string;
        };
        skipVerify: {
            type: string;
            default: boolean;
        };
        strict: {
            type: string;
            default: boolean;
        };
    };
};
export declare const generatorKeysSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        type: {
            dataType: string;
            fieldNumber: number;
        };
        data: {
            dataType: string;
            fieldNumber: number;
        };
    };
};
export declare const plainGeneratorKeysSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        generatorKey: {
            dataType: string;
            fieldNumber: number;
        };
        generatorPrivateKey: {
            dataType: string;
            fieldNumber: number;
        };
        blsKey: {
            dataType: string;
            fieldNumber: number;
        };
        blsPrivateKey: {
            dataType: string;
            fieldNumber: number;
        };
    };
};
export declare const encryptedMessageSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        version: {
            dataType: string;
            fieldNumber: number;
        };
        ciphertext: {
            dataType: string;
            fieldNumber: number;
        };
        kdf: {
            dataType: string;
            fieldNumber: number;
        };
        kdfparams: {
            type: string;
            fieldNumber: number;
            required: string[];
            properties: {
                parallelism: {
                    dataType: string;
                    fieldNumber: number;
                };
                iterations: {
                    dataType: string;
                    fieldNumber: number;
                };
                memorySize: {
                    dataType: string;
                    fieldNumber: number;
                };
                salt: {
                    dataType: string;
                    fieldNumber: number;
                };
            };
        };
        cipher: {
            dataType: string;
            fieldNumber: number;
        };
        cipherparams: {
            type: string;
            fieldNumber: number;
            required: string[];
            properties: {
                iv: {
                    dataType: string;
                    fieldNumber: number;
                };
                tag: {
                    dataType: string;
                    fieldNumber: number;
                };
            };
        };
    };
};
export type SetKeysRequest = JSONObject<GeneratorKeys> & {
    address: string;
};
export declare const setKeysRequestSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        address: {
            type: string;
            format: string;
        };
    };
    oneOf: ({
        type: string;
        properties: {
            type: {
                const: string;
            };
            data: {
                type: string;
                required: string[];
                properties: {
                    generatorKey: {
                        type: string;
                        format: string;
                        minLength: number;
                        maxLength: number;
                    };
                    generatorPrivateKey: {
                        type: string;
                        format: string;
                        minLength: number;
                        maxLength: number;
                    };
                    blsKey: {
                        type: string;
                        format: string;
                        minLength: number;
                        maxLength: number;
                    };
                    blsPrivateKey: {
                        type: string;
                        format: string;
                        minLength: number;
                        maxLength: number;
                    };
                };
            };
        };
    } | {
        type: string;
        properties: {
            type: {
                const: string;
            };
            data: {
                type: string;
                required: string[];
                properties: {
                    version: {
                        type: string;
                    };
                    ciphertext: {
                        type: string;
                        format: string;
                    };
                    kdf: {
                        type: string;
                        enum: string[];
                    };
                    kdfparams: {
                        type: string;
                        properties: {
                            parallelism: {
                                type: string;
                            };
                            iterations: {
                                type: string;
                            };
                            memoriSize: {
                                type: string;
                            };
                            salt: {
                                type: string;
                                format: string;
                            };
                        };
                    };
                    cipher: {
                        type: string;
                        enum: string[];
                    };
                    cipherparams: {
                        type: string;
                        properties: {
                            iv: {
                                type: string;
                                format: string;
                            };
                            tag: {
                                type: string;
                                format: string;
                            };
                        };
                    };
                };
            };
        };
    })[];
};
export type Address = {
    address: string;
};
export declare const hasKeysRequestSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        address: {
            type: string;
            format: string;
        };
    };
};
export declare const getTransactionsFromPoolRequestSchema: {
    $id: string;
    type: string;
    properties: {
        address: {
            type: string;
            format: string;
        };
    };
};
export declare const keysFileSchema: {
    $id: string;
    type: string;
    required: string[];
    properties: {
        keys: {
            type: string;
            items: {
                type: string;
                required: string[];
                properties: {
                    address: {
                        type: string;
                        format: string;
                    };
                    plain: {
                        type: string;
                        required: string[];
                        properties: {
                            generatorKey: {
                                type: string;
                                format: string;
                                minLength: number;
                                maxLength: number;
                            };
                            generatorPrivateKey: {
                                type: string;
                                format: string;
                                minLength: number;
                                maxLength: number;
                            };
                            blsKey: {
                                type: string;
                                format: string;
                                minLength: number;
                                maxLength: number;
                            };
                            blsPrivateKey: {
                                type: string;
                                format: string;
                                minLength: number;
                                maxLength: number;
                            };
                        };
                    };
                    encrypted: {
                        required: never[];
                        type: string;
                        properties: {
                            version: {
                                type: string;
                            };
                            ciphertext: {
                                type: string;
                                format: string;
                            };
                            kdf: {
                                type: string;
                                enum: string[];
                            };
                            kdfparams: {
                                type: string;
                                properties: {
                                    parallelism: {
                                        type: string;
                                    };
                                    iterations: {
                                        type: string;
                                    };
                                    memoriSize: {
                                        type: string;
                                    };
                                    salt: {
                                        type: string;
                                        format: string;
                                    };
                                };
                            };
                            cipher: {
                                type: string;
                                enum: string[];
                            };
                            cipherparams: {
                                type: string;
                                properties: {
                                    iv: {
                                        type: string;
                                        format: string;
                                    };
                                    tag: {
                                        type: string;
                                        format: string;
                                    };
                                };
                            };
                        };
                    };
                };
            };
        };
    };
};
