export interface Tag {
    /** The key of the tag. */
    Key?: string;
    /** The value of the tag. */
    Value?: string;
}
export interface CompleteSnapshotInput {
    /** The number of blocks that were written to the snapshot. */
    ChangedBlocksCount: number;
    /** The ID of the snapshot. */
    SnapshotId: string;
    /** An aggregated Base-64 SHA256 checksum based on the checksums of each written block. To generate the aggregated checksum using the linear aggregation method, arrange the checksums for each written bloc */
    Checksum?: string;
    /** The aggregation method used to generate the checksum. Currently, the only supported aggregation method is LINEAR. */
    ChecksumAggregationMethod?: 'LINEAR';
    /** The algorithm used to generate the checksum. Currently, the only supported algorithm is SHA256. */
    ChecksumAlgorithm?: 'SHA256';
}
export interface GetSnapshotBlockInput {
    /** The block index of the block in which to read the data. A block index is a logical index in units of 512 KiB blocks. To identify the block index, divide the logical offset of the data in the logical v */
    BlockIndex: number;
    /** The block token of the block from which to get data. You can obtain the BlockToken by running the ListChangedBlocks or ListSnapshotBlocks operations. */
    BlockToken: string;
    /** The ID of the snapshot containing the block from which to get data. If the specified snapshot is encrypted, you must have permission to use the KMS key that was used to encrypt the snapshot. For more  */
    SnapshotId: string;
}
export interface ListChangedBlocksInput {
    /** The ID of the second snapshot to use for the comparison. The SecondSnapshotId parameter must be specified with a FirstSnapshotID parameter; otherwise, an error occurs. */
    SecondSnapshotId: string;
    /** The ID of the first snapshot to use for the comparison. The FirstSnapshotID parameter must be specified with a SecondSnapshotId parameter; otherwise, an error occurs. */
    FirstSnapshotId?: string;
    /** The maximum number of blocks to be returned by the request. Even if additional blocks can be retrieved from the snapshot, the request can return less blocks than MaxResults or an empty array of blocks */
    MaxResults?: number;
    /** The token to request the next page of results. If you specify NextToken, then StartingBlockIndex is ignored. */
    NextToken?: string;
    /** The block index from which the comparison should start. The list in the response will start from this block index or the next valid block index in the snapshots. If you specify NextToken, then Startin */
    StartingBlockIndex?: number;
}
export interface ListSnapshotBlocksInput {
    /** The ID of the snapshot from which to get block indexes and block tokens. */
    SnapshotId: string;
    /** The maximum number of blocks to be returned by the request. Even if additional blocks can be retrieved from the snapshot, the request can return less blocks than MaxResults or an empty array of blocks */
    MaxResults?: number;
    /** The token to request the next page of results. If you specify NextToken, then StartingBlockIndex is ignored. */
    NextToken?: string;
    /** The block index from which the list should start. The list in the response will start from this block index or the next valid block index in the snapshot. If you specify NextToken, then StartingBlockI */
    StartingBlockIndex?: number;
}
export interface PutSnapshotBlockInput {
    /** The data to write to the block. The block data is not signed as part of the Signature Version 4 signing process. As a result, you must generate and provide a Base64-encoded SHA256 checksum for the blo */
    BlockData: string;
    /** The block index of the block in which to write the data. A block index is a logical index in units of 512 KiB blocks. To identify the block index, divide the logical offset of the data in the logical  */
    BlockIndex: number;
    /** A Base64-encoded SHA256 checksum of the data. Only SHA256 checksums are supported. */
    Checksum: string;
    /** The algorithm used to generate the checksum. Currently, the only supported algorithm is SHA256. */
    ChecksumAlgorithm: 'SHA256';
    /** The size of the data to write to the block, in bytes. Currently, the only supported size is 524288 bytes. Valid values: 524288 */
    DataLength: number;
    /** The ID of the snapshot. If the specified snapshot is encrypted, you must have permission to use the KMS key that was used to encrypt the snapshot. For more information, see Using encryption in the Ama */
    SnapshotId: string;
    /** The progress of the write process, as a percentage. */
    Progress?: number;
}
export interface StartSnapshotInput {
    /** The size of the volume, in GiB. The maximum size is 65536 GiB (64 TiB). */
    VolumeSize: number;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Idempotency ensures that an API request completes only once. With an idempotent request, if the original  */
    ClientToken?: string;
    /** A description for the snapshot. */
    Description?: string;
    /** Indicates whether to encrypt the snapshot. You can't specify Encrypted and ParentSnapshotId in the same request. If you specify both parameters, the request fails with ValidationException. The encrypt */
    Encrypted?: boolean;
    /** The Amazon Resource Name (ARN) of the Key Management Service (KMS) key to be used to encrypt the snapshot. The encryption status of the snapshot depends on the values that you specify for Encrypted, K */
    KmsKeyArn?: string;
    /** The ID of the parent snapshot. If there is no parent snapshot, or if you are creating the first snapshot for an on-premises volume, omit this parameter. You can't specify ParentSnapshotId and Encrypte */
    ParentSnapshotId?: string;
    /** The tags to apply to the snapshot. */
    Tags?: Tag[];
    /** The amount of time (in minutes) after which the snapshot is automatically cancelled if: No blocks are written to the snapshot. The snapshot is not completed after writing the last block of data. If no */
    Timeout?: number;
}
/** EBS service binding for Step Functions SDK integrations. */
export declare class EBS {
    constructor();
    completeSnapshot<T>(params: CompleteSnapshotInput): Promise<T>;
    getSnapshotBlock<T>(params: GetSnapshotBlockInput): Promise<T>;
    listChangedBlocks<T>(params: ListChangedBlocksInput): Promise<T>;
    listSnapshotBlocks<T>(params: ListSnapshotBlocksInput): Promise<T>;
    putSnapshotBlock<T>(params: PutSnapshotBlockInput): Promise<T>;
    startSnapshot<T>(params: StartSnapshotInput): Promise<T>;
}
//# sourceMappingURL=EBS.d.ts.map