continue_migrate: TxDescriptor<{
    limits: {
        item: number;
        size: number;
    };
    real_size_upper: number;
    witness_task: {
        child_items: number;
        progress_child: Enum<{
            Complete: undefined;
            LastKey: Binary;
            ToStart: undefined;
        }>;
        progress_top: Enum<{
            Complete: undefined;
            LastKey: Binary;
            ToStart: undefined;
        }>;
        size: number;
        top_items: number;
    };
}>

Continue the migration for the given limits.

The dispatch origin of this call can be any signed account.

This transaction has NO MONETARY INCENTIVES. calling it will not reward anyone. Albeit, Upon successful execution, the transaction fee is returned.

The (potentially over-estimated) of the byte length of all the data read must be provided for up-front fee-payment and weighing. In essence, the caller is guaranteeing that executing the current MigrationTask with the given limits will not exceed real_size_upper bytes of read data.

The witness_task is merely a helper to prevent the caller from being slashed or generally trigger a migration that they do not intend. This parameter is just a message from caller, saying that they believed witness_task was the last state of the migration, and they only wish for their transaction to do anything, if this assumption holds. In case witness_task does not match, the transaction fails.

Based on the documentation of [MigrationTask::migrate_until_exhaustion], the recommended way of doing this is to pass a limit that only bounds count, as the size limit can always be overwritten.